Назначение дополнительных ролей пользователю с полными правами

1. vlhown 21.04.23 23:44 Сейчас в теме
Столкнулся со следующей ситуацией:
- для контроля возможности выполнения определенных действий создана специальная роль, которая помещена в нужные профили групп доступа;
- в группы доступа этих профилей добавлены пользователи, которым разрешено выполнять действия.

Так вот, если добавленному пользователю не назначена роль "Полные права", то выражение РольДоступна(ИмяРоли) истинно, а если назначена - ложно.

Это баг или фича?
Я понимаю, что можно использовать РольДоступна(ИмяРоли) Или РольДоступна("ПолныеПрава"), но что мне делать, если не все полноправные пользователи могут выполнять контролируемое действие?
По теме из базы знаний
Найденные решения
5. spacecraft 22.04.23 06:16 Сейчас в теме
(3) судя по всему используется БСП. Так используйте стандартные методы из нее:
Если Пользователи.РолиДоступны(ИмяРоли) Тогда ...
7. vlhown 28.04.23 17:07 Сейчас в теме
Напрасно отметил как решение предыдущий ответ - это просто проверка наличия роли как таковой.
В БСП есть функция РолиДоступны(ИменаРолей, Пользователь, УчитыватьПривилегированныйРежим) - вот она ближе всего к задаче.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. RustamZz 21.04.23 23:51 Сейчас в теме
(1) В конфигураторе надо проверить есть нужная роль или нет
3. vlhown 22.04.23 00:04 Сейчас в теме
При чем тут конфигуратор?
В конфигураторе роль создана.
В режиме предприятия эта роль добавлена в профили групп доступа - по сути назначена тем пользователям, которые входят в эти группы доступа.
В коде обработки есть конструкция
 Если РольДоступна(ИмяРоли) Тогда ... 

Так вот, если обработку выполняет пользователь, входящий в нужную группу доступа и не имеющий полных прав, то условие выполняется, и управление идет по ветке "тогда". А если обработку выполняет пользователь, входящий в нужную группу доступа и имеющий полные права, то условие не выполняется, и управление передается на ветку "иначе".
5. spacecraft 22.04.23 06:16 Сейчас в теме
(3) судя по всему используется БСП. Так используйте стандартные методы из нее:
Если Пользователи.РолиДоступны(ИмяРоли) Тогда ...
4. arz 22.04.23 05:20 Сейчас в теме
Если ты назначил пользователю полные права, то ему остального и не надо. Тебе правильно сказали - посмотри в конфигураторе или обработкой в режиме предприятия, которая показывает, какие роли назначены пользователю. Тут надо искать место(код) в конфигурации ( ну вот не помню), который отключает все лишние роли, когда назначаешь полные права в режиме предприятия.
RustamZz; +1 Ответить
6. konsta2006 24.04.23 13:10 Сейчас в теме
В общих модулях есть Функция ЕстьРоль() - она пробивает роль даже если у твоего пользователя полные права и добавлено что-то еще дополнительно.
Погугли в каком она модуле находится и перенеси ее к себе в модуль.
А лучше погугли про эту функцию, там по моему какие-то строки нужно закоментить.

У меня заработали роли из расширения даже во Фреше.
7. vlhown 28.04.23 17:07 Сейчас в теме
Напрасно отметил как решение предыдущий ответ - это просто проверка наличия роли как таковой.
В БСП есть функция РолиДоступны(ИменаРолей, Пользователь, УчитыватьПривилегированныйРежим) - вот она ближе всего к задаче.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот