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

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

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

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

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

  • Автор темы LIGHT
  • Дата начала
L

LIGHT

Всем привет!

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

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

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

Omh

Может сгодиться CopyItemToDocument + Doc.RemoveItem?
Если QuerySave, то может перед этим придётся сделать Uidoc.Refresh(True)
 
L

LIGHT

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



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

Attachment found on more than one document

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

allex

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

LIGHT

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

D!m@n

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

Что-то типа
Код:
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")
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Если не хочешь вставлять аттачи в бэкэнде, то лучше это делать в событии PostSave с последующим переоткрытием документа. Но это, имхо, не совсем правильно.
Лучше сделать через документ-ответ. Т.е. в PostSave копируешь всё в такой документ. Это всё просто. И поле BodyTmp очистить, как я думаю, проблем не вызовет (в том же PostSave). В QuerySave возможно стоит этому полю свойство notesItem.SaveToDisk = False.
 
Мы в соцсетях:

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