ОБСУЖДЕНИЕ

Как Программно (на Ls) Узнать Кто Редактирует Документ? (без Использов

11 ответов 5,9 тыс.
AI-выжимка обсуждения скоро
Задача:
Документ сразу открывается в режиме редактирования.
Перед открытием надо узнать не редактирует ли другой пользователь этот документ, и если да, то открыть в режиме просмотра.

Пояснение:
Задача на открытие документа в пределах одной реплики БД, так как при открытии на разных репликах сообщение о блокировке не появляется, а проблему конфликта решил.

От себя:
Форумы читал, но нужного ответа не нашел.

Своё решение есть (открытие в режиме просмотра, в PostOpen перевод в EditMode. Если занято, то выскакивает сообщение, и после этого пользователь остается в режиме просмотра). Это решение работает и всех устраивает, но мне не нравится!!! Немного коряво и чувствую, что решение есть, так как в выскакивающем сообщение написано кто блокирует. У меня чисто профессиональный интерес.

Если использовать режим блокировки, то всё ясно. Но надо без включения этого режима.
Создание самописной блокировки... Понятно! Не пойдет.
Заранее спасибо.
 
Своё решение есть (открытие в режиме просмотра, в PostOpen перевод в EditMode. Если занято, то выскакивает сообщение, и после этого пользователь остается в режиме просмотра).
в свойствах формы - 2я закладка
Automatically enable Edit Mode

Добавлено:
Перед открытием надо узнать не редактирует ли другой пользователь этот документ

поле $Writers - в случае если включена стандартная блокировка
 
в свойствах формы - 2я закладка
Automatically enable Edit Mode

Так в этом решение. Если сразу в EditMode, то после сообщения пользователь остается в виде. А у меня остается в документе в режиме просмотра.

поле $Writers - в случае если включена стандартная блокировка
Так в этом и задачка. Режим блокировки в базе не включать, И как я понимаю, поле $Writers появляется только в случае включения режима блокировки.
 
Своё решение есть (открытие в режиме просмотра, в PostOpen перевод в EditMode. Если занято, то выскакивает сообщение, и после этого пользователь остается в режиме просмотра). Это решение работает и всех устраивает, но мне не нравится!!! Немного коряво и чувствую, что решение есть, так как в выскакивающем сообщение написано кто блокирует. У меня чисто профессиональный интерес.
Это soft locking в действии. Фича малоизученная и потому неоднозначная. Может отравлять жизнь разработчику вообще и фоновым агентам в частности...
Скриптом до нее можно добраться через апишные NSFDbNoteLock/NSFDbNoteUnlock. Тут можно посмотреть пример кода.
 
Это soft locking в действии. Фича малоизученная и потому неоднозначная. Может отравлять жизнь разработчику вообще и фоновым агентам в частности...
Скриптом до нее можно добраться через апишные NSFDbNoteLock/NSFDbNoteUnlock. Тут можно посмотреть пример кода.
ОГРОМНОЕ СПАСИБО! Всё получилось. Я чувствовал, что можно обойтись без включения режима блокировки!!!
1. Взял библиотеку из статьи и положил её в БД под именем "SoftLocking".
2. На форме в разделе [Option] подключил эту библиотеку Use "SoftLocking"
3. В событии QueryOpen использую ф-цию IsDocSoftLocked
Dim doc As NotesDocument
Dim doc As NotesDocument
Set doc=Source.DOCUMENT
If IsDocSoftLocked(doc) Then
Print"Документ заблокирован"
Else
Print"Документ свободен"
End If
ВСЁ СУПЕР!!!
 
AndyOrlov
Посмотрите тут, ещё один вариант блокировки документа
 
AndyOrlov
Посмотрите тут, ещё один вариант блокировки документа
Спасибо за ссылку!
Но это же вариант рукописной блокировки с использованием полей, видов и событий Open и Close. Я сразу отказался от такого варианта, так как в случае сбоя надо подчищать поля. Из-за этого же я и со службой блокировки связываться не хотел.
Вариант, который прислал turumbay я считаю 100% попаданием для решения моей задачи.
Ещё раз огромное ему СПАСИБО!
 
AndyOrlov
эээ при включении дебагера такая блокирувка обходиться на ура
 
непонятна цель действий...
нотус не РСУБД и устраивать подобные "фокусы" просто нет смысла
 
AndyOrlov
имел в виду любые вызовы блокировки документа, которые происходят в интерфейсе пользователя скриптом.
 

Статистика тем

Создано
AndyOrlov,
Последний ответ от
AndyOrlov,
Ответы
11
Просмотры
5 920