首页 > 解决方案 > 生成来自另一个表单(Web)的文档链接

问题描述

我正在尝试使用我创建的按钮(在下面通过)从另一个表单生成文档链接。单击按钮后,必须运行代理并生成文档链接,并且当前表单仍应处于编辑模式(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

感谢你的帮助。

标签: lotus-noteslotus-dominolotusscript

解决方案


你正在做的事情有几个问题。

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

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

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


推荐阅读