在Web表单中复制Domino文档

时间:2013-10-23 16:27:39

标签: lotus-domino html-form

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

/database.nsf/viewName?clone=12345678

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

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

2 个答案:

答案 0 :(得分: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" & "]"

The Brackets使浏览器直接重定向到该页面......

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

答案 1 :(得分:0)

使用?OpenForm&ParenUNID=<unid>预填充来自<unid>的文档中的值。