Directum. Как организовать блокировку записей справочника?
Спёрто
В системе DIRECTUM по умолчанию на записи справочника не устанавливаются блокировки. Например, Ольга Петровна открывает запись справочника "Входящие РКК", в это же время Михаил Андреевич открывает эту же запись. Оба пользователя вносят изменения. Ольга Петровна нажимает кнопку "Сохранить" раньше Михаила Андреевича. В этом случае все изменения Ольги Петровны сохранены не будут, а запись справочника "Входящие РКК" заполниться значениями, которые указал Михаил Андреевич.
Для того, чтобы подобной ситуации не возникало, необходимо программно реализовать механизм блокировки записей справочников, для этого:
1. В событии "Карточка \ Открытие" нужного справочника необходимо поместить вычисления, которые установят блокировку:
if Object.AccessInfo.CanUpdate
if not Object.GlobalLock.TryLockObject
Object.GlobalLock.Locked
Raise(CreateException(''; Format('Запись с ИД = %s заблокирована пользователем %s'; ArrayOf(Object.ID; Object.GlobalLock.UserName)); ecWarning))
endif
endif
2. Для разблокировки записи необходимо поместить на событие справочника "Карточка \ Закрытие" следующие вычисления:
if Object.GlobalLock.LockedByThis
Object.GlobalLock.UnlockObject
endif
Таким образом при попытке открыть на изменение заблокированную запись справочника возникнет сообщение "Запись с ИД = %s заблокирована пользователем %s" и процесс открытия будет прерван.