Lotus notes LotusScript:在审计跟踪的读取模式下保存

Lotus notes LotusScript:在审计跟踪的读取模式下保存,lotus-notes,lotus-domino,lotusscript,Lotus Notes,Lotus Domino,Lotusscript,我有一个记录两个字段的审计跟踪。我只是想问一下,在读取模式下是否可以保存审核跟踪中的更改?我的代码在读取模式下不记录任何内容。你们能帮帮我吗?这是我的密码: 查询保存: Sub Querysave(Source As Notesuidocument, Continue As Variant) initial = Source.IsNewDoc If initial Then m$ = session.CommonUserName & " - " & Cstr(No

我有一个记录两个字段的审计跟踪。我只是想问一下,在读取模式下是否可以保存审核跟踪中的更改?我的代码在读取模式下不记录任何内容。你们能帮帮我吗?这是我的密码:

查询保存:

Sub Querysave(Source As Notesuidocument, Continue As Variant)
    initial = Source.IsNewDoc
    If initial Then m$ = session.CommonUserName & " - " & Cstr(Now()) & " - Document Created"

    Forall F In old
        v$ = Source.FieldGetText(Listtag(F))
        If Not initial And Not v$ = F Then
            If m$ = "" Then
                m$ = session.CommonUserName & " - " & Cstr(Now()) & " - Modified "
            Else
                m$ = m$ & ", "
            End If
            If F = "" Then F = {""}
            m$ = m$ & Listtag(F) & " from " & F & " to " & v$
        End If
        F = v$
    End Forall

    If initial Then
        Source.FieldSetText "History", m$
    Elseif Not m$ = "" Then
        Source.FieldAppendText "History", Chr$(10) & m$
    End If

    X: Exit Sub

    E: Continue = False
    Resume X
End Sub
公开发行后:

Sub Postopen(Source As Notesuidocument)
    Set session = New NotesSession
    old("DocName") = Source.FieldGetText("DocName")
    old("DocStatus") = Source.FieldGetText("DocStatus")

    'Disable edit in double click
    Set uidoc = source
    Set doc = uidoc.Document
    doc.mc = 1
    End 
End Sub

当您需要在事件之间使用变量/对象,并且不想用临时值污染文档时,请对所有内容使用全局变量

在postOpen上,文档可能处于读取模式,在文档处于读取模式时,您在此事件中对后端文档(即uidoc.document)上的字段所做的任何更改都不会“粘滞”,因为您正在写入当前处于读取模式的对象。“旧”列表变量是全局变量(?),与其尝试写入“历史”字段,不如将“历史”变量设置为全局字符串变量,而不要在postopen期间尝试将其写入文档。当QuerySave事件触发时,将全局“history”字符串变量写入文档的history字段。

在我看来,保存文档时创建历史记录/审核跟踪的最佳方法是使用后端类将代码放入PostSave事件中。 该代码在保存后执行

我经常做的一件事是声明一个字符串的全局列表。在PostOpen事件中,我使用所有字段的值填充它,除了以$开头的字段。
在PostSave(甚至Terminate)事件中,我将该列表中的值与文档上的当前值进行比较,如果任何值不同,我可以更新文档历史记录/审核字段。

在读取模式下,您无法保存文档。这是一张钞票。使用后端类。