Тема: Перенос документов между базами.
Данный скрипт переносит все документы в новую базу с вида "admin_allwork", при этом синхронизируются по названию организации поля типа авторы и ридеры, так же сохраняются unid у документов.
Sub Click(Source As Button)
Dim session As New NotesSession
Dim ws As New NotesUIWorkspace
Dim db As NotesDatabase
Dim db2 As NotesDatabase
Dim view As NotesView, view2 As notesview
Dim dc As NotesDocumentCollection
Dim curdoc As NotesDocument, doc As NotesDocument, ftdoc As NotesDocument, newdoc As NotesDocument
Dim nextdoc As NotesDocument
Dim item As NotesItem, item2 As NotesItem, item3 As NotesItem
Dim server As String, formula As String, str1 As String
Dim i As Variant
i=0
On Error Goto ErrH
server=session.CurrentDatabase.Server
Set db2=session.GetDatabase(server,"promdoc\documentsПриемник.nsf")
Set db=session.GetDatabase(server,"promdoc\documentsИсточник.nsf") '
Set curdoc=ws.CurrentDocument.Document
Set view=db.GetView("admin_allwork")
Set doc=view.GetFirstDocument
While Not doc Is Nothing
' Set item2=doc.GetFirstItem("empty")
' doc.empty=""
Print doc.header(0)
' Set item=doc.GetFirstItem("who") ' замена поля Расматривает
' Forall v In item.Values
' v = "CN=" + v + "/O=inf"
' Print v
' Call item2.AppendToTextList(v)
' End Forall
' doc.who=doc.empty
' item.IsAuthors= True
' doc.empty=""
' Set item=doc.GetFirstItem("addauthors") ' замена поля addauthors
' Forall v In item.Values
' v = "CN=" + v + "/O=inf"
' Call item2.AppendToTextList(v)
' End Forall
' doc.addauthors=doc.empty
' item.IsAuthors= True
' doc.empty=""
' Set item=doc.GetFirstItem("addreaders") ' замена поля addreaders
' Forall v In item.Values
' v = "CN=" + v + "/O=inf"
' Call item2.AppendToTextList(v)
' End Forall
' doc.addreaders=doc.empty
' item.IsReaders= True
' doc.empty=""
'---------------обработка ответных документов
' Set dc=doc.Responses
' Set ftdoc=dc.GetFirstDocument
' While Not ftdoc Is Nothing
' ftdoc.who = doc.who
' ftdoc.addauthors=doc.addauthors
' ftdoc.addreaders=doc.addreaders
' Call ftdoc.ComputeWithForm(0,0)
' Call ftdoc.Save(True, False)
' Print "Создаем Ответный док в Цифре"
' Set newdoc=db2.CreateDocument
' Call ftdoc.CopyAllItems(newdoc,1)
' newdoc.UniversalID=ftdoc.UniversalID
' newdoc.smi = "1"
' Call newdoc.ComputeWithForm(0,0)
' Call newdoc.Save(True,False)
' Print "Создали Ответ"
' Set ftdoc=dc.GetNextDocument(ftdoc)
' Wend
Print "Создаем Главный док в Цифре"
' Call doc.Save(True, False)
Set newdoc=db2.CreateDocument
Call doc.CopyAllItems(newdoc,1)
newdoc.UniversalID=doc.UniversalID
newdoc.smi = "1"
Call newdoc.ComputeWithForm(0,0)
Call newdoc.Save(True,False)
Print "Создали Главный"
Set nextdoc = view.getnextdocument(doc)
Set doc=nextdoc
Set nextdoc=Nothing
i=i+1
Print Cstr(i)
'If i = 1 Then Exit Sub
Wend
Msgbox "Замена прошла успешно"
Exit Sub
ErrH:
Msgbox "Ошибка " & Error(Err) & " в строке " & Erl
Exit Sub
End Sub