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

  • Автор темы Автор темы oxystile
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
O

oxystile

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

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

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

подскажите как Attach скопировать :(
 
Код:
Dim rtitem As NotesRichTextItem
Dim rtitembody As NotesRichTextItem

Set rtitem = New NotesRichTextItem(docB, "Body")
Set rtitembody = docA.GetFirstItem("Body")
Call rtitem.AppendRTItem(rtitembody)

Должно работать
ВопросиК: А новый документ создается и открывается или просто создается?
 
oxystile
Открытый документ был уже сохранен с вложениями?
Или добавляются вложения (без сохранения), а потом ты пытаешься создать новый документ?

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

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

док-т создается, на основе текущего (открытого) док-та.
Порой необходимо зерегистрировать в базе несколько однотипных документов, кот. отличается только значениями в 2-3 полях
 
Имхо вместо notesUIDocument.Refresh(True) лучше использовать RTItem.Update
 
Второй вариант надеюсь поможет:

Код:
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
 
ukr
Нормальные человеки делают код так, что бы работало на background'е, ибо неизвестно, откуда этому коду запускаться.

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

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

Тогда вопрос по поводу backgrounda может сняться.
 
получился CopyItemToDocument, наверно, в прошлый раз чета не так написала ;)
спасибо всем!!!:):):)

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

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab