1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

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

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

  1. morpheus

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

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

    Ответ

    в Queryopen ставим
    Код:
    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 ставим
    Код:
    @If(@DocLock([Status]) = "";@Do(@DocLock([Lock]);@StatusBar("Locking Succesfull"));@StatusBar("Already locked. Document is already locked by " + @DocLock([Status])))
    в QueryClose + Terminate ставим
    Код:
    @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'ного док-та
      LOck.jpg
      Размер файла:
      45,8 КБ
      Просмотров:
      331
Загрузка...

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