1

Тема: Проверка, при отправке, что открыт ответный докумнет

На кнопку отправки документа можно добавить проверку - что один из ответных документов открыт у пользователя.
Выдаст название документа и фио "заблокировавшего".

' Проверка открытого ответа
    Set strukdb = session.GetDatabase(server, "promdoc\policy.nsf" , False )
    Set view = strukdb.GetView("counteropen")
    Set dc = curdoc.Responses   
    
    Dim ftdoc2 As NotesDocument   ' в структуре ищем открытый док
    Set ftdoc = dc.GetFirstDocument ' ответ в докобороте
    While Not ftdoc Is Nothing    
        idopen=ftdoc.id(0)    ' unid ответного дока в докобороте
        Set ftdoc2=view.GetDocumentByKey(idopen)
        If Not(ftdoc2 Is Nothing) Then
            Msgbox {Ответный документ "} &    ftdoc.header(0) & {" открыт у } & ftdoc2.FIO(0)
            Exit Sub
        Else
            Print ftdoc.header(0) "ответ закрыт у юзера"
        End If
        Set nextftdoc = dc.GetNextDocument (ftdoc )
        Set ftdoc=nextftdoc
        Set nextftdoc=Nothing
    Wend    

Поделиться

2

Re: Проверка, при отправке, что открыт ответный докумнет

Агент clearUnids: очищает поле idopendoc и empty, если они не пустые

Option Public

Sub Initialize
    Print "START clearUnids"
    On Error Goto ErrH
    ' Очищает поле Unids в документах(открытые пользоватлем документы) по view StrukChoice2
    Dim session As New NotesSession
    Dim currdoc As NotesDocument
    Dim nextdoc As NotesDocument
    Dim db As NotesDatabase
    Dim item As notesitem
    Dim view As NotesView
    Set db = session.CurrentDatabase
    Set view = db.getview("people")
    Print view.Name
    Set currdoc = view.Getfirstdocument()
    While Not (currdoc Is Nothing)
        Set item = currdoc.GetFirstItem("idopendoc")
        If item.Text<>"" Then
        currdoc.idopendoc = ""
        currdoc.empty = ""
        currdoc.save True, False
        Print currdoc.FIO(0) " idopendoc ОЧИЩЕН "
    End If    
        Set currdoc = view.getnextdocument(currdoc)    
    Wend
    Print "END clearUnids"
    Exit Sub
ErrH:
    Print "Ошибка " & Error(Err) & " в строке " & Erl
End Sub

Поделиться

3

Re: Проверка, при отправке, что открыт ответный докумнет

А вот сама отправка ответного дока, вариант с открытием в УИ интерфейсе:

Set dc = curdoc.Responses
    
    Set ftdoc = dc.GetFirstDocument    
    While Not ftdoc Is Nothing
        If ftdoc.IsValid=False Then 
            Print "Документ не валидный"
        Else
            Set ftuidoc = ws.EditDocument( False, ftdoc , True ,  , True, False )
                        ftdoc.who = curdoc.who
            ftdoc.whois = curdoc.whois
            ftdoc.addreaders = curdoc.addreaders
            ftdoc.addauthors = curdoc.addauthors
'        ftdoc.hierarchy = curdoc.hierarchy
            ftdoc.history=mes2+ftdoc.history(0)
            ftdoc.save True, False
                        If ftdoc.responce(0)="1"  Then Call ftuidoc.Close(True)
        End If
        Set nextftdoc = dc.GetNextDocument (ftdoc )
        Set ftdoc=nextftdoc
        Set nextftdoc=Nothing
        

    Wend

Поделиться

4

Re: Проверка, при отправке, что открыт ответный докумнет

А еще на события базы Postopen и Queryclose повесил отчистку idopendoc и  empty.

Sub Postopen(Source As Notesuidatabase)
    Print "Открыли базу"
    On Error Goto ErrH
    Dim session As New NotesSession
    Set db = session.CurrentDatabase
    server = db.Server
    user = session.CommonUserName
    Dim item As NotesItem
    Dim idopen As String
   
    Dim view As NotesView, docreg As NotesDocument
    Set view = db.GetView ("reg" )
    Set docreg = view.GetFirstDocument
    PolicyPatch$ = docreg.PolicyPatch(0) + ".nsf"
    Print  PolicyPatch$
   
    Set strukdb = session.GetDatabase(server, PolicyPatch$ , False )
    Set view = strukdb.GetView("notespeople")
   
    Set ftdoc=view.GetDocumentByKey(user)
    If Not(ftdoc Is Nothing) Then
        ftdoc.idopendoc=""
        ftdoc.empty = ""
        ftdoc.computewithform False, False
        Call ftdoc.Save(True,True)
        Print "очистили"
    Else
        MsgBox "Пользователь не найден в БД структура!"
    End If
    Exit Sub
ErrH:
    Print "Ошибка  Postopen" & Error(Err) & " в строке " & Erl   
End Sub

Поделиться