• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы motogarri
  • Дата начала
M

motogarri

Не могу победить. Пробовал с полем 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
Проблема в том, что когда закрывается старый документ, выскакивает сообщение о сохранении, где пользователь может нажать нет, а мне нельзя этого допустить. При этом, нужно чтобы при закрытии дока крестиком это сообщение появлялось.
Что неправильно делаю?
 
N

nvyush

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

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

Akupaka

Пробовал с полем SaveOption поиграться, но что-то не получилось
Оно обиделось на несерьезное отношение.

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

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

Klido



ещё полезно тут
 
M

motogarri

Оно обиделось на несерьезное отношение.


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

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


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

Akupaka

пробовал в разных вариантах
В разных вариантах не надо. Надо так:

Код:
'Копирую документ из коллекции, обзываю его 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
 
M

motogarri

Если я на форме создам поле SaveOptions у меня же вообще документ перестанет спрашивать про сохранение? Даже когда крестиком закрываю?

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

nvyush

Если я на форме создам поле SaveOptions у меня же вообще документ перестанет спрашивать про сохранение? Даже когда крестиком закрываю?
SaveOptions = "0" — не спрашивать и не сохранять. При вызове метода Save документ не сохраняется.
SaveOptions = "1" — при закрытии документа сохранять, не спрашивая.
SaveOptions = "любое значение не 0 или 1" — запрос о сохранении не выводится, документ можно сохранить методом Save.
 
A

Akupaka

Если я на форме создам поле SaveOptions у меня же вообще документ перестанет спрашивать про сохранение?
Нет, значение его должно = "0" (текстовый ноль)

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

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

motogarri

Да, про SaveOptions прочитал миллион тем на форуме.

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

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

nvyush

В смысле? Само поле не создавать, но менять его значение при закрытии?
Именно. Если поля не будет на форме, при "закрытии крестиком" Лотус выведет запрос. Если поле добавить в коде кнопки, то запроса не будет.
 
A

Akupaka

Само поле не создавать, но менять его значение при закрытии?
Есть понятие поля и елемента/итема.
Поле на форме, в документе - итем.
Часто говорят поле и на то, и на другое, если это не имеет разницы.

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

motogarri

Это значит итем нужно объявить? ок, попробую, спасибо.
 
A

Akupaka

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

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

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

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

hosm

гм, вот интересно, ну что там объявлять? всё же написали уже выше, место указали...
Если писать красиво, то так:
Код:
call uidoc.Document.replaceItemValue("SaveOptions", "0")
или даже так:
Код:
call doc.replaceItemValue("SaveOptions", "0")
 
H

hosm

Akupaka теперь и ты - придира? ради одной строчки можно было и пропустить ;)
Ну, я тег кода поправила, а большие буквы - нет.
Перенесла тему не я, меня опередили, я только-только успела подумать, что тема явно из этого раздела. А ты почему против? Вот даже ссылки полезные нашлись.
ну, а что обсасывать еще надо?
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!