Поле NotesRichTextItem и SaveOptions

seoman2

Lotus team
17.02.2010
465
1
#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/forum/threads/vlozhenie-uxodit-vniz-formy.31745/page-2#post-231772 читал.
Для просмотра контента необходимо: Войти или зарегистрироваться
- читал.
Не помогает.
 
Последнее редактирование модератором:

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 586
272
#3
можно РТ положить на вкладку программно переключаемой таблицы, ну а переключатель не делать ;)
 

seoman2

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

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

можно РТ положить на вкладку программно переключаемой таблицы, ну а переключатель не делать
В таблице сделать две закладки? как тут:
Для просмотра контента необходимо: Войти или зарегистрироваться
 
Последнее редактирование:

seoman2

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

Вложения

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 586
272
#9

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 586
272
#10
и с SaveOptions
Код:
doc.ReplaceItemValue({SaveOptions},{0}).SaveToDisk=false
и после открытия дока, с диска - ничего не надо будет повертать взад
 
Последнее редактирование:
Симпатии: Понравилось seoman2

oshmianski

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

seoman2

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

lmike

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

oshmianski

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

oshmianski

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

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

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 586
272
#19
1. открыть док на редактирование (при этом RTF поле присутствует в форме и отображается)
2. ctrl+S (в QuerySave присутсвует код добавления значения в RTF)

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

seoman2

Lotus team
17.02.2010
465
1
#20
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)
 
Последнее редактирование: