1. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

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

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

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

    oxystile Гость

    Репутация:
    0
    Доброе!
    нужно из открытого документа иметь возможность создавать новый
    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 Гость

    Репутация:
    0
    Код:
    	
    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

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

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

    oxystile Гость

    Репутация:
    0
    спасибо :(, код со всех сторон правильный, но результат странный получился...
    в поле 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 Гость

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

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

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

    ukr Гость

    Репутация:
    0
    Второй вариант надеюсь поможет:

    Код:
    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 Well-Known Member
    Lotus team

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

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

    ukr Гость

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

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

    oxystile Гость

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

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

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