LotusScript getNextDocument количество документов
- У меня есть NotesView с именем "status" с выбором: documentStatus = 0,
- У меня есть агент 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