Сообщение о сохранении

motogarri

Well-Known Member
17.02.2010
200
4
#1
Не могу победить. Пробовал с полем SaveOption поиграться, но что-то не получилось.
Код:
'Копирую документ из коллекции, обзываю его newdoc, редактирую, сохраняю и оставляю открытым для пользователя.
Set doc = collection.GetFirstDocument
Set newdoc = New NotesDocument(db)
Call doc.CopyAllItems(newdoc, True)
newdoc.FieldStatus = 2
newdoc.FieldComment = ""
newdoc.Save True, False
'Редактирую некоторые поля в старом доке, который в коллекции, сохраняю и закрываю.
Set doc = uidoc.Document
doc.FieldStatus = 100 
doc.FieldName = s.CommonUserName
doc.FieldDate = Date
uidoc.Save
uidoc.Close
Проблема в том, что когда закрывается старый документ, выскакивает сообщение о сохранении, где пользователь может нажать нет, а мне нельзя этого допустить. При этом, нужно чтобы при закрытии дока крестиком это сообщение появлялось.
Что неправильно делаю?
 

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
48
Подмосковье
#3
между этими 2мя строчками поставить uidoc.Document.SaveOptions = "0" пробовали?
А смысл? После uidoc.Save вопросов о сохранении при uidoc.Close возникать не должно. Что-то нам не договаривают.

КМК, перед uidoc.Save нужно uidoc.Update() '(True)
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
2
34
Kiev, Ukraine
#4
Пробовал с полем SaveOption поиграться, но что-то не получилось
Оно обиделось на несерьезное отношение.

между этими 2мя строчками поставить uidoc.Document.SaveOptions = "0" пробовали?
99.99% что не пробовал ;)

Добавлено:
А смысл? После uidoc.Save вопросов о сохранении при uidoc.Close возникать не должно
Если много пересчитываемых полей, то может быть.
Что такое "uidoc.Update"?
 

motogarri

Well-Known Member
17.02.2010
200
4
#7
Оно обиделось на несерьезное отношение.


99.99% что не пробовал ;)

Добавлено:
Если много пересчитываемых полей, то может быть.
Что такое "uidoc.Update"?
100% пробовал в разных вариантах. Целый день бьюсь. Может что не так понял. Текстовое поле SaveOptions Вычисляемое. Значение "0". Предед закрытием doc.saveoptions = "1" или "0" Все пробовал.


рефреш помог, Спасибо.
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
2
34
Kiev, Ukraine
#8
пробовал в разных вариантах
В разных вариантах не надо. Надо так:

Код:
'Копирую документ из коллекции, обзываю его newdoc, редактирую, сохраняю и оставляю открытым для пользователя.
Set doc = collection.GetFirstDocument
Set newdoc = New NotesDocument(db)
Call doc.CopyAllItems(newdoc, True)
newdoc.FieldStatus = 2
newdoc.FieldComment = ""
newdoc.Save True, False
'Редактирую некоторые поля в старом доке, который в коллекции, сохраняю и закрываю.
Set doc = uidoc.Document
doc.FieldStatus = 100 
doc.FieldName = s.CommonUserName
doc.FieldDate = Date
uidoc.Save

doc.saveoptions = "0" / uidoc.Document.SaveOptions = "0"

uidoc.Close
 

motogarri

Well-Known Member
17.02.2010
200
4
#9
Если я на форме создам поле SaveOptions у меня же вообще документ перестанет спрашивать про сохранение? Даже когда крестиком закрываю?

Рефреш помог три раза и умер)) Снова при закрытии спрашивает.
 

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
48
Подмосковье
#10
Если я на форме создам поле SaveOptions у меня же вообще документ перестанет спрашивать про сохранение? Даже когда крестиком закрываю?
SaveOptions = "0" — не спрашивать и не сохранять. При вызове метода Save документ не сохраняется.
SaveOptions = "1" — при закрытии документа сохранять, не спрашивая.
SaveOptions = "любое значение не 0 или 1" — запрос о сохранении не выводится, документ можно сохранить методом Save.
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
2
34
Kiev, Ukraine
#11
Если я на форме создам поле SaveOptions у меня же вообще документ перестанет спрашивать про сохранение?
Нет, значение его должно = "0" (текстовый ноль)

Если в документе (форма не при чем) присутствует SaveOptions = "0", то метод закрытия не имеет значения.
В этом случае нотес думает, что о сохранении обязан позаботиться разработчик.

Если тебе не нужно поле SaveOptions в принципе, то убери его с формы. Достаточно дописывать его значение в коде как указывали выше.
 

motogarri

Well-Known Member
17.02.2010
200
4
#12
Да, про SaveOptions прочитал миллион тем на форуме.

SaveOptions = "00"
При закрытии документа крестиком нет запроса о сохранении и изменения в доке не сохраняются. Меня пользователи порвут(( Как отловить закрытие крестиком, чтобы свой запрос повесить?

Добавлено:
Если тебе не нужно поле SaveOptions в принципе, то убери его с формы. Достаточно дописывать его значение в коде как указывали выше.
В смысле? Само поле не создавать, но менять его значение при закрытии?
 

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
48
Подмосковье
#13
В смысле? Само поле не создавать, но менять его значение при закрытии?
Именно. Если поля не будет на форме, при "закрытии крестиком" Лотус выведет запрос. Если поле добавить в коде кнопки, то запроса не будет.
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
2
34
Kiev, Ukraine
#14
Само поле не создавать, но менять его значение при закрытии?
Есть понятие поля и елемента/итема.
Поле на форме, в документе - итем.
Часто говорят поле и на то, и на другое, если это не имеет разницы.

На форме поле не делай, а просто меняй в документе значение итема.
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
2
34
Kiev, Ukraine
#16
SaveOptions = "0" — не спрашивать и не сохранять. При вызове метода Save документ не сохраняется.
SaveOptions = "1" — при закрытии документа сохранять, не спрашивая.
SaveOptions = "любое значение не 0 или 1" — запрос о сохранении не выводится, документ можно сохранить методом Save.
SaveOptions = "0" - не сохраняется с UI (@Command([FileSave], NotesUIDocument.Save), NotesDocument.Save() - работает. Только надо быть аккуратным при новом документе - поле формы не пропишется автоматически, если оно не было заполнено на форме или не был прописан итем.

SaveOptions = "1" - спрашивает при закрытии. Работает так, как если бы поля не было вовсе.
SaveOptions = "любое значение не 0 или 1" как описано выше. Причем значение "" (пустая строка) подпадает под правило.

Добавлено:
Это значит итем нужно объявить?
Не обязательно.

Я же тебе пример твоего кода с нужным кодом написал выше, попробуй его.
http://codeby.net/forum/threads/35979.html?vi...st&p=171417
 

hosm

* so what *
18.05.2009
2 442
9
42
Kiev, Ukraine
#17
гм, вот интересно, ну что там объявлять? всё же написали уже выше, место указали...
Если писать красиво, то так:
Код:
call uidoc.Document.replaceItemValue("SaveOptions", "0")
или даже так:
Код:
call doc.replaceItemValue("SaveOptions", "0")
 

hosm

* so what *
18.05.2009
2 442
9
42
Kiev, Ukraine
#19
Akupaka теперь и ты - придира? ради одной строчки можно было и пропустить ;)
Ну, я тег кода поправила, а большие буквы - нет.
Перенесла тему не я, меня опередили, я только-только успела подумать, что тема явно из этого раздела. А ты почему против? Вот даже ссылки полезные нашлись.
ну, а что обсасывать еще надо?