Как проверить роль у администратора системы? (или полные права)
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Для проверки прав доступа в коде следует использовать метод ПравоДоступа.
Например, неправильно:
Если РольДоступна("ДобавлениеИзменениеСтранМира") Тогда ...
Если РольДоступна("ПросмотрОтчетаПопулярныеСтраны") Тогда ...
правильно:
Если ПравоДоступа("Редактирование", Метаданные.Справочники.СтраныМира) Тогда ...
Если ПравоДоступа("Просмотр", Метаданные.Отчеты.ПопулярныеСтраны) Тогда ...
Такой подход позволяет повысить устойчивость кода к пересмотру состава ролей в конфигурации.
4. В тех случаях, где роль не дает никаких прав на объекты метаданных, а служит только для определения того или иного дополнительного права, следует использовать метод РольДоступна. При использовании в конфигурации Библиотеки стандартных подсистем (БСП) следует использовать функцию РолиДоступны общего модуля Пользователи:
Например, без использования БСП:
Если РольДоступна(...) Или <ЭтоПолноправныйПользователь> Или ПривилегированныйРежим() Тогда ...
Либо аналогичная проверка с использованием БСП:
Если Пользователи.РолиДоступны(...) Тогда ...
Без изменения самой функции - никак. В БСП очень странно сделано при вызове функции "РолиДоступны" пользователь проверяется ещё и на полноправность. Это есть в описании функции. Вам нужно будет использовать глобальную функцию "РольДоступна", которая показывает наличие конкретной роль у текущего пользователя безотносительно наличия у него полных прав.
На базе БСП есть общий модуль "Пользователи"
Если у пользователи есть роли "Кладовщик" или роль "ПолныеПрава", тогда будет ИСТИНА
ИСТИНА будет, только если есть роль "Кладовщик", если "ПолныеПрава" и нет роли "Кладовщик", тогда будет ЛОЖЬ
Или я что-то не так понимаю?
Если у пользователи есть роли "Кладовщик" или роль "ПолныеПрава", тогда будет ИСТИНА
ЕстьПраво = Пользователи.РолиДоступны("Кладовщик");
ИСТИНА будет, только если есть роль "Кладовщик", если "ПолныеПрава" и нет роли "Кладовщик", тогда будет ЛОЖЬ
ЕстьПраво = РольДоступна("Кладовщик");
Или я что-то не так понимаю?
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот