Добавление нового Attachment командой Openfiledialog.

  • Автор темы Guest
  • Дата начала
G

Guest

#1
При добавлении нового attachment командой OpenFileDialog, чё за хрень существующий attachment уходит в подвал.
Код:
Forall file In files
Call rtitem.EmbedObject(EMBED_ATTACHMENT, "", file)

' "прописываем" изменения в RichTextItem
Call rtitem.Update 		

' тут указывается форма документа, если он был новый и форма не установлена еще, либо на всякий случай :)
Call uidoc.Document.ReplaceItemValue("Form", "Contract")

' это позволяет избавиться от вопроса о сохранении закрываемого документа!
' причем это прописывается в "старый" экземпляр документа в памяти-instance,
' т.е. в открытом предыдущей командой документе это не появится и убирать не нужно оттуда ничего
Call uidoc.Document.ReplaceItemValue("SaveOptions", "0")

' закрываем "старый" документ
Call uidoc.Close(True)
End Forall
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 569
263
#2
апдейт нужен с True
и ваще РТ - это много глюков
TIA рассказывал и про детали встраивания аттача, без сохранения дока на диск
 
G

Guest

#3
А это как - апдейт нужен с True !?!
Call rtitem.Update(True) - не проходит.
А по TIA я поищу.
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 569
263
#4
Call notesUIDocument.Refresh( [ IncludeRichTextItems ] )
я это имел в виду
коряво выразился

но в общем - док нужно сохранить (после добавления аттача) и переоткрыть в ws
 
G

Guest

#5
Народ pls. help не выходит сохранить предыдущий attache. Какие-то непонятные файлы ATT создает.

Код:
	Forall file In files
Call rtitem.EmbedObject(EMBED_ATTACHMENT, "", file)

' "прописываем" изменения в RichTextItem
Call rtitem.Update 		

' тут указывается форма документа, если он был новый и форма не установлена еще, либо на всякий случай :)
Call uidoc.Document.ReplaceItemValue("Form", "Contract")

' это позволяет избавиться от вопроса о сохранении закрываемого документа!
' причем это прописывается в "старый" экземпляр документа в памяти-instance,
' т.е. в открытом предыдущей командой документе это не появится и убирать не нужно оттуда ничего
'Call uidoc.Document.ReplaceItemValue("SaveOptions", "0")

' закрываем "старый" документ
Call uidoc.Close(True)
End Forall

' теперь открываем документ в новом окне
Call ws.EditDocument(True, uidoc.Document)

'сохраним документ
Call ws.CurrentDocument.Save

'обновим документ
Call ws.CurrentDocument.Refresh(True)
 
A

amigolinx

#7
Походу Денис оттуда и брал код :(
Мне вот не совсем понятна логика - что за уидок все время в цикле закрывается ( Call uidoc.Close(True) )? И опять же зачем при каждом проходе цикла менять форму на доке ( Call uidoc.Document.ReplaceItemValue("Form", "Contract") )? Может стоит вынести эти штуки после завершения ForAll. Если это проблему и не решит, то все же как-то спокойнее будет :(

... или наоборот, все операции с доком включить поголовно в цикл...
 
K

Klido

#8
вообще - зачем цикл?
в чем задача - заменить аттач? добавить ещё один?
 

Omh

Lotus team
04.07.2007
2 210
1
#9
Да, там с циклом явно какой-то перебор.
Это всё:
Код:
Call rtitem.Update		 
Call uidoc.Document.ReplaceItemValue("Form", "Contract")
Call uidoc.Document.ReplaceItemValue("SaveOptions", "0")
Call uidoc.Close(True)
вынести ара из цикла
И вообще, обращатся всё время к документу через uidoc - не модно, лучше завести переменную.
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 569
263
#10
эффект вызывается рассинхронизацией ФЭ и БЭ
 

hosm

* so what *
18.05.2009
2 442
6
#11
amigolinx та просто, ребята, ну он же не думает, что пишет :(
я видела, что оттуда, первый пример. Там есть еще и второй, например. Там плохо написано?
Что туда добавить, чтоб было понятно - краткую инструкцию по SaveOptions? или описание различий уи и бекэнда?
или фразу о том, что списывать надо с умом и иногда смотреть в описание используемых команд?