Проблема. Сохранение и переоткрытие документа.

  • Автор темы NeoSimvolist
  • Дата начала
N

NeoSimvolist

#1
Задача в следующем:
Пользователь открывает документ. Нажимает кнопочку н-р: "зарегистрировать".
1) производятся некоторые изменения в текущем документе. (независимо от того, в режиме редактирования или просмотра док.)
2) изменения сохраняются. (прозрачно для пользователя)
3) документ переоткрывается чтоб изменения отобразились.

Вот наткнулся на такой код:

While Not doc.Save(False,False) ' Между делом поясните мне смысл этой нетривиалльно конструкции? зачем сохранять до тех пор пока не тРу?
Wend
Call uidoc.Close(True)
Call ws.EditDocument(False,doc)

Он работает как надо, но при выполнении этого кода сохраненный док открывается в новом окне!
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 601
277
#3
Call uidoc.Close(True)
Call ws.EditDocument(False,doc)

Он работает как надо, но при выполнении этого кода сохраненный док открывается в новом окне!
зекундочку - а чё за фокус - ведь закрыли окно (Close)! Следующее будет новым :welcome: - не?
 

VladSh

начинающий
Lotus team
11.12.2009
1 277
6
#4
While Not doc.Save(False,False) ' Между делом поясните мне смысл этой нетривиалльно конструкции? зачем сохранять до тех пор пока не тРу?
Wend
Я точно изменил бы этот код, т.к. если док после отображения на экране изменил агент, то True не вернётся никогда, т.е. код застынет в бесконечном цикле, а потом выпадет по ошибке.
Если такого ни разу ещё не случалось, то это не гарантирует что в будущем такое не случится.
 
N

NeoSimvolist

#5
Ребяты, мне нужно сделать так, чтобы нажав на кнопочку в контексте открытого дока (независимо от того в режиме просмотра или в режиме редактирования), в определенные поля вбились данные и док сохранился сразуже.
А если программно не сохранять, то пользователь может закрыть документ не сохраняя и толку от того, что нажимали кнопку нема!.
und?
 

alik86

Lotus team
20.11.2008
465
1
#6
А добавьте в кнопку конструкцию типа если не EditMode то переводить в EditMode, теперь вбиваете в определенные поля данные, тут же сохраняете документ... Что-то вроде:
Код:
Set DocUI = Wsp.CurrentDocument
Set Doc = DocUI.Document
DocUI.EditMode = True
'вносите изменения
Call DocUI.Refresh	
Call Doc.save( True, True, True)		
DocUI.EditMode = False
 

VladSh

начинающий
Lotus team
11.12.2009
1 277
6
#7
Ребяты, мне нужно сделать так, чтобы нажав на кнопочку в контексте открытого дока (независимо от того в режиме просмотра или в режиме редактирования), в определенные поля вбились данные и док сохранился сразуже.
Это неправильно [Save(True, True)], т.к.
- во-1, пользователю не даётся возможности отменить своё действие (это может быть оправдано только для режима чтения);
- во-2, открывается возможность создания конфликта, а также возможность затереть данные записанные другим процессом от этого же пользовате6ля.

А если программно не сохранять, то пользователь может закрыть документ не сохраняя и толку от того, что нажимали кнопку нема!.
И это правильно, т.к.
- если пользователь будет закрывать документ без сохранения, то ему вылетит сообщение о том, что док не сохранён, и он сможет это сделать (если это нужно) или не сделать (если он передумал), т.е. есть возможность самому принять решение;
- уменьшается вероятность возникновения ситуаций, в которых возможны "недоразумения"..

Если уж так хочется отобрать у пользователя возможность отменить действие (правда я не понимаю, зачем?), то для режима редактирования нужно пытаться сохранять документ соответствующим ему методом, т.к. NotesUIDocument.Save().