В процессе разработки часто возникает задача ограничить функционал или изменить логику работы программы в зависимости от того, какие права назначены текущему пользователю. Разберемся, как правильно организовать такие проверки, чтобы код был надежным и легко поддерживаемым.
Самый простой и распространенный способ узнать, назначена ли пользователю конкретная роль — это использование глобального метода РольДоступна(). Этот метод позволяет проверить, входит ли указанная роль в набор прав текущего пользователя.
Разберем синтаксис и правила использования:
Булево: Истина, если роль активна для пользователя, и Ложь в противном случае.Посмотрим на практический пример использования:
Если Не РольДоступна("Менеджер") Тогда
Сообщить("У вас недостаточно прав для выполнения этой операции!");
Возврат;
КонецЕсли;
Важное примечание: При использовании строкового литерала будьте внимательны. Если вы переименуете роль в конфигураторе, строковая проверка может перестать работать. Для большей надежности можно обращаться к роли через менеджер метаданных:
мдРоль = Метаданные.Роли["Менеджер"];
Если РольДоступна(мдРоль) Тогда
// Действия для менеджера
КонецЕсли;
Часто программисты пытаются привязаться к имени конкретной роли, например, «Бухгалтер». Однако такой подход не всегда является лучшей практикой. В типовых конфигурациях, таких как 1С:Бухгалтерия 3.0, права часто распределены по разным ролям, и пользователь может обладать правами бухгалтера, даже не имея роли с названием «Бухгалтер».
Для проверки возможности выполнения конкретного действия над объектом метаданных правильнее использовать функцию ПравоДоступа().
Разберем преимущества этого подхода:
Пример проверки права на чтение справочника:
Если ПравоДоступа("Чтение", Метаданные.Справочники.Контрагенты) Тогда
// Пользователь имеет право на чтение справочника
КонецЕсли;
Если вы ведете разработку в типовой конфигурации (БП 3.0, УТ 11, ERP), помните, что в них используется Библиотека Стандартных Подсистем (БСП). В таких системах реализован механизм Профилей групп доступа.
Вместо жесткой проверки ролей программным кодом, рассмотрите следующие советы:
УправлениеДоступом. Это позволяет проверять права более гибко, опираясь на настройки, сделанные администратором в режиме «1С:Предприятие».ПравоДоступа() или механизмы подсистемы управления доступом защитит ваш код от поломок при очередном обновлении программы.Мы проанализировали основные инструменты для проверки прав пользователя:
РольДоступна().ПравоДоступа().УправлениеДоступом, чтобы обеспечить совместимость с типовой логикой настройки прав.Использование этих подходов позволит вам создавать качественные и надежные дополнения к системе, которые не потребуют доработки при каждом изменении ролевой модели организации.