Создать копию документа

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

Статус темы:
Закрыта.
  1. oxystile

    oxystile Гость

    Доброе!
    нужно из открытого документа иметь возможность создавать новый
    CopyAllItems не использую, так как легче ручками прописать какие поля копируются, чем "затирать" те, кот. копировать не стоит

    так вот
    Set docA=cuid.Document
    Set docB = New NotesDocument( db )
    docB.Form="Document"

    и надо скопировать вложения из поля Attach docA в такое же поле docB, но не выходит
    не через AppendRTItem, не через CopyItemToDocument или же CopyItem
    переменные item и rtitem обозначаю правильно, согласно хелпу

    подскажите как Attach скопировать :(
     
  2. ukr

    ukr Гость

    Код (Text):
       
    Dim rtitem As NotesRichTextItem
    Dim rtitembody As NotesRichTextItem

    Set rtitem = New NotesRichTextItem(docB, "Body")
    Set rtitembody = docA.GetFirstItem("Body")
    Call rtitem.AppendRTItem(rtitembody)
    Должно работать
    ВопросиК: А новый документ создается и открывается или просто создается?
     
  3. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    oxystile
    Открытый документ был уже сохранен с вложениями?
    Или добавляются вложения (без сохранения), а потом ты пытаешься создать новый документ?

    Добавь перед копированием метод notesUIDocument.Refresh(True).
     
  4. oxystile

    oxystile Гость

    спасибо :(, код со всех сторон правильный, но результат странный получился...
    в поле Attach вложение не попало, а разместилось в конце документа, причем безликое
    Body на Attach заменила, так что не поэтому
    Set rtitem = New NotesRichTextItem(docB, "Attach")
    Set rtitembody = docA.GetFirstItem("Attach")
    Call rtitem.AppendRTItem(rtitembody)

    о! причем еще такая особенность, если запустить код дебаггером, пройдясь по каждой строчке кода, то все отлично! Attach копируется в Attach
    ощущение, что лотус просто медленно понимает чего от него хотят

    док-т создается, на основе текущего (открытого) док-та.
    Порой необходимо зерегистрировать в базе несколько однотипных документов, кот. отличается только значениями в 2-3 полях
     
  5. K-Fire

    K-Fire Гость

    Имхо вместо notesUIDocument.Refresh(True) лучше использовать RTItem.Update
     
  6. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Ну это разные вещи и одно другому не мешает. :(
     
  7. ukr

    ukr Гость

    Второй вариант надеюсь поможет:

    Код (Text):
    Dim ws As New NotesUIWorkspace
    Dim docB As NotesDocument

    Set docB = New NotesDocument( db )

    [Здесь ты копируешь все поля, кроме поля "Attach"]           

    Call ws.CurrentDocument.GotoField("Attach")
    Call ws.CurrentDocument.SelectAll
    Call ws.CurrentDocument.Copy

    Call ws.EditDocument(True, docB)
    Call ws.CurrentDocument.GotoField("Attach")
    Call ws.CurrentDocument.Paste
     
  8. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    ukr
    Нормальные человеки делают код так, что бы работало на background'е, ибо неизвестно, откуда этому коду запускаться.

    oxystile
    Как насчёт CopyItemToDocument?
     
  9. ukr

    ukr Гость

    Omh
    Я советовал код на тот вариант, если возникает потребность создать второй документ такой же как и первый, только с определенными пустыми полями и уже открытый.

    Тогда вопрос по поводу backgrounda может сняться.
     
  10. oxystile

    oxystile Гость

    получился CopyItemToDocument, наверно, в прошлый раз чета не так написала ;)
    спасибо всем!!!:):):)

    п.с. но ни notesUIDocument.Refresh(True) , ни RTItem.Update не использую
    сперва у меня
    Set docB = New NotesDocument( db )
    ' присвоение полей
    Call ws.EditDocument(True, docB )
    -и открытие на редактирование, чтобы дополнить инфой
     
Загрузка...
Статус темы:
Закрыта.

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