Поле NotesRichTextItem и SaveOptions

seoman2

Green Team
17.02.2010
496
1
На форме есть поле типа NotesRichTextItem , в которое по таймеру добавляю вложение.
Никаких подформ нет.
Код функции таймера в "Globals" формы.
После прикрепления аттача хочу переоткрыть форму без диалоговых окон.
Всё неудачно... Появляется окошко сохранения,
если нажать "нет" - то аттач в поле,
если "да" - аттач выпадает в низ формы из поля.
Код:
.....
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/threads/vlozhenie-uxodit-vniz-formy.31745/page-2#post-231772 читал.
http://www-01.ibm.com/support/docview.wss?uid=swg21089682 - читал.
Не помогает.
 
Последнее редактирование модератором:

oshmianski

Достойный программист
Lotus Team
25.04.2012
711
59
Положите RTF в секцию с контролируемым доступом и дайте доступ на редактирование НИКОМУ.
 
  • Нравится
Реакции: seoman2

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 731
573
можно РТ положить на вкладку программно переключаемой таблицы, ну а переключатель не делать ;)
 

seoman2

Green Team
17.02.2010
496
1
дайте доступ на редактирование НИКОМУ
Это в секции в Access formula. какую формулу писать в Type - Editable ?
@Nothing ?
Мне надо по умолчанию на форме прописать доступ секции.

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

можно РТ положить на вкладку программно переключаемой таблицы, ну а переключатель не делать
В таблице сделать две закладки? как тут: http://www.notesnet.ru/nn/notesnet.nsf/0/46e060a918eb5031c3256f570059e3a8?open&forprinter
 
Последнее редактирование:

seoman2

Green Team
17.02.2010
496
1
TRA_TA_TA_TA" - что-нить, что никогда не будет использоваться в качестве имени пользователя, группы, роли.
У новых документов секция доступна на редактирование.
Вроде всё так?
 

Вложения

  • 1111.jpg
    1111.jpg
    12,2 КБ · Просмотры: 438

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 731
573
и с SaveOptions
Код:
doc.ReplaceItemValue({SaveOptions},{0}).SaveToDisk=false
и после открытия дока, с диска - ничего не надо будет повертать взад
 
Последнее редактирование:
  • Нравится
Реакции: seoman2

oshmianski

Достойный программист
Lotus Team
25.04.2012
711
59
У новых документов секция доступна на редактирование.
Вроде всё так?
В данном случае, у вас получается содержимое поля TRA_TA_TA_TA. Я же рекомендовал указать значение "TRA_TA_TA_TA". По факту, если у вас поля TRA_TA_TA_TA в докмуенте нету, то присвоится "". По идее тоже должно работать.
Фишка в чем: если делать одновременно обновление RTF и в bg (background) и в ui, то результаты bg будут утеряны (или частично учеряны). А если вы кладете RTF в секцию с контролируемым доступом и НИКОМУ не даете доступ на редактирование, то изменения в ui происходить не будут. И мы смело можем оперировать RTF в bg.
 

seoman2

Green Team
17.02.2010
496
1
Xat - NotesRichTextItem. РТ
В общем всё работает как надо и с секциями с контролируемым доступом и код "doc.ReplaceItemValue({SaveOptions},{0}).SaveToDisk=false" оказался просто спасение.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 731
573
Xat - NotesRichTextItem. РТ
В общем всё работает как надо и с секциями с контролируемым доступом и код "doc.ReplaceItemValue({SaveOptions},{0}).SaveToDisk=false" оказался просто спасение.
я к тому:
- инстанс надо удалять (delete uidoc)
- РТ не надо если он есть - просто получать
тогда, возможно и не будет рассогласования front и back
 

oshmianski

Достойный программист
Lotus Team
25.04.2012
711
59
тогда, возможно и не будет рассогласования front и back
Да, вы правы, нужно получать поле. если оно есть, иначе создавать.
Но рассогласование вса равно будет.
Даже если compact делать, все равно будет рассогласование..
А compact делать я бы советовал, чтобы RTF не множился.
 

oshmianski

Достойный программист
Lotus Team
25.04.2012
711
59
1. открыть док на редактирование (при этом RTF поле присутствует в форме и отображается)
2. ctrl+S (в QuerySave присутсвует код добавления значения в RTF)

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

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 731
573
1. открыть док на редактирование (при этом RTF поле присутствует в форме и отображается)
2. ctrl+S (в QuerySave присутсвует код добавления значения в RTF)

Т.е. происходит двойное изменение RTF: ui и bg. Но ui выигрывает и затирает измениния bg.
как я уже упомянул про таблицу - 1-ый пункт исключается
НО если перед изменением bg сделать uidoc.Refresh(true) и получить bg - противоречия не возникнет (КМК)
QS использовать так - не совсем верно, для bg, тогда уж в PS (с переподписанием - если надо)
 
Последнее редактирование:
  • Нравится
Реакции: alexas1

seoman2

Green Team
17.02.2010
496
1
doc.ReplaceItemValue({SaveOptions},{0}).SaveToDisk=false
Вот только сейчас заметил, что вложение - всё ок - сохраняется в поле, а у документа SaveOptions остался 0.
Код:
doc.ReplaceItemValue({SaveOptions},{0}).SaveToDisk=False
Call doc.save (False, True)
Call uidoc.Close
Call workspace.EditDocument(False, doc)
 
Последнее редактирование:
Мы в соцсетях: