О чем этот текст?
Бредовые идеи очень часто возникают в головах руководителей, но это добавляет остроты в рабочие будни. На этот раз, они захотели завести некий почтовый ящик и слать на него различные письма. Необходимо, чтобы по нажатию кнопки из ричтекстового поля убирался текст, а вложенные файлы копировались в другую базу. При том, что стандартных подходов для переброски вложений в Lotus не предусмотрено, данный текст придется кстати против бредовых идей.
Основная часть
Dim session As NotesSession
Dim session1 As NotesSession
Dim db As NotesDatabase
Dim db1 As NotesDatabase
Dim nview As NotesView
Dim doc As NotesDocument
Dim resultdoc NotesDocument
Dim rtitem As Variant
Dim nitem As NotesItem
Set session = New notessession
Set session1 = New notessession
Set db=session.CurrentDatabase
Set db1=session1.GetDatabase("","resultbase.nsf")
REM Задаем View в которое отобрали нужные документы
Set nview=db.GetView("MyView")
REM Устанавливаем указатель документа на первый из вью
Set doc=nview.GetFirstDocument
While Not doc Is Nothing
REM создаем новый документ в другой базе
Set resultdoc= New NotesDocument( db1 )
REM берем тело письма и загоняем в richtext
REM с текстом и всеми вложениями. В письме нужное поле
REM называется Body
Set rtitem = doc.GetFirstItem( "Body" )
REM присваиваем имя формы для нового документ.
REM Форма должна существовать.
resultdoc.Form="MyForm"
REM ищем в этом документе вложения
If(doc.HasEmbedded) Then
Forall o In rtitem.EmbeddedObjects
If ( o.Type = EMBED_ATTACHMENT ) Then
REM Если находим, то перегоняем его
Set nitem = New NotesItem( resultdoc, "SBody", o.Object)
End If
End Forall
End If
REM копируем имеющийся MBody в новый документ
Call rtitem.copyitemtodocument( resultdoc, "SBody" )
REM сохраняем новый документ в новой базе
Call resultdoc.Save(True,False)
Set doc=nview.GetNextDocument(docx)
Wend
Примечание: Этот код работает не только по кнопке, но и в агенте.
Автор: Joe1000
Ссылки:
К содержанию