Запрет открытия Lock'ного док-та

Тема в разделе "Oбщий функционал", создана пользователем morpheus, 30 май 2007.

  1. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Вопрос
    Суть
    В 6ке появился новый метод Lock у notesDocument. Он запрещает редактирование документа более чем одному пользователю одновременно. А вот открытие этого документа, при условии что ктото другой(в этот момент) уже редактирует? Как отследить?

    Ответ

    в Queryopen ставим
    Код (Text):
    Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
    Dim doc As NotesDocument
    Dim session As New notessession
    Dim user As notesname
    Dim Lockers As Variant
    Set doc = source.Document
    expression = "@DocLock([STATUS])"
    Lockers= Evaluate(expression,Doc)
    Set user = New NotesName(Cstr(session.UserName))
    If Cstr(Lockers(0))="" Then
    Continue=True
    Else
    Continue=False
    Forall names In lockers
    If names= Cstr(user.Abbreviated) Then
    Continue=True
    Else
    Continue=False
    End If
    End Forall   
    End If
    If  Continue=False Then
    Msgbox "Документ сейчас открыт пользователем " + Cstr(Lockers(0)) + Chr(13) + "Свяжитесь с ним или администратором если вам необходимо открыть этот документ" + Chr(13) + "Или попросите пользователя открыть этот документ и закрыть.",64,"Locking"
    End If
    End Sub
    в PostOpen ставим
    Код (Text):
    @If(@DocLock([Status]) = "";@Do(@DocLock([Lock]);@StatusBar("Locking Succesfull"));@StatusBar("Already locked. Document is already locked by " + @DocLock([Status])))
    в QueryClose + Terminate ставим
    Код (Text):
    @If(@IsNotMember(@V3UserName;@DocLock([Status]));@StatusBar("Not authorized Document was locked by " +@DocLock([Status]) + ". Contact the lock owner");@Do(@DocLock([Unlock]);@StatusBar("Document Unlocked")))
    Автор - Koyote23

    Обсуждение

    Комментарий модератора
    Не совсем понятно почему автор не использует LockHolders property , а использует
    expression = "@DocLock([STATUS])" Lockers= Evaluate(expression,Doc)

    Не забываем включить в опциях БД возможность лочить документы, и указываем Master lock server
     

    Вложения:

    • LOck.jpg
      LOck.jpg
      Размер файла:
      45,8 КБ
      Просмотров:
      323
Загрузка...

Поделиться этой страницей