LotusScript getNextDocument количество документов

  1. У меня есть NotesView с именем "status" с выбором: documentStatus = 0,
  2. У меня есть агент lotusscript, который получает весь документ из представления "статус" и меняет значение documentStatus на 1.

После запуска агента представление "статус" должно быть пустым, но есть документы, которые агент не обработал.

Я сделал ошибку?

Есть код Lotussript:

Set doc = view.Getfirstdocument()
While Not ( doc Is Nothing)
    Set docNext = view.Getnextdocument(doc)
    Call doc.Replaceitemvalue("documentStatus", 1)
    Call doc.Save(True, True)
    Set doc = docNext
Wend

3 ответа

Решение

Начните свой код со строки

view.AutoUpdate = false

Это предотвращает обновление вашего представления во время работы агента.

Гораздо лучше собрать документы в коллекцию, а затем пройтись по коллекции, внося изменения

view.AutoUpdate = false

остановит обновление представления во время работы, поэтому сервер не получит много обновлений для повторной индексации представления

Если их очень много, вы можете отключить репликацию, пока не закончите

Хорошо, я понял это.

Я думаю, что view.GetNextDocument(doc) не назначал документ переменной docNext, но возможность документа в представлении. После того, как агент сохранил документ, он был удален из просмотра (из-за критерия выбора) и в цикле получился неправильный документ.

Вместо view.GetNextDocument(doc) я использовал view.GetFirstDocument() в конце цикла.

Я изменяю свой код на:

Set doc = view.Getfirstdocument()
While Not ( doc Is Nothing)
    Set docNext = view.Getnextdocument(doc)
    Call doc.Replaceitemvalue("documentStatus", 1)
    Call doc.Save(True, True)
    Set doc = view.Getfirstdocument()
Wend
Другие вопросы по тегам