1C Ограничения по ролям

Автор: | 08.02.2022

1C Как ограничить доступ к некоторым реквизитам документа для определённой роли программно

В 1С можно настроить ограничения по ролям, т.е. запретить пользователям с определенной ролью изменять какие либо реквизиты или объекты конфигурации. Например, при создание или открытии какого либо документа (справочника) можно запретить изменять номер, дату или другие необходимые элементы. На практики подобные задачи встречаются довольно часто, так как некоторые пользователи могут поменять дату документ или его номер, тем самым нарушить учет документооборота. Реализовать все это достаточно просто.

Программное ограничения по ролям в 1С

Допустить у нас в базе есть роль «Пользователь» и нам необходимо всем учетным записям с данной ролью запретить изменять номер и дату документа поступления, а так же указывать в поле «Ответственный» наименование роли.

1C Ограничения по ролям

Для этого в обработчике события «При создании на сервере» пишем вот такой код.

Если РольДоступна("Пользователь") Тогда
     Элементы.Номер.РедактированиеТекста = Ложь;
     Элементы.Дата.РедактированиеТекста = Ложь;
     Объект.Отвественный = Справочники.Пользователи.НайтиПоКоду("000000002");
     Сообщить("У Вас не хватает прав для редактирования реквизитов документа!!!");
КонецЕсли;

Думаю в нем все понять, если учетная запись под которой создается документ имеет роль «Пользователь» тогда запрещаем редактировать «Номер», «Дату» и в поле «Ответственный» подставляем значение из справочника «Пользователи» которое найдем по коду. Под данным кодом в справочнике находиться «Пользователь».

1C Как ограничить доступ к некоторым реквизитам документа для определённой роли программно

Запустим 1С и посмотрим что получилось, в итоге ввести что-то с клавиатуры в поля «Номер», «Дата» не получиться.

1C Как ограничить доступ к некоторым реквизитам для определённой роли

Но если у данного поля есть возможность выбора, например, как у даты то изменить её все же буде возможно.

1C Как ограничить доступ к некоторым реквизитам для определённой роли программно

Для того чтобы исключить подобную ситуацию можно отключить доступность, без ограничения редактирования.

Элементы.Дата.Доступность = Ложь;
Элементы.Номер.Доступность = Ложь;
Элементы.Отвественный.Доступность = Ложь;
1C отключаем доступность

В этом случае пользователь уже ни чего не сможет сделать.

1С как отключить доступность по ролям

Вариантов реализации подобных задач очень много, я показал один из, возможно он даже не самый оптимальной. Если Вы знаете другой обязательно поделитесь!!!

Кстати механизм подставления «Ответственного» тут не совсем корректен, так как в базе может быть много пользователей 10, 20 и если у всех у них есть роль «Пользователь» то она и будет подставляться, тут необходимо подставлять имя пользователя а не роли, с помощью ПользователиИнформационнойБазы.ТекущийПользователь() но об этом в следующей статье.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *