Я бы подошел к этому, сначала установив viewList.refresh в значение false: это останавливает обновление индекса представления при циклическом просмотре представления, особенно если вы вносите изменения, которые что-то изменяют в формуле выбора.
Выполните циклический просмотр каждого документа, с помощью document.copy создайте архив, установив параметр Form.
В конце цикла и в обработчике события завершения и / или ошибки установите viewList.refresh обратно в trueснова.
Таким образом, вам нужно только заблокировать исходный документ, если вы собираетесь его редактировать, и лучше всего это сделать в цикле на кратчайший срок, а не пытаться заблокировать все документы на времяпетля.Если вы пойдете по этому маршруту, также получите разблокировку документа в обработчике события и / или ошибки завершения.
Теоретически предложенные мной действия не требуют дублирования обработчика события и ошибки завершения: только мойосторожный характер.
Function CopyDoc( docOld As NotesDocument, dbThis As NotesDatabase) As NotesDocument
Dim docNew As NotesDocument
On Error GoTo Handler
Set docNew = docOld.copyto(dbThis)
Call docOld.lock()
docOld.Form = "Archive"
Call docOld.Save(True,True)
Call docOld.unlock()
'docNew Edits You Want To Make
Call docNew.Save(True,True)
Set CopyDoc = docNew
e: Exit Function
Handler:
Call docOld.unlock()
'additional logging for diagnostics
Resume e
End Function