2016-08-29 2 views
1
  1. У меня есть NotesView под названием «Статус» с выбором: documentStatus = 0,
  2. Я в LotusScript агент, который получает все документы от «статуса» вид и изменить значение documentStatus к 1.

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

Если бы я допустил ошибку?

Существует код 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 

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

+0

Спасибо за вашу помощь - это прекрасно работает. – user1879229

0

Хорошо, я выясняю это.

Я думаю, что 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 
+1

Это работает, но вы можете обновить один и тот же документ несколько раз, потому что просмотр может не обновляться после каждого сохранения документа. Особенно, когда сервер очень занят, это произойдет. Лучше пойдите с 'view.AutoUpdate = false' ... –

0

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

view.AutoUpdate = false 

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

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

Смежные вопросы