Создание ссылки на документ из другой формы (веб) - PullRequest
0 голосов
/ 07 января 2019

Я пытаюсь сгенерировать ссылки на документы из другой формы, используя созданную мной кнопку (ниже). После нажатия кнопки агент должен запуститься, и должны быть сгенерированы ссылки на документы, а текущая форма все еще должна находиться в режиме редактирования (веб).

Вот вопросы: 1. Я не могу сгенерировать ссылки на документы из другой формы через представление. Ключом является PeopleID, в текущем документе есть вычисляемое поле, которое должно соответствовать другой форме. 2. Когда я нажимаю на кнопку, он перенаправляет меня на страницу агента и говорит, что агент завершил работу (не дословно). Он все еще должен быть в текущем документе (на текущей странице, только для ссылки на документ).

Ниже приведен код, который я использую в форме (в сквозном режиме) для кнопки и функции JS для запуска агента.

 <input type="button" value="Generate Link" onclick="javascript:runAgent();">
 <script language="JavaScript">
 function runAgent() {
   var path = document.forms[0].BaseLink.value; // BaseLink is the prefix url.
   var completeUrl = path + '(GenerateDoc)?OpenAgent&UNID=' + document.forms[0].UniqueID.value;
 self.location.href = completeUrl;
 }
 </script>

После этого у меня есть расширенное текстовое поле с именем «DocumentLink», вычисленное.

Код агента здесь:

 Dim session As New NotesSession
 Dim db as NotesDatabase
 Dim curDoc as NotesDocument
 Dim difDoc as NotesDocument
 Dim view as NotesView
 Dim rtitem as NotesRichTextItem
 Dim peopleID as String

 Set db = session.currentDatabase

 thisDocumentID = Right$(session.DocumentContext.query_string(0),32)

 Set curDoc = db.GetDocumentByUNID(thisDocumentID) //For some reason I am not getting anything here.

 Set view = db.GetView("MyView")

 peopleID = curDoc.PeopleID(0)

 Set difDoc = view.GetDOcumentByKey(peopleID,true)

 If Not difDoc Is Nothing Then

 Set rtitem = curDOc.GetFirstItem("DocumentLink")

 rtitem.values = ""

 Call rtitem.AppendDocLink(difDoc,"Link to other form")

 Call curDoc.Save(True,False)

 End If

Ценю вашу помощь.

1 Ответ

0 голосов
/ 08 января 2019

Есть несколько проблем с тем, что вы делаете.

Первый: строка self.location.href = completeUrl; в Javascript перенаправит браузер на агент, который не имеет отношения к выбранному или открытому документу. Альтернативой этому подходу будет использование методов AJAX из jQuery или другой среды для асинхронной работы вашего агента. Если вы не сохранили текущий документ, тогда в строке запроса может не быть UNID, если вы используете текущий подход.

Второе: вы должны указать PeopleId в строке запроса, чтобы агент мог его прочитать. Затем агент должен проанализировать Query_String_Decoded, чтобы получить два элемента UNID и PeopleId.

В-третьих: ваш агент не генерирует никаких выходных данных. Вы должны использовать операторы PRINT в LotusSctipt для создания обратной связи. Вы также можете создавать теги JavaScript и призывы к вызовам для перенаправления обратно на исходную страницу / документ.

...