1

Тема: Блокировка документов, находящихся у руководителя.

Всё что у руководителя - заблокировано у всех сотрудников.

На событие открытия документа стоит следующий код:

Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
  Dim session As New NotesSession
  user = session.CommonUserName
  Print "Queryopen"
  Dim ruk As String
  ruk = Counteropen(Source)
  Print  "Counteropen:"   ruk
  If ruk  = "Block" Then Msgbox "Документ у Руководителя!"  : continue=False

Поделиться

2

Re: Блокировка документов, находящихся у руководителя.

В Counteropen мы даем функции значения
Block - если в who есть руководитель
NotLock - для людей с такой ролью.
Rukovod - у руководителя

vipuser - у руководителя - первый док в виде signers

Function Counteropen(Source As NotesUIDocument) As String
......
Counteropen = ""
....
If Source.IsNewDoc Then
    Print "НОВЫЙ ДОК"
    Counteropen ="new_doc"
  Else
    
    idopen=Source.Document.UniversalID
    Set strukdb = session.GetDatabase(server, "promdoc\policy.nsf" , False )
    
    Set view = strukdb.GetView("signers")
    Set ftdoc = view.GetFirstDocument 
    vipuser = ftdoc.FIO(0)
    Print "В структуре руководитель (vipuser)  "  vipuser
    If user  = vipuser  Then  Counteropen ="vipuser"
    
    Set view = strukdb.GetView("notespeople")
    
    Set ftdoc=view.GetDocumentByKey(user)
    If Not(ftdoc Is Nothing) Then
      Set item=ftdoc.GetFirstItem("idopendoc")
      Call item.AppendToTextList(idopen)   'Записаsли открытие дока в структуру
      ftdoc.computewithform False, False
      Call ftdoc.Save(True,True)  

      If ftdoc.Defolt(0) = "1" Then   '  Ты руководитель!
      Counteropen = "Rukovod" 
        Else ' простой чел
          Set item = Source.Document.GetFirstItem ( "who" )
        If Not item Is Nothing Then
          ForAll v In item.Values
            If v = vipuser  Then Print "Ты обычный чувак   - а РУК рассм док!" :  Counteropen ="Block"
          End ForAll    
        End If          
        End If
    Else
      Msgbox "Пользователь не найден в БД структура! функц. Counteropen"
    End If
    
    n=Null  
    roles = Session.Currentdatabase.QueryAccessRoles(Session.UserName )
    If roles(0)<>""Then   n=ArrayGetIndex(roles,"[NotLock]")    
    If  Not IsNull(n)  Then Counteropen ="NotLock"
    
  End If

Поделиться