0

我有一个使用普通旧表单的 Lotus Domino Web 应用程序。数据库已经有一些文档,我想克隆其中一个文档。所以我想我可以像这样发出一个 URL 请求:

/database.nsf/viewName?clone=12345678

此 URL 应打开表单并使用 ID 为 12345678 的文档中的字段预填充所有表单字段。然后用户应该能够编辑所有字段。

  • 在什么时候我可以拦截表单创建?
  • 如何访问新创建的存储表单值的文档?
  • 我可以在 LotusScript 中完成所有这些操作,还是必须使用公式语言?
4

2 回答 2

2

只需使用代理(触发器:无)。URL 类似于:/database.nsf/YourAgentname?OpenAgent&clone=12345678

在代理中,您可以获得如下参数:

Dim ses as New NotesSession
Dim docParam as NotesDocument
Dim strQueryString as String

'- Get the parameter- document
Set docParam = ses.DocumentContext

'- get the querystring
strQueryString = docParam.getitemValue( "Query_String" )(0)

'- querystring will be OpenAgent&clone=12345678
'- here you can extract the id from the querystring
....

'- then you get the document (if 12345678 is the noteid e.g by db.GetDocumentByID( ) 
'- or if it is your own key by NotesView.GetDocumentbyKey()
Set docOrigin = ....

'- Now create a new doc 
Set docClone = New NotesDocument( db )
'- Fill the fields
Call docClone.ReplaceItemValue( "Field1" , docOrigin.GetItemValue( "Field1" ) )
'- Or all at once
Call docOrigin.CopyAllItems( docClone )

'- Here is the trick: Redirect to the new document using the agent output:
Print "[/" & db.HttpURL & "/_/" & docClone.Universalid & "?EditDocument" & "]"

括号使浏览器直接重定向到该页面...

这段代码只是从“内存”中编写的,可能包含拼写错误/逻辑错误,但它应该是一个很好的起点......

于 2013-10-24T08:25:53.517 回答
0

用于?OpenForm&ParenUNID=<unid>预填充文档中的值<unid>

于 2013-10-23T17:07:31.290 回答