Базовая задача - Как сделать что то особенное при открытии формы журнала документа или формы документа, аналогичное решение возможно для формы списка справочника или его элемента.
В своей практике я применял раскрываемую методику и для менее очевидных ситуаций: разрешения продажи ниже цены заданной определенным видом цен, разрешения изменения конкретного реквизита справочника или документа.
Обобщим: Данный прием является неканоническим использованием БСПшной надстройки над управлением правами без использования ролей. Таким образом не плодя новых ролей, а только используя профили групп доступа и сами группы доступа мы можем определить для пользователей новые функциональные полномочия которые никак не пересекаются с имеющимися правами доступа к данным.
Особенно полезна данная методика при работе с клиентами у которых все пользователи имеют полные права (входят в группу доступа администраторы), что как правило бывает на начальных этапах внедрения и при невозможности заказчика сформулировать вменяемую модель разделения полномочий по пользователям так и остается навсегда. Ибо при такой ситуации опираться на роли пользователя принципиально не возможно.
Итак как эта халабуда настраивается и управляется:
1. Создаем пустой (без назначенных ролей) профиль групп доступа.
2. На его основании создаем группу доступа с наименованием ассоциирующемся с управляемым ею полномочием. В нашем примере - "Полный доступ к заказам".
3. В группу доступа назначаем пользователей которым выдается данное полномочие. (Объясняем заказчику что выдача или отмена полномочия управляется включением пользователя в данную группу)
4. Вносим изменения в метаданные или реализуем расширение к конфигурации как в данном примере.
Расширение тестировалось на конфигурации УТ 11.4.11.71.
Прилагаемое расширение дополняет функционал только трех форм заказа клиента:
Формы Документа - чтобы предотвратить открытие "чужого" заказа
Формы списка документов - чтобы "спрятать" чужие документы в списке.
Формы списка - чтобы "спрятать" чужие документы в списке, если вдруг форму списка открыли через команду "все функции"
В формах списка дополнение работает так: Если текущий пользователь не имеет полномочия "Полный доступ к заказам" то при открытии формы для него устанавливается принудительный отбор по менеджеру (третья картинка), выдается сообщение "Доступ к заказам ограничен по менеджеру <текущий пользователь>". И на форме скрывается реквизит "Менеджер" управляющий отбором.
При попытке в режиме ограниченного доступа формы установить альтернативный отбор по менеджеру через настройку списка мы получаем сообщение об ошибке применения фиксированных настроек - пересекаются элементы отбора. Ровно то же самое происходит в типовой конфигурации при установке отбора в поле "менеджер" формы списка и попытке установки альтернативного отбора по иному пользователю через настройку списка. Так что это стандартное поведение.
В форме документа, если пользователю не имеющему полномочия "Полный доступ к заказам", каким то образом удалось попытаться открыть документ выполняется проверка возможности доступа. Открытие предотвращается и пользователю выдается сообщение - "Вы не имеете полномочия открыть чужой заказ!"
Вообще данное поведение спорно, возможно рациональнее открывать заказ в режиме только чтение.
Безусловно, что предлагаемое решение, в отличие от RLS, не прячет заказы клиентов "везде". Например в отчетах все и всегда будет видно. Однако на мой взгляд, достаточно предотвратить изменение чужих заказов, и задача будет решена гораздо меньшей кровью чем полноценное использование RLS.
Управляющая полномочием группа доступа должна иметь наименование "Полный доступ к заказам"!
Описание контрольного примера
1. Введены пользователи Администратор, П1 и П2. все пользователи с пустыми паролями.
2. Организована группа доступа "Полный доступ к заказам" и в нее включен Администратор.
3. Внесены два контрагента "клиент 1" и "клиент 2".
4. Записано три документа заказ клиента по одному от каждого пользователя.
Входя в предприятие под разными пользователями вы можете проверить поведение системы в журнале документов заказ клиента и в форме списка этого же документа.
P/S
Контрольный пример размером 525 мб загрузить не получается.
Всем кто возьмет расширение отправлю по запросу ссылку с контрольным примером с гугл диска.