Тема: Вернуть ответные без главных к главным документам.
В основной базе есть ответные документы без главных.
Так бывает, когда по какйм-то причинам главные документы попали в другие базы, а ответные - остались в основной.
Данный лотус-скрипт находит в базах, указанных в коде скрипта, главные документы и переносит к ним ответные - потеряшки.
Кнопка - "Вернуть ответы"
Декларации:
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 
					