База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как в 1С программно найти роли с указанным правом?
- В этой теме 1 ответ, 2 участника, последнее обновление 6 дней, 22 часа назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
15 апреля 2026 в 13:01 #36448
Как программно через код 1с найти роль с заданным правом
-
15 апреля 2026 в 13:01 #36449
Чтобы программно найти роли, которые имеют заданное право на объект метаданных, можно использовать регистр сведений «ПраваРолей» (РегистрСведений.ПраваРолей). В этом регистре хранятся права ролей на объекты метаданных.
Пример кода на 1С (BSL), который ищет роли с заданным правом (например, «Чтение») на конкретный объект метаданных:
1С (Код)123456789101112131415161718192021222324252627282930313233343536Функция НайтиРолиСПравом(ОбъектМетаданных, ИмяПрава) ЭкспортРезультат = Новый Массив;Запрос = Новый Запрос;Запрос.Текст =|ВЫБРАТЬ| ПраваРолей.Роль КАК Роль,| ПраваРолей.ОбъектМетаданных КАК ОбъектМетаданных,| ПраваРолей.Чтение КАК Чтение,| ПраваРолей.Изменение КАК Изменение,| ПраваРолей.Добавление КАК Добавление,| ПраваРолей.Удаление КАК Удаление|ИЗ| РегистрСведений.ПраваРолей КАК ПраваРолей|ГДЕ| ПраваРолей.ОбъектМетаданных = &ОбъектМетаданных| И| ВЫБОР| КОГДА &ИмяПрава = "Чтение" ТОГДА ПраваРолей.Чтение| КОГДА &ИмяПрава = "Изменение" ТОГДА ПраваРолей.Изменение| КОГДА &ИмяПрава = "Добавление" ТОГДА ПраваРолей.Добавление| КОГДА &ИмяПрава = "Удаление" ТОГДА ПраваРолей.Удаление| ИНАЧЕ ЛОЖЬ| КОНЕЦ";Запрос.УстановитьПараметр("ОбъектМетаданных", ОбъектМетаданных);Запрос.УстановитьПараметр("ИмяПрава", ИмяПрава);Выборка = Запрос.Выполнить().Выбрать();Пока Выборка.Следующий() ЦиклРезультат.Добавить(Выборка.Роль);КонецЦикла;Возврат Результат;КонецФункцииКак использовать:
1С (Код)123456// Например, ищем роли с правом "Чтение" на справочник "Контрагенты"Роли = НайтиРолиСПравом(Метаданные.Справочники.Контрагенты, "Чтение");Для Каждого Роль Из Роли ЦиклСообщить(Роль);КонецЦикла;Объяснение:
— В регистре «ПраваРолей» есть поля с булевыми значениями для каждого права (Чтение, Изменение, Добавление, Удаление).
— В запросе фильтруем по объекту метаданных и по нужному праву.
— Возвращаем список ролей, у которых это право установлено.Если нужно искать роли с правом на любой объект, можно убрать фильтр по объекту и искать по праву в целом.
Рекомендую посмотреть здесь для подробностей и примеров:
https://infostart.ru/public/1176543/ (статья про права ролей и их программное получение)
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.