生成来自另一种形式的文档链接(Web)

时间:2019-01-07 15:32:30

标签: lotus-notes lotus-domino lotusscript

我正在尝试使用我创建的按钮(通过下面的内容)从另一种表单生成文档链接。单击该按钮后,必须运行代理并生成文档链接,并且当前表单仍应处于编辑模式(Web)。

以下是问题: 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 :(得分:1)

您的工作有几个问题。

首先:Javascript中的self.location.href = completeUrl;行会将浏览器重定向到与当前所选或打开的文档没有任何关系的代理。这种方法的替代方法是使用jQuery或其他框架中的AJAX技术来异步运行您的代理。如果您尚未保存当前文档,则使用当前方法在查询字符串上可能没有UNID。

第二:您还应该将PeopleId放在查询字符串上,以便代理可以读取它。然后,代理应解析Query_String_Decoded以获取两个元素UNID和PeopleId。

第三:您的代理未生成任何输出。您应该在LotusSctipt中使用PRINT语句来创建一些反馈。您还可以创建JavaScript标记和调用以重定向回原始页面/文档。