В Notes / Domino Form (= Design) и Document разные и (более или менее) независимые вещи.
Каждый раз, когда вы создаете документ, он принимает форму НА ЭТОМ МОМЕНТЕ и создает элементы для всех полей, которые находятся в форме при создании документа.
То же самое происходит при открытии существующего документа: он ищет форму и отображает ее данные в том виде, как он там спроектирован. Новые элементы для новых полей добавляются по запросу.
НО: они не сохраняются в документе, прежде чем вы это явно сделаете.
Этот процесс - чистый интерфейс.
Примечания НИКОГДА не изменяет существующие документы автоматически только потому, что вы изменили что-то в соответствующей форме (то есть создайте новое поле «Статус» со значением «QUEUED»).
Вот почему ваш сценарий не получает элемент (если вы не откроете документ, а поле в форме не станет элементом).
Существуют различные способы обновления документов с учетом изменений, внесенных в форму.
Первый: откройте все документы во внешнем интерфейсе и сохраните их ... Но это занимает очень много времени.
Вы можете обновить документы с помощью агента Формулы.
Просто выберите «Нет» в качестве цели (это важно, поскольку нам нужно использовать @Commands, а они не работают ни с одной целью) и введите в формулу:
@ Command ([ToolsRefreshSelectedDocs])
затем выберите документы для обновления и запустите на них агент.
Вы также можете использовать LotusScript Agent. Этот нужно запустить на выбранных документах:
Dim ses as New NotesSession
Dim db as NotesDatabase
Dim dc as NotesDocumentCollection
Dim doc as NotesDocument
Set db = ses.CurrentDatabase
Set dc = db.UnprocessedDocuments
Set doc = dc.GetFirstDocument()
While not doc is Nothing
Call doc.ComputeWithForm( False, False )
Call doc.Save( True, true, True )
Set doc = dc.GetNextDocument( doc )
Wend
Конечно, вместо обновления всех документов вы можете добавить этот код в существующий код:
Set nvwQueuedOrderLines = dbCurrent.Getview("QueuedOrderLines")
Dim docOrderRegel As NotesDocument
Set docOrderRegel = nvwQueuedOrderLines.GetFirstDocument
If not docOrderRegel.HasItem( "Status" ) then
Call docOrderRegel.ComputeWithForm( False, False )
End If
If docOrderRegel.Status(0) = "QUEUED" Then