LotusScript: бага или фича


Я бы отнес это скорее к багу, чем к фиче.

Как это работает. Вы получаете документ и меняете в нем значения, но не сохраняете его. Если потом снова получить это документ то тут могут быть варианты:

  1. Если получать документ в NotesDocumentCollection, тогда там будет ссылка на ранее объявленный документ, то есть содержащий изменения.
  2. Если получать документ напрямую Getdocumentbykey или GetDocumentByUNID, тогда вы получите документ который реально хранится в базе, то есть без ранее сделанных изменений.

Все это показано на скрипте ниже.


Dim session As New NotesSession
Dim db As NotesDatabase
Dim nv As NotesView
Dim dc As NotesDocumentCollection
Dim doc1 As NotesDocument
Dim doc2 As NotesDocument

Set db = session.Currentdatabase
Set nv = db.Getview("LookupByDocUNID")
Set doc1 = nv.Getdocumentbykey("7E697F4EEBC18C3343257F090030BADC", True)
Call doc1.Replaceitemvalue("F1", "TEST111") 'replace 'test1' -> 'TEST111'
Call doc1.Replaceitemvalue("F2", "TEST222") 'replace 'test2' -> 'TEST222'

'NOT Save doc1 !!!!!!!!!!!!!!!

'v1
Set dc = nv.Getalldocumentsbykey("7E697F4EEBC18C3343257F090030BADC", true)
Set doc2 = dc.Getfirstdocument()
Print doc2.F1(0) 'Printed 'TEST111'
Print doc2.F2(0) 'Printed 'TEST222'

'v2
Set doc2 = nv.Getdocumentbykey("7E697F4EEBC18C3343257F090030BADC", true)
Print doc2.F1(0) 'Printed 'test1'
Print doc2.F2(0) 'Printed 'test2'