Новый документ

  • Автор темы ak-47
  • Дата начала
A

ak-47

#1
Создаю новый документ, в котором есть экшен с таким кодом:
Dim ws As New NotesUIWorkspace
Dim db As NotesDatabase
Dim uidb As NotesUIDatabase
Dim view As NotesUIView
Dim coll As NotesDocumentCollection
Dim doc As NotesDocument , selected_doc As NotesDocument
Dim uidoc As NotesUIDocument

Set uidb = ws.CurrentDatabase

Set db = uidb.Database
Set view = ws.CurrentView
Set uidoc = ws.CurrentDocument
Set selected_doc = uidoc.Document


If uidoc.IsNewDoc=True Then
Messagebox "uidoc.TRUE!!!"
Else
Messagebox "uidoc.NE TRUE!!!"
End If

If selected_doc Is Nothing Then Exit Sub


If selected_doc.IsNewNote=True Then
Messagebox "selected_doc.TRUE!!!"
Else
Messagebox "selected_doc.NE TRUE!!!"
End If

после клика по экшену(до сохранения) получаю:
1) "uidoc.NE TRUE!!!"
2) "selected_doc.TRUE!!!"
после сохранения, ситуация не меняется

после закрытия, и открытия сохраненного документа получаю
1) "uidoc.NE TRUE!!!"
2) "selected_doc.NE TRUE!!!"

чем можно объяснить подобные странности? почему IsNewNote не меняет значение после сохранения




да..
экшен сохранения - shared, с такой @-коммандой : @PostedCommand([FileSave])
 
E

Elena Nefedova

#2
чем можно объяснить подобные странности? почему IsNewNote не меняет значение после сохранения
Видимо, потому не меняет, что на QueryOpen что-то висит.
Либо каким-то другим способом вновь создаваемый документ изменяется до его открытия в UI, что и позволяет лотусу не считать данный Note новым
 
A

ak-47

#3
Либо каким-то другим способом вновь создаваемый документ изменяется до его открытия в UI, что и позволяет лотусу не считать данный Note новым
С этим полностью согласен, т.к. документ создается программно с помощью метода ws.EditDocument - то IsNewDoc будет иметь значение FALSE.

А вообще проблемму решил следующим образом.

получаю UNID документа, таким образом ws.CurrentDocument.Document.UniversalID
потом пытаюсь получить объект документа при помощи db.getDocumentByUNID
- если ошибки нет, то документ уже сохранен
- если выскакивает ошибка, то считаем, что документ еще не сохранен, и при помощи обработчика ошибок, передаем управление в нужное нам место
 
E

Elena Nefedova

#4
По-моему, если документ не записан, то у него NoteID = 0, хотя UNID уже не нулевой.
Но я документацию на эту тему не читала, так что это может оказаться рецепт не на все случаи жизни :wacko:
 
A

ak-47

#5
Все верно... NoteID=0, а вот UNID - уже существует... но подставив его в getDocumentByUNID получаем ошибку с каким то там кодом... этим собственно я и воспользовался