Lotus Notes 脚本:创建和打开未保存的克隆文档

Mic*_*rdi 0 lotus-notes

在 lotus notes 6.5.6 中,我有一个文档,其中有一个“克隆文档”按钮,用于创建 uidoc 的副本并在工作区中打开它。我的问题是,在工作区中打开克隆的文档时已经保存,我不想要这个。我已经检查了“Queryopen”、“Postopen”...状态,但没有 doc.save 调用。那么,如何在不保存的情况下在我的工作区中打开一个新的克隆文档?这是我的错误代码。

    Dim session As New notessession
    Dim uiw As New notesuiworkspace
    Dim uidoc As notesuidocument
    Dim db As NotesDatabase
    Dim newdoc As NotesDocument
    Dim NewUIDoc As NotesUIDocument
    Dim doc As notesdocument    
    Set uidoc=uiw.currentdocument
    Set db=session.currentdatabase
    Set doc=uidoc.document  
    Set newdoc = db.CreateDocument
    Call doc.CopyAllItems( newdoc)
    Set NewUIDoc = uiw.EditDocument( True ,newdoc)
Run Code Online (Sandbox Code Playgroud)

Tor*_*ink 5

您错误地假设文档已“保存”,这很可能是因为“@IsNewDoc”和 NotesUiDocument.isNewDoc 在使用 uiw.EditDocument 打开之前在 LotusScript 中创建的任何文档上都返回 FALSE。

这是 Lotus Notes 设计中的一个众所周知的缺陷。您需要自己的函数来检查文档是否是新的。

在公式中,我通常使用一个名为“IsNewDoc”的计算显示字段,其中包含以下公式:

@Modified = @Created
Run Code Online (Sandbox Code Playgroud)

对于 LotusScript,我有一个自己的函数,如下所示:

Function MyIsNewDoc( doc As NotesDocument ) As Boolean
    MyIsNewDoc = (doc.Lastmodified = 0)
End Function
Run Code Online (Sandbox Code Playgroud)