NotesDocument 打开两次

NotesDocument opens twice

我有一个使用 2 个服务器和 2 个数据库的应用程序。 服务器 1 - 主应用程序 服务器 2 - 日历

在主应用程序中启动文档时,我有一个 link 到日历条目。这将打开日历服务器上的日历条目。在主应用程序中启动文档的日历条目中有一个 link。

此操作是使用 notesuiworkspace.editDocument 函数执行的。

我遇到的问题是,在我上面的场景中,我在应用程序中打开了主文档(1 个文档)。然后单击按钮启动日历条目(我现在打开了 2 个文档,主应用程序中的文档和相应的日历条目)。如果我然后单击打开主文档按钮,它会打开主文档的另一个副本。如果用户不知道,他们就会导致保存冲突。

Notes 的多个版本都出现过这种情况,目前是 10。

来自主应用程序服务器 1 文档的用于打开日历条目的代码:

Set uidoc = ws.CurrentDocument
Set doc = Srv1.GetDocumentByUNID(uidoc.FieldGetText("CalenderUNID")
If Not (doc Is Nothing) Then
  Set uidoc = ws.EditDocument(True, doc)
End If      

Server1 上从日历条目到主文档的代码

sID = uidoc.FieldGetText("MainUNID")
Set doc = Srv1.GetDocumentByUNID(sID)
If Not (doc Is Nothing) Then
  Call uidoc.Close(True)
  Set uidoc = ws.EditDocument(True, doc)
End If

请检查 NotesUIWorkspace 中 "EditDocument" 的 documentation

Set notesUIDocument = notesUIWorkspace .EditDocument( [editMode] , [notesDocument] , [notesDocumentReadOnly] , [documentAnchor$] , [returnNotesUIDocument] , [newInstance] )

你看,有一个可选参数"newInstance"。如果你进一步阅读它说:

newInstance

Boolean. Optional. If True (default), opens a new instance of notesDocument (parameter 2) in the UI. If False, changes focus to an existing instance of notesDocument if one exists, or to a new instance if one does not exist. This parameter does not apply if notesDocument is not specified or the document has a target frame.

只需相应地更改您的代码:

Set uidoc = ws.EditDocument(True, doc,False,"",True,False)

但要注意:"newInstance" 标志有一个(小)错误: 如果您创建一个新的主文档并保存它。然后打开日历文档点击link回到主文档,然后总会有第二个window和主文档一起,除非你同时关闭并重新打开主文档...A "new" 保存后未关闭并重新打开的文档无法被 newinstance 标志识别...