Код агента, который сначала создает документ и копирует в него поочередно поля из исходного документа. Копируются все поля кроме полей с типом RichText и SIGNATURE.
:
Sub Initialize
Dim recCol As NotesDocumentCollection
Dim doc As NotesDocument
Dim newDoc As NotesDocument
Dim ErrByName As string
Dim ErrByTypeItem As Long
Dim s As New NotesSession
Dim db As NotesDatabase
Dim ws As NotesUIWorkspace
Dim uivw As NotesUIView
Set db = s.CurrentDatabase
Set ws = New NotesUIWorkspace
Set uivw = ws.CurrentView
Set recCol = uivw.Documents
'<если в представлении нет выделенных документов галкой>
If recCol.Count = 0 Then
If uivw.CaretNoteID <> "0" Then
Set doc = db.GetDocumentByID(uivw.CaretNoteID)
If Not doc Is Nothing Then
Call recCol.AddDocument(doc)
End If
End If
End If
'<если в представлении нет выделенных документов галкой>
If recCol.Count = 0 Then
MsgBox "Не выбран ни один документ!"
Exit Sub
End If
If recCol.Count<>1 Then
MsgBox "Можно выделять только один документ!"
Exit Sub
End If
Set doc = recCol.Getfirstdocument()
Set newDoc = doc.Parentdatabase.Createdocument()
On Error GoTo ErrH
Dim i As Integer
i=0
ForAll ni In doc.Items
i=i+1
If ni.Type<>8 And ni.Type<>1 Then
Call newDoc.Replaceitemvalue(ni.Name, doc.Getitemvalue(ni.Name))
If ni.Type<>1 Then
ErrByName=ni.Name
ErrByTypeItem=ni.Type
End If
End If
End ForAll
Call newDoc.Save(True, False)
MsgBox "Копирование документа завершено!"
EndOfSub:
Exit sub
ErrH:
MsgBox cstr(Err) + " в строке " + CStr(Erl) + Chr(13) + "Ошибка: " + Error$ + Chr(13) + _
"Имя поля: " + ErrByName + Chr(13) + "Количество пройденных итемов=" + CStr(i) + Chr(13) +_
"Тип поля=" + CStr(ErrByTypeItem)
Resume EndOfSub
End Sub