Не срабатывает проверка прав РольДоступна()
Добрый день! Кто сталкивался, когда не срабатывает конструкция с собственными ролями, прошу помочь!
Разрабатываю права для Ответственного за список начислений (тестирую на своем примере):
1) Создала в конфигураторе роль «ИзменятьВидыНачисленийУдержаний»
2) Создала профиль «Изменять виды начислений, удержаний» с единственной разрешенной ролью «ИзменятьВидыНачисленийУдержаний»
3) Создала группу «Изменять виды начислений, удержаний» с профилем «Изменять виды начислений, удержаний»
4) Включила себя в эту группу
РЕЗУЛЬТАТ: не разрешает мне сохранять изменения в виде начисления. В отладчике РольДоступна("ИзменятьВидыНачисленийУдержаний") возвращает Ложь. Что не так сделано?
Разрабатываю права для Ответственного за список начислений (тестирую на своем примере):
1) Создала в конфигураторе роль «ИзменятьВидыНачисленийУдержаний»
2) Создала профиль «Изменять виды начислений, удержаний» с единственной разрешенной ролью «ИзменятьВидыНачисленийУдержаний»
3) Создала группу «Изменять виды начислений, удержаний» с профилем «Изменять виды начислений, удержаний»
4) Включила себя в эту группу
РЕЗУЛЬТАТ: не разрешает мне сохранять изменения в виде начисления. В отладчике РольДоступна("ИзменятьВидыНачисленийУдержаний") возвращает Ложь. Что не так сделано?
По теме из базы знаний
Найденные решения
(6) Да, группа Администраторы "вытесняет" все назначаемые роли, кроме своих собственных - Полные права и Администрирование. Для проверки наличия роли с учетом полноправных пользователей используйте любой из следующих методов:
ЕстьПраво = Пользователи.РолиДоступны("ИмяРоли");
ЕстьПраво = УправлениеДоступом.ЕстьРоль("ИмяРоли");
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(4) Спасибо, dhurricane! Дело действительно оказалось в правах типовой группы Администраторы. Видимо, программа при максимальных правах текущего пользователя не анализирует остальной перечень присвоенных ему прав, вроде логично. Сама бы не догадалась, хотя, припоминается, где-то об этом слышала раньше...
(6) Да, группа Администраторы "вытесняет" все назначаемые роли, кроме своих собственных - Полные права и Администрирование. Для проверки наличия роли с учетом полноправных пользователей используйте любой из следующих методов:
ЕстьПраво = Пользователи.РолиДоступны("ИмяРоли");
ЕстьПраво = УправлениеДоступом.ЕстьРоль("ИмяРоли");
Собственная роль - это, конечно, хорошо. А права у этой роли на изменение видов начислений и удержаний есть? В журнале регистрации фиксируется отказ в доступе по какому праву? В вашем случае <ВИД НАЧИСЛЕНИЙ И УДЕРЖАНИЙ> это что?
Тоже чего-то встрял на ровном месте.
Служебная роль создана и РольДоступна() не видит её у пользователя.
Тоже назначение роли, что бы даже полноправный не мог открыть форму без этой роли. Вопрос, что полноправный может её себе сам назначить - не поднимаем сейчас. Вопрос - почему РольДоступна() не видит эту роль у пользователя...?
Регистр сведений ПраваРолей обновил данные регистра.
БСПшные функции не подходят, так как при наличии у пользователя полных прав - всегда возврат будет истина.
Но почему же РольДоступна() не работает?
Служебная роль создана и РольДоступна() не видит её у пользователя.
Тоже назначение роли, что бы даже полноправный не мог открыть форму без этой роли. Вопрос, что полноправный может её себе сам назначить - не поднимаем сейчас. Вопрос - почему РольДоступна() не видит эту роль у пользователя...?
Регистр сведений ПраваРолей обновил данные регистра.
БСПшные функции не подходят, так как при наличии у пользователя полных прав - всегда возврат будет истина.
Но почему же РольДоступна() не работает?
(12)
Сделал в итоге так вот и получилось даже перезаходить не надо пользователю, налету ограничение срабатывает.
Сделал в итоге так вот и получилось даже перезаходить не надо пользователю, налету ограничение срабатывает.
&НаСервере
Процедура рха_ПриСозданииНаСервереПеред(Отказ, СтандартнаяОбработка)
УстановитьПривилегированныйРежим(Истина);
Пользователь = Пользователи.АвторизованныйПользователь();
Роль = ОбщегоНазначения.ИдентификаторОбъектаМетаданных("Роль.рхаСлужебнаяРольДоступКСправочникуФизлица");
// Проверка, что роль назначается пользователю через группу доступа по профилю.
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("АвторизованныйПользователь", Пользователь);
Запрос.УстановитьПараметр("Роль", Роль);
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ИСТИНА КАК ЗначениеИстина
|ИЗ
| Справочник.ГруппыДоступа.Пользователи КАК ГруппыДоступаПользователи
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
| ПО (СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь)
| И (СоставыГруппПользователей.ГруппаПользователей = ГруппыДоступаПользователи.Пользователь)
| И (СоставыГруппПользователей.Используется)
| И (НЕ ГруппыДоступаПользователи.Ссылка.ПометкаУдаления)
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПрофилиГруппДоступа.Роли КАК ПрофилиГруппДоступаРоли
| ПО ГруппыДоступаПользователи.Ссылка.Профиль = ПрофилиГруппДоступаРоли.Ссылка
| И (ПрофилиГруппДоступаРоли.Роль = &Роль)
| И (НЕ ПрофилиГруппДоступаРоли.Ссылка.ПометкаУдаления)";
Результат = НЕ Запрос.Выполнить().Пустой();
УстановитьПривилегированныйРежим(Ложь);
Если НЕ Результат Тогда
Отказ = Истина;
Если ЗначениеЗаполнено(ЭтотОбъект.Объект.Ссылка) Тогда
Сообщить("Нет разрешения для пользователя на просмотр Физического лица!");
Иначе
Сообщить("Нет разрешения для пользователя на создание Физического лица!");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот