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

Тема в разделе "Lotus - FAQ", создана пользователем motogarri, 25 май 2010.

  1. motogarri

    motogarri Well-Known Member

    Регистрация:
    17 фев 2010
    Сообщения:
    188
    Симпатии:
    4
    Не могу победить. Пробовал с полем SaveOption поиграться, но что-то не получилось.
    Код (LotusScript):
    'Копирую документ из коллекции, обзываю его 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
    Проблема в том, что когда закрывается старый документ, выскакивает сообщение о сохранении, где пользователь может нажать нет, а мне нельзя этого допустить. При этом, нужно чтобы при закрытии дока крестиком это сообщение появлялось.
    Что неправильно делаю?
     
  2. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    между этими 2мя строчками поставить uidoc.Document.SaveOptions = "0" пробовали?
     
  3. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    А смысл? После uidoc.Save вопросов о сохранении при uidoc.Close возникать не должно. Что-то нам не договаривают.

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

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    Оно обиделось на несерьезное отношение.

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

    Добавлено:
    Если много пересчитываемых полей, то может быть.
    Что такое "uidoc.Update"?
     
  5. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    uidoc.Refresh, конечно, ;)
     
  6. motogarri

    motogarri Well-Known Member

    Регистрация:
    17 фев 2010
    Сообщения:
    188
    Симпатии:
    4
    100% пробовал в разных вариантах. Целый день бьюсь. Может что не так понял. Текстовое поле SaveOptions Вычисляемое. Значение "0". Предед закрытием doc.saveoptions = "1" или "0" Все пробовал.


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

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    В разных вариантах не надо. Надо так:

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

    motogarri Well-Known Member

    Регистрация:
    17 фев 2010
    Сообщения:
    188
    Симпатии:
    4
    Если я на форме создам поле SaveOptions у меня же вообще документ перестанет спрашивать про сохранение? Даже когда крестиком закрываю?

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

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    SaveOptions = "0" — не спрашивать и не сохранять. При вызове метода Save документ не сохраняется.
    SaveOptions = "1" — при закрытии документа сохранять, не спрашивая.
    SaveOptions = "любое значение не 0 или 1" — запрос о сохранении не выводится, документ можно сохранить методом Save.
     
  10. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    Нет, значение его должно = "0" (текстовый ноль)

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

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

    motogarri Well-Known Member

    Регистрация:
    17 фев 2010
    Сообщения:
    188
    Симпатии:
    4
    Да, про SaveOptions прочитал миллион тем на форуме.

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

    Добавлено:
    В смысле? Само поле не создавать, но менять его значение при закрытии?
     
  12. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Именно. Если поля не будет на форме, при "закрытии крестиком" Лотус выведет запрос. Если поле добавить в коде кнопки, то запроса не будет.
     
  13. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    Есть понятие поля и елемента/итема.
    Поле на форме, в документе - итем.
    Часто говорят поле и на то, и на другое, если это не имеет разницы.

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

    motogarri Well-Known Member

    Регистрация:
    17 фев 2010
    Сообщения:
    188
    Симпатии:
    4
    Это значит итем нужно объявить? ок, попробую, спасибо.
     
  15. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    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
     
  16. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    гм, вот интересно, ну что там объявлять? всё же написали уже выше, место указали...
    Если писать красиво, то так:
    Код (LotusScript):
    call uidoc.Document.replaceItemValue("SaveOptions", "0")
    или даже так:
    Код (LotusScript):
    call doc.replaceItemValue("SaveOptions", "0")
     
  17. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    то надо использовать теги кода и писать с заглавных букаф
    Код (LotusScript):
    Call UIDoc.Document.ReplaceItemValue("SaveOptions", "0")
    зы: зачем тему перенесла? Ее ж еще не абсасали...
     
  18. hosm

    hosm * so what *

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

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    Автор еще не написал "εὕρηκα"
     
Загрузка...

Поделиться этой страницей