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

Тема в разделе "Lotus - Программирование", создана пользователем LIGHT, 27 мар 2008.

  1. LIGHT

    LIGHT Гость

    Всем привет!

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

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

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

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Может сгодиться CopyItemToDocument + Doc.RemoveItem?
    Если QuerySave, то может перед этим придётся сделать Uidoc.Refresh(True)
     
  3. LIGHT

    LIGHT Гость

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


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

    Attachment found on more than one document

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

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
  5. allex

    allex Гость

    Код (Text):
    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
     
  6. LIGHT

    LIGHT Гость

    Вижу хелповый пример, спасибо пробовал не подошло!
     
  7. D!m@n

    D!m@n Гость

    Можно, конечно, через сохранение на диск...

    Что-то типа
    Код (Text):
    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")
     
  8. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Если не хочешь вставлять аттачи в бэкэнде, то лучше это делать в событии PostSave с последующим переоткрытием документа. Но это, имхо, не совсем правильно.
    Лучше сделать через документ-ответ. Т.е. в PostSave копируешь всё в такой документ. Это всё просто. И поле BodyTmp очистить, как я думаю, проблем не вызовет (в том же PostSave). В QuerySave возможно стоит этому полю свойство notesItem.SaveToDisk = False.
     
Загрузка...

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