Копирование Attachment

  • Автор темы LIGHT
  • Дата начала
L

LIGHT

Гость
#1
Всем привет!

Есть 2 поля:
BodyTmp и Body оба ричьтекстовые
Есть кнопка по которой в BodyTmp загоняются атачи.
При сохранении документа требуется все атачи из BodyTmp перенести в Body, т.е. скопировать в Body и очистить BodyTmp

Может кто подскажит мысль на ls

Спасибки зарание.
 

Omh

Well-Known Member
Lotus team
04.07.2007
2 210
1
37
Латвиджа, Рига
#2
Может сгодиться CopyItemToDocument + Doc.RemoveItem?
Если QuerySave, то может перед этим придётся сделать Uidoc.Refresh(True)
 
L

LIGHT

Гость
#3
Не получается
Код:
...
...
Dim items as NotesRichTextItem
Set items = doc.GetFirstItem( "BodyTmp" )
Call items.CopyItemToDocument( doc, "Body" )


Выдает интересную ошибку

Attachment found on more than one document

т.е. Атачи обнаружены более чем в одном документе ;)
 
A

allex

Гость
#5
Код:
Sub Click(Source As Button)
Dim w As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim docA As NotesDocument
Dim rtitemA As Variant
Dim rtitemB As Variant
Set uidoc = w.CurrentDocument
Set docA = uidoc.Document
Call uidoc.Save
Set rtitemA = docA.GetFirstItem( "Body" )
Set rtitemB = docA.GetFirstItem( "Body1" )
If ( rtitemA.Type = RICHTEXT And _
rtitemB.Type = RICHTEXT ) Then
Call rtitemA.AddNewLine(1)
Call rtitemA.AppendRTItem( rtitemB )
docA.body1 = " "
docA.SaveOptions = "0"
Call docA.Save(False, True)
Call uidoc.Close
End IF
End Sub
 
L

LIGHT

Гость
#6
Вижу хелповый пример, спасибо пробовал не подошло!
 
D

D!m@n

Гость
#7
Можно, конечно, через сохранение на диск...

Что-то типа
Код:
Dim doc As NotesDocument
Dim RTBodyTmp As NotesRichTextItem
Dim RTBody As NotesRichTextItem

d$="c:\temp\"

Set RTBodyTmp=doc.GetFirstItem("RTBodyTmp")
Set RTBody=doc.GetFirstItem("RTBody")

If Not IsEmpty(RTBodyTmp.EmbeddedObjects) Then
Forall obj in RTBodyTmp.EmbeddedObjects
fn$=d$ & obj.Source
Call obj.ExtractFile(fn$)
Call RTBody.EmbedObject(1454, "", fn$)
kill fn$
End Forall
End If

Call doc.RemoveItem("RTBodyTmp")
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
36
Россия, Калуга
#8
Если не хочешь вставлять аттачи в бэкэнде, то лучше это делать в событии PostSave с последующим переоткрытием документа. Но это, имхо, не совсем правильно.
Лучше сделать через документ-ответ. Т.е. в PostSave копируешь всё в такой документ. Это всё просто. И поле BodyTmp очистить, как я думаю, проблем не вызовет (в том же PostSave). В QuerySave возможно стоит этому полю свойство notesItem.SaveToDisk = False.