• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы 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 скопировать :(
 
U

ukr

Код:
Dim rtitem As NotesRichTextItem
Dim rtitembody As NotesRichTextItem

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

Должно работать
ВопросиК: А новый документ создается и открывается или просто создается?
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
oxystile
Открытый документ был уже сохранен с вложениями?
Или добавляются вложения (без сохранения), а потом ты пытаешься создать новый документ?

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

oxystile

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

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

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

K-Fire

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

ukr

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

Код:
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
 
O

Omh

ukr
Нормальные человеки делают код так, что бы работало на background'е, ибо неизвестно, откуда этому коду запускаться.

oxystile
Как насчёт CopyItemToDocument?
 
U

ukr

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

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

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

oxystile

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

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!