Поле NotesRichTextItem и SaveOptions

Тема в разделе "Lotus - Программирование", создана пользователем seoman2, 4 авг 2016.

  1. seoman2

    seoman2 Lotus team
    Lotus team

    Регистрация:
    17 фев 2010
    Сообщения:
    435
    Симпатии:
    0
    На форме есть поле типа NotesRichTextItem , в которое по таймеру добавляю вложение.
    Никаких подформ нет.
    Код функции таймера в "Globals" формы.
    После прикрепления аттача хочу переоткрыть форму без диалоговых окон.
    Всё неудачно... Появляется окошко сохранения,
    если нажать "нет" - то аттач в поле,
    если "да" - аттач выпадает в низ формы из поля.
    Код (LotusScript):
    .....
    nTimer.Enabled = False
         
            doc.SaveOptions = "0"
            Call doc.save (False, True)
            Call uidoc.Close
            Call workspace.EditDocument(False, doc)
            Print doc.header(0)
            doc.SaveOptions = "1"
            Call doc.save (False, True)

    Тему https://codeby.net/forum/threads/vlozhenie-uxodit-vniz-formy.31745/page-2#post-231772 читал.
    http://www-01.ibm.com/support/docview.wss?uid=swg21089682 - читал.
    Не помогает.
     
    #1 seoman2, 4 авг 2016
    Последнее редактирование модератором: 4 авг 2016
  2. oshmianski

    oshmianski Достойный программист
    Lotus team

    Регистрация:
    25 апр 2012
    Сообщения:
    521
    Симпатии:
    13
    Положите RTF в секцию с контролируемым доступом и дайте доступ на редактирование НИКОМУ.
     
    seoman2 нравится это.
  3. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    можно РТ положить на вкладку программно переключаемой таблицы, ну а переключатель не делать ;)
     
  4. seoman2

    seoman2 Lotus team
    Lotus team

    Регистрация:
    17 фев 2010
    Сообщения:
    435
    Симпатии:
    0
    Это в секции в Access formula. какую формулу писать в Type - Editable ?
    @Nothing ?
    Мне надо по умолчанию на форме прописать доступ секции.

    Проверил - работает, если с инт. юзера добавил доступ на секцию.

    В таблице сделать две закладки? как тут: http://www.notesnet.ru/nn/notesnet.nsf/0/46e060a918eb5031c3256f570059e3a8?open&forprinter
     
    #4 seoman2, 4 авг 2016
    Последнее редактирование: 4 авг 2016
  5. oshmianski

    oshmianski Достойный программист
    Lotus team

    Регистрация:
    25 апр 2012
    Сообщения:
    521
    Симпатии:
    13
    "TRA_TA_TA_TA" - что-нить, что никогда не будет использоваться в качестве имени пользователя, группы, роли.
     
  6. seoman2

    seoman2 Lotus team
    Lotus team

    Регистрация:
    17 фев 2010
    Сообщения:
    435
    Симпатии:
    0
    Разобрался, не работает (Аттач вылетает с таблицы вниз) , только вариант с секциями пашет.
     
  7. seoman2

    seoman2 Lotus team
    Lotus team

    Регистрация:
    17 фев 2010
    Сообщения:
    435
    Симпатии:
    0
    У новых документов секция доступна на редактирование.
    Вроде всё так?
     

    Вложения:

    • 1111.jpg
      1111.jpg
      Размер файла:
      18,2 КБ
      Просмотров:
      7
  8. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    код где, для атача файла?
     
    #8 lmike, 4 авг 2016
    Последнее редактирование: 4 авг 2016
  9. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    этого мало, писал уже...
    Код (LotusScript):
    uid=doc.UniversalID:delete uidoc:Set doc=db.GetDocumentByUniversalID(uid)
    это ваще непонятно - зачем
     
  10. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    и с SaveOptions
    Код (LotusScript):
    doc.ReplaceItemValue({SaveOptions},{0}).SaveToDisk=false
    и после открытия дока, с диска - ничего не надо будет повертать взад
     
    #10 lmike, 4 авг 2016
    Последнее редактирование: 4 авг 2016
    seoman2 нравится это.
  11. seoman2

    seoman2 Lotus team
    Lotus team

    Регистрация:
    17 фев 2010
    Сообщения:
    435
    Симпатии:
    0
    Код (LotusScript):
    Dim rtitem As NotesRichTextItem
            Set rtitem = New NotesRichTextItem( doc, "Xat" )
            Call rtitem.EmbedObject ( EMBED_ATTACHMENT, "",  FName)
            rtitem.Update
            uidoc.Refresh
     
    #11 seoman2, 5 авг 2016
    Последнее редактирование модератором: 5 авг 2016
  12. oshmianski

    oshmianski Достойный программист
    Lotus team

    Регистрация:
    25 апр 2012
    Сообщения:
    521
    Симпатии:
    13
    В данном случае, у вас получается содержимое поля TRA_TA_TA_TA. Я же рекомендовал указать значение "TRA_TA_TA_TA". По факту, если у вас поля TRA_TA_TA_TA в докмуенте нету, то присвоится "". По идее тоже должно работать.
    Фишка в чем: если делать одновременно обновление RTF и в bg (background) и в ui, то результаты bg будут утеряны (или частично учеряны). А если вы кладете RTF в секцию с контролируемым доступом и НИКОМУ не даете доступ на редактирование, то изменения в ui происходить не будут. И мы смело можем оперировать RTF в bg.
     
  13. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    я вот этого не понял - у вас нет РТ?
     
  14. seoman2

    seoman2 Lotus team
    Lotus team

    Регистрация:
    17 фев 2010
    Сообщения:
    435
    Симпатии:
    0
    Xat - NotesRichTextItem. РТ
    В общем всё работает как надо и с секциями с контролируемым доступом и код "doc.ReplaceItemValue({SaveOptions},{0}).SaveToDisk=false" оказался просто спасение.
     
  15. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    я к тому:
    - инстанс надо удалять (delete uidoc)
    - РТ не надо если он есть - просто получать
    тогда, возможно и не будет рассогласования front и back
     
  16. oshmianski

    oshmianski Достойный программист
    Lotus team

    Регистрация:
    25 апр 2012
    Сообщения:
    521
    Симпатии:
    13
    Да, вы правы, нужно получать поле. если оно есть, иначе создавать.
    Но рассогласование вса равно будет.
    Даже если compact делать, все равно будет рассогласование..
    А compact делать я бы советовал, чтобы RTF не множился.
     
  17. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    в какой момент оно возникнет, если поле руками не трогать, а док переоткрывыть?
     
  18. oshmianski

    oshmianski Достойный программист
    Lotus team

    Регистрация:
    25 апр 2012
    Сообщения:
    521
    Симпатии:
    13
    1. открыть док на редактирование (при этом RTF поле присутствует в форме и отображается)
    2. ctrl+S (в QuerySave присутсвует код добавления значения в RTF)

    Т.е. происходит двойное изменение RTF: ui и bg. Но ui выигрывает и затирает измениния bg.
     
  19. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    как я уже упомянул про таблицу - 1-ый пункт исключается
    НО если перед изменением bg сделать uidoc.Refresh(true) и получить bg - противоречия не возникнет (КМК)
    QS использовать так - не совсем верно, для bg, тогда уж в PS (с переподписанием - если надо)
     
    #19 lmike, 5 авг 2016
    Последнее редактирование: 6 авг 2016
    alexas1 нравится это.
  20. seoman2

    seoman2 Lotus team
    Lotus team

    Регистрация:
    17 фев 2010
    Сообщения:
    435
    Симпатии:
    0
    Вот только сейчас заметил, что вложение - всё ок - сохраняется в поле, а у документа SaveOptions остался 0.
    Код (Text):

    doc.ReplaceItemValue({SaveOptions},{0}).SaveToDisk=False
    Call doc.save (False, True)
    Call uidoc.Close
    Call workspace.EditDocument(False, doc)
     
    #20 seoman2, 15 сен 2016
    Последнее редактирование: 15 сен 2016
Загрузка...

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