使用预定代理刷新 Lotus 文档

Refresh lotus documents with scheduled agent

我在计算显示文本字段时遇到错误。 对于每个文档,我都以编辑模式打开它并重新保存以更正它。 我在许多数据库和文档上都有同样的问题。 我尝试使用 uiworkspace 中的 EditDocument 函数在整个基础上使用代理来更正它。如下:

Option Public
Option Declare

Sub Initialize

Dim session As New NotesSession
Dim db As NotesDatabase
Dim col As NotesDocumentCollection
Dim view As NotesView
Dim doccand As NotesDocument
Dim doc As NotesDocument
Dim result As Integer
Dim uiwks As New NotesUIWorkspace
Dim uidoc As NotesUIDocument

Set db  = session.Currentdatabase
Set col = db.Unprocesseddocuments
Set docCand =  col.getfirstdocument

On Error Resume next

While Not docCand Is Nothing
    Set uidoc =  uiwks.Editdocument(True, docCand)
    Call uidoc.save
    Call uidoc.close(True)
    Set docCand =  view.getNextdocument(docCand)
Wend

End Sub

仅当我从我的 Notes 客户端启动此功能时,此功能才更正了问题。它不作为 domino 服务器中的计划任务工作。我尝试在没有 uiworkspace 的情况下使用 computewithform,但它也不起作用。 谁有在预定代理中刷新编辑和保存文档的方法?

computed for display text field

这种类型的字段不保存在文档中,它与计算文本有点相似。

关于您的解决方案:

NotesUIWorkspace 和 EditDocument 不能用于 运行 在后台(即在服务器上)但只能来自 UI 的计划代理(这就是它在以下情况下工作的原因你 运行 LN).

您需要做的是使用 NotesDocument 中的 ComputeWithForm 方法。它将在后台刷新文档(不需要 open/save 它)。

While Not docCand Is Nothing
    Call docCand.ComputeWithForm(False, False)
    Call docCand.save
    Set docCand = col.getNextdocument(docCand)
Wend

注意,在您的脚本中存在一个问题,您正在尝试从未初始化的视图中获取下一个文档。我想你想改用 col。

Set docCand =  view.getNextdocument(docCand)

不应保存为显示字段计算的结果。您不必刷新。

据我所知,只有一种情况会保存显示字段的计算值。当表单上的字段最初设计为常规计算字段,但后来有人将其更改为计算字段以显示时,就会发生这种情况。原始计算字段作为项目保存在存储文档中,即使在字段更改为计算字段后,组合注释仍将继续看到保存的值。如果那是正在发生的事情,那么您真正想要做的是 运行 代理 删除 保存的值。例如,

FIELD myFieldThatUsedToBeComputedButIsNowCFD := @DeleteField;