Не срабатывает проверка прав РольДоступна()

1. mnb-next 15 06.06.19 14:09 Сейчас в теме
Добрый день! Кто сталкивался, когда не срабатывает конструкция с собственными ролями, прошу помочь!
Разрабатываю права для Ответственного за список начислений (тестирую на своем примере):
1) Создала в конфигураторе роль «ИзменятьВидыНачисленийУдержаний»
2) Создала профиль «Изменять виды начислений, удержаний» с единственной разрешенной ролью «ИзменятьВидыНачисленийУдержаний»
3) Создала группу «Изменять виды начислений, удержаний» с профилем «Изменять виды начислений, удержаний»
4) Включила себя в эту группу
РЕЗУЛЬТАТ: не разрешает мне сохранять изменения в виде начисления. В отладчике РольДоступна("ИзменятьВидыНачисленийУдержаний") возвращает Ложь. Что не так сделано?
По теме из базы знаний
Найденные решения
8. dhurricane 06.06.19 20:11 Сейчас в теме
(6) Да, группа Администраторы "вытесняет" все назначаемые роли, кроме своих собственных - Полные права и Администрирование. Для проверки наличия роли с учетом полноправных пользователей используйте любой из следующих методов:
ЕстьПраво = Пользователи.РолиДоступны("ИмяРоли");
ЕстьПраво = УправлениеДоступом.ЕстьРоль("ИмяРоли");
info-prof-it; seppe_sai; VyacheslavShilov; smit1c; mak1; svmix; cyegor; criptid; config; anastasita_z; denissa; Sejix; zoikins; Dim1234; Vrornkovep; manu; gucci76; ApTeM_26_; Istur; Aliit; kudlach; jan-pechka; mea1c; Veric; xsazar; Alex_Iz; Parsec1C; xdrive; Maruska77; +29 Ответить
3. dhurricane 06.06.19 14:26 Сейчас в теме
(1) Прошу прощения за глупый вопрос. Но Вы случайно не под административными правами проверяете? Если все таки нет, то обновляли ли Вы служебные данные после добавление в конфигурацию роли и до назначения ее себе?
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. dhurricane 06.06.19 14:26 Сейчас в теме
(1) Прошу прощения за глупый вопрос. Но Вы случайно не под административными правами проверяете? Если все таки нет, то обновляли ли Вы служебные данные после добавление в конфигурацию роли и до назначения ее себе?
4. mnb-next 15 06.06.19 16:52 Сейчас в теме
(3)Добрый день, dhurricane! Вообще-то под собственными правами с правом администрирования - не думала, что это влияет! Спасибо за наводку, протестирую!
6. mnb-next 15 06.06.19 17:11 Сейчас в теме
(4) Спасибо, dhurricane! Дело действительно оказалось в правах типовой группы Администраторы. Видимо, программа при максимальных правах текущего пользователя не анализирует остальной перечень присвоенных ему прав, вроде логично. Сама бы не догадалась, хотя, припоминается, где-то об этом слышала раньше...
8. dhurricane 06.06.19 20:11 Сейчас в теме
(6) Да, группа Администраторы "вытесняет" все назначаемые роли, кроме своих собственных - Полные права и Администрирование. Для проверки наличия роли с учетом полноправных пользователей используйте любой из следующих методов:
ЕстьПраво = Пользователи.РолиДоступны("ИмяРоли");
ЕстьПраво = УправлениеДоступом.ЕстьРоль("ИмяРоли");
info-prof-it; seppe_sai; VyacheslavShilov; smit1c; mak1; svmix; cyegor; criptid; config; anastasita_z; denissa; Sejix; zoikins; Dim1234; Vrornkovep; manu; gucci76; ApTeM_26_; Istur; Aliit; kudlach; jan-pechka; mea1c; Veric; xsazar; Alex_Iz; Parsec1C; xdrive; Maruska77; +29 Ответить
9. mnb-next 15 07.06.19 07:17 Сейчас в теме
(8) Спасибо, dhurricane! В коде ЗУП 3 РолиДоступны() заменены на РольДоступна() с соотв. комментарием, я даже и пробовать не стала, а ЕстьРоль(0 попробую, не знала, спасибо за расширение кругозора!))
18. nayd 10 21.02.23 11:37 Сейчас в теме
(8) УправлениеДоступом.ЕстьРоль("ИмяРоли") это тоже возвращает всегда Истина для полноправного пользователя
19. minarenko 21.02.23 14:51 Сейчас в теме
(18) скопируйте себе эту функцию в свой модуль и выкиньте из нее
Если Пользователи.ЭтоПолноправныйПользователь(Пользователь) Тогда
		Возврат Истина;
	КонецЕсли;
svmix; Ranetka; nayd; +3 Ответить
20. dhurricane 21.02.23 16:57 Сейчас в теме
(18) Так в этом исходная задача и заключалась: вернуть Истина для полноправного пользователя, когда в действительности ему эта роль не назначена.
7. spacecraft 06.06.19 17:53 Сейчас в теме
(1) если конфигурация на базе БСП, то лучше воспользоваться функцией от туда:
УправлениеДоступом.ЕстьРоль("ИзменятьВидыНачисленийУдержаний")
Istur; xdrive; +2 Ответить
10. mnb-next 15 07.06.19 07:18 Сейчас в теме
(7) Спасибо, spacecraft! Попробую! Все же нужно плотнее знакомиться с БСП, а не довольствоваться принципом "по образу и подобию", даже если "нужно срочно" ))
2. N0t_F0und 10 06.06.19 14:13 Сейчас в теме
Собственная роль - это, конечно, хорошо. А права у этой роли на изменение видов начислений и удержаний есть? В журнале регистрации фиксируется отказ в доступе по какому праву? В вашем случае <ВИД НАЧИСЛЕНИЙ И УДЕРЖАНИЙ> это что?
5. mnb-next 15 06.06.19 16:55 Сейчас в теме
(2) Ольга, добрый день! Я не для собственно права на изменение начисления (расширенные права есть у многих пользователей), а на отказ от сохранения изменений всем, кроме одного ответственного в организации за настройку начислений, удержаний
11. dadel 19 16.03.21 13:30 Сейчас в теме
Тоже чего-то встрял на ровном месте.
Служебная роль создана и РольДоступна() не видит её у пользователя.
Тоже назначение роли, что бы даже полноправный не мог открыть форму без этой роли. Вопрос, что полноправный может её себе сам назначить - не поднимаем сейчас. Вопрос - почему РольДоступна() не видит эту роль у пользователя...?
Регистр сведений ПраваРолей обновил данные регистра.
БСПшные функции не подходят, так как при наличии у пользователя полных прав - всегда возврат будет истина.
Но почему же РольДоступна() не работает?
12. Азбука Морзе 106 16.03.21 13:47 Сейчас в теме
(11)
РольДоступна
обращается к метаданным, которые задаются в конфигураторе в разделе Администрирование-Пользователи с помощью галочек. Для профилей доступа применяются свои методы, о них сказано выше.
13. dadel 19 16.03.21 17:11 Сейчас в теме
(12)
Сделал в итоге так вот и получилось даже перезаходить не надо пользователю, налету ограничение срабатывает.
&НаСервере
Процедура рха_ПриСозданииНаСервереПеред(Отказ, СтандартнаяОбработка)
	
	УстановитьПривилегированныйРежим(Истина);
	Пользователь = Пользователи.АвторизованныйПользователь();
	Роль = ОбщегоНазначения.ИдентификаторОбъектаМетаданных("Роль.рхаСлужебнаяРольДоступКСправочникуФизлица");
	
	// Проверка, что роль назначается пользователю через группу доступа по профилю.
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("АвторизованныйПользователь", Пользователь);
	Запрос.УстановитьПараметр("Роль", Роль);
	Запрос.Текст =
	"ВЫБРАТЬ ПЕРВЫЕ 1
	|	ИСТИНА КАК ЗначениеИстина
	|ИЗ
	|	Справочник.ГруппыДоступа.Пользователи КАК ГруппыДоступаПользователи
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
	|		ПО (СоставыГруппПользователей.Пользователь = &АвторизованныйПользователь)
	|			И (СоставыГруппПользователей.ГруппаПользователей = ГруппыДоступаПользователи.Пользователь)
	|			И (СоставыГруппПользователей.Используется)
	|			И (НЕ ГруппыДоступаПользователи.Ссылка.ПометкаУдаления)
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ПрофилиГруппДоступа.Роли КАК ПрофилиГруппДоступаРоли
	|		ПО ГруппыДоступаПользователи.Ссылка.Профиль = ПрофилиГруппДоступаРоли.Ссылка
	|			И (ПрофилиГруппДоступаРоли.Роль = &Роль)
	|			И (НЕ ПрофилиГруппДоступаРоли.Ссылка.ПометкаУдаления)";
	Результат = НЕ Запрос.Выполнить().Пустой();
	
	УстановитьПривилегированныйРежим(Ложь);
	
	Если НЕ Результат Тогда       
		Отказ = Истина;
		Если ЗначениеЗаполнено(ЭтотОбъект.Объект.Ссылка) Тогда
			Сообщить("Нет разрешения для пользователя на просмотр Физического лица!");
		Иначе
			Сообщить("Нет разрешения для пользователя на создание Физического лица!");
		КонецЕсли;
	КонецЕсли;
	
КонецПроцедуры
Показать
VyacheslavShilov; kns77; Vary; +3 1 Ответить
15. Азбука Морзе 106 16.03.21 17:26 Сейчас в теме
(13) мог бы просто поставить галку в конфигураторе для нужных пользователей и все бы заработоло
16. dadel 19 16.03.21 18:03 Сейчас в теме
(15)В конфигураторе не по феншую пользователям уже настраивать....
Так бы да, с утра бы сообразил сразу...
17. user1273498 12 26.06.22 10:52 Сейчас в теме
(15) В этом один недостаток - эти галки для добавленных вручную ролей слетают при обновлении почему-то
21. user1273498 12 30.11.23 09:02 Сейчас в теме
(15) Настроенные в конфигураторе галки для новых ролей слетают после обновления базы
22. kns77 103 27.11.24 11:43 Сейчас в теме
(13) Этот код очень пригодился, типовые так нормально и не заработали при полных правах
14. dadel 19 16.03.21 17:13 Сейчас в теме
(12)
Я да, как-то раньше много пользовался на самописных и на старых этим методом. А тут несколько лет не трогал и в ЕРПУХе не сработало, аж растерялся, что стою на асфальте в лыжах...
Оставьте свое сообщение

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