Тема: Вернуть ответные без главных к главным документам.
В основной базе есть ответные документы без главных.
Так бывает, когда по какйм-то причинам главные документы попали в другие базы, а ответные - остались в основной.
Данный лотус-скрипт находит в базах, указанных в коде скрипта, главные документы и переносит к ним ответные - потеряшки.
Кнопка - "Вернуть ответы"
Декларации:
Dim newdoc As NotesDocument
Dim doc As NotesDocument, maindoc As NotesDocument
Dim view As notesview, uniview As NotesView
Sub Click(Source As Button)
Dim session As New NotesSession
Dim ws As New NotesUIWorkspace
Dim db As NotesDatabase, db1 As NotesDatabase, db2 As NotesDatabase
On Error Goto ErrH
Dim str1 As String
Dim i As Integer
i=0
Set db = session.CurrentDatabase
Set db1 = session.GetDatabase(db.Server,"promdoc\documents2021.nsf")
Set db2 = session.GetDatabase(db.Server,"promdoc\documents2022.nsf")
Set view = ws.CurrentView.View
Set doc = view.getfirstdocument
While Not doc Is Nothing
Print doc.fullregnom(0)
Set uniview = db1.GetView("unids")
Set maindoc = uniview.GetDocumentByKey(doc.parent(0))
If Not maindoc Is Nothing Then Call CreateOtvet(db1)
Set uniview = db2.GetView("unids")
Set maindoc = uniview.GetDocumentByKey(doc.parent(0))
If Not maindoc Is Nothing Then Call CreateOtvet(db2)
Set doc=view.GetNextDocument(doc)
Wend
Exit Sub
ErrH:
Print "Ошибка " & Error(Err) & " в строке " & Erl
End Sub
Function CreateOtvet (db As NotesDatabase)
On Error Goto ErrH
Print "найден док по parent! CreateOtvet " db.Title
Set newdoc = uniview.GetDocumentByKey(doc.id(0))
If newdoc Is Nothing Then ' нет копии потеряшки
If maindoc.responce(0)="" Then
Print "главный - создать ответ"
Set newdoc=db.CreateDocument
Call doc.CopyAllItems(newdoc,1) ' doc - в основной БД, без главного
newdoc.UniversalID=doc.UniversalID
Call newdoc.MakeResponse(maindoc)
Call newdoc.ComputeWithForm(False, False)
Print "-1----"
Call newdoc.Save(True,False)
Print "создали в " db.Title
Call doc.Remove(False)
Print "удалили doc"
Set doc = view.GetFirstDocument
Else
Print "в архиве ответный (maindoc) " maindoc.fullregnom(0)
Set maindoc = uniview.GetDocumentByKey(maindoc.parent(0))
If Not maindoc Is Nothing Then
Print "в архиве нашелся главный у ответного " maindoc.fullregnom(0)
Set newdoc=db.CreateDocument
Call doc.CopyAllItems(newdoc,1)
newdoc.UniversalID=doc.UniversalID
Call newdoc.MakeResponse(maindoc)
Call newdoc.ComputeWithForm(False, False)
Print "-2----"
Call newdoc.Save(True,False)
Print "создали в " db.Title
Call doc.Remove(False)
Print "удалили doc"
Set doc = view.GetFirstDocument
End If
End If
Else
Print "ЕСТЬ ДУБЛЬ"
End If
Exit Function
ErrH:
Print "Ошибка ф-ции CreateOtvet " & Error(Err) & " в строке " & Erl
End Function