Принцип работы
Данные о том, что и у кого ограничено, заносится в справочник "Ограничения на метаданные".
Там необходима информация о том:
- Кого ограничиваем (пользователь/подразделения)
- На какой объект конфигурации распростроняются ограничения
- На какую форму объекта распростроняются ограничения
- Сами ограничиваемые элементы
- При необходимости также можно указать исключения (пользователь/подразделения)
В модуле ограничиваемой формы в событии *При создании на сервере* должен располагаться следующий код:
// Ограничение
МасНаим = СтрРазделить(ЭтотОбъект.ИмяФормы, ".", Ложь);
ОнФ_Ограничения.ПрименитьОграничения(Пользователи.ТекущийПользователь(), "Обработки.plm_ПанельСообщений", МасНаим[МасНаим.Количество()-1], Элементы);
//
Создание ограничений
Для избежания ошибок ввода предусмотрен режим выбора из списка.
Сами элементы имеют у себя префиксы в случае кнопок и таблиц, чтобы не спутать их с другими элементами:
Готовые элементы справочника в списке представлены следующим образом:
Пример работы
Предположим, что у нас встала задача ограничить у "Администратора" доступ отправленным и удаленным сообщениям в соответствующей обработке "Панель сообщений".
До ограничений панель выглядит так:
Порядок действий
1. Добавим в модуле формы наш код, который создаст взаимодействие с нашими настройками.
// Ограничение
МасНаим = СтрРазделить(ЭтотОбъект.ИмяФормы, ".", Ложь);
ОнФ_Ограничения.ПрименитьОграничения(Пользователи.ТекущийПользователь(), "Обработки.plm_ПанельСообщений", МасНаим[МасНаим.Количество()-1], Элементы);
//
2. Создадим "Ограничение" в справочнике
Готово!
Проверяем
Теперь при открытии той же панели наблюдаем:
- Видимость вкладки "Удаленные сообщения" стала отрицательной
- Кнопка и сама таблица обладают свойством Только просмотр
P.S. В составе прикрепленного расширения лежит справочник, общий модуль и перечисление. При необходимости можно легко всё перекинуть в ваше расширение/конфигурацию
Собрано на платформе 8.3.25.1386
Протестировано на платформе 8.3.20.1613
Конфигурация нетиповая - Appius-PLM