Используется для обращения к метаданным объекта конфигурации - роль.
Полное описание, параметры и ограничения
ОбъектМетаданных: Роль (MetadataObject: Role)
ОбъектМетаданных: Роль (MetadataObject: Role)
Доступен, начиная с версии 8.1.
Свойства:
Имя (Name)
Комментарий (Comment)
ОбъектРасширяемойКонфигурации (ExtendedConfigurationObject)
ПринадлежностьОбъекта (ObjectBelonging)
Синоним (Synonym)
Права (Rights)
Методы:
ЕстьИзмененияРасширениямиКонфигурации (ChangedByConfigurationExtensions)
ПолноеИмя (FullName)
Представление (Presentation)
РасширениеКонфигурации (ConfigurationExtension)
Родитель (Parent)
Описание:
Используется для обращения к метаданным объекта конфигурации - роль.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
См. также:
РолиПользователя, метод Добавить
РолиПользователя, метод Удалить
РолиПользователя, метод Содержит
Использование в версии:
Доступен, начиная с версии 8.1.
Методическая информация
Практические примеры
Проверить право Чтение текущего пользователя без изменения ролей
Читаем список определений ролей и отдельно проверяем право текущего пользователя на один справочник. Не объявляем это полной проверкой RLS.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Запускайте в учебной копии конфигурации. Примеры читают структуру метаданных, но не создают объекты, не записывают регистры и не проводят документы.
Сверяйте вывод с деревом конфигурации в Конфигураторе. Имена, длины и настройки в УНФ, КА2, БП, УТ 11 и УТ 10.3 могут различаться.
Сообщить(СтрШаблон("Определений ролей: %1", Метаданные.Роли.Количество()));
Для Каждого Роль Из Метаданные.Роли Цикл
Сообщить(СтрШаблон("%1 (%2)", Роль.Имя, Роль.Синоним));
Сообщить(Роль.Комментарий);
Сообщить(Роль.Права = Неопределено);
КонецЦикла;
Если Метаданные.Справочники.Количество() = 0 Тогда
ВызватьИсключение "Нет справочников для учебной проверки права";
КонецЕсли;
ОбъектПроверки = Метаданные.Справочники.Получить(0);
ЕстьЧтение = ПравоДоступа("Чтение", ОбъектПроверки);
Сообщить(СтрШаблон("Текущий пользователь; %1; Чтение: %2", ОбъектПроверки.ПолноеИмя(), ЕстьЧтение));Разбор по шагам
Коллекция Метаданные.Роли содержит определения всех ролей конфигурации, а не назначенные текущему пользователю роли.
Права у описания роли в доступном API равно Неопределено. Из этого свойства нельзя получить матрицу разрешений.
ПравоДоступа вызываем без третьего параметра: проверяется текущий пользователь, не чужая роль или учётная запись.
Проверка явного пользователя или роли третьим параметром требует административных прав; этот учебный пример её намеренно не делает.
Как проверить результат
Полученное значение ЕстьЧтение имеет тип Булево. Для другого учебного пользователя оно может отличаться.
Сообщения о ролях не интерпретируются как список назначений пользователю.
В примере не создаются пользователи, не устанавливаются роли и не читаются записи справочника.
Ожидаемый результат
Проверено текущее право на объект метаданных с явным отделением от RLS и назначений ролей.
На что обратить внимание
Истина не гарантирует, что пользователь видит все строки: возможны ограничения на уровне записей и контекст сеанса.
Ложь нельзя обходить включением привилегированного режима в учебном примере.
Для полной проверки доступа нужны отдельные тестовые пользователи и проверка конкретных действий в копии базы.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Отличить наличие роли от права чтения пользователя
ПолныеПрава существует в метаданных. Это не означает, что роль назначена текущему пользователю; обе проверки выполняются отдельно.
Где и как запускать
Полный серверный модуль изолированной учебной копии КА2 Progress 2.5.20.75; только чтение.
Подготовка
Отдельная учебная копия КА2 Progress 2.5.20.75 из C:\claude\KA2\Progress\XML_CF_KA2_PROGRESS, платформа 8.5.1.1343. Создайте серверный общий модуль УчебныеКонтрактыОбработчиков.
Вставьте полный модуль одного урока и вызовите УчебныеКонтрактыОбработчиков.ВыполнитьПример() из своей учебной серверной команды.
Источники: Roles\ПолныеПрава.xml; EventSubscriptions\АктуализироватьСтруктуруПредприятия.xml; ScheduledJobs\АнализДанныхДляОповещенийКлиентам.xml и соответствующие CommonModules.
Код только читает метаданные и признаки прав. Он не назначает роли, не меняет параметры сеанса, не записывает организацию и не вызывает обработчик подписки или задания.
Учебная копия должна быть изолирована от рабочих фоновых заданий и внешних обменов её обычными средствами администрирования. Этот пример не выключает и не включает задания за пользователя.
Диагностика расширений и доступных прав зависит от активной базы и пользователя. Не подгоняйте права рабочей базы под ожидаемые булевы результаты.
Процедура ВыполнитьПример() Экспорт
Роль = Метаданные.Роли.Найти("ПолныеПрава");
Каталог = Метаданные.Справочники.Найти("Номенклатура");
Если Роль = Неопределено ИЛИ Каталог = Неопределено Тогда
ВызватьИсключение "Нет подтверждённой роли или справочника";
КонецЕсли;
Сообщить(Роль.Имя = "ПолныеПрава");
Сообщить(Роль.Права = Неопределено);
РольАктивна = РольДоступна(Роль.Имя);
ЕстьЧтение = ПравоДоступа("Чтение", Каталог);
Сообщить(ТипЗнч(РольАктивна) = Тип("Булево"));
Сообщить(ТипЗнч(ЕстьЧтение) = Тип("Булево"));
Сообщить("Роль активна у текущего пользователя: " + Строка(РольАктивна));
Сообщить("Признак права чтения Номенклатура: " + Строка(ЕстьЧтение));
Сообщить("Это не проверка RLS и не проверка чтения конкретного товара.");
Сообщить(Роль.Синоним);
Сообщить(Роль.Комментарий);
Сообщить(Роль.ПолноеИмя());
Сообщить(Роль.Представление());
Сообщить(Роль.ПринадлежностьОбъекта);
Сообщить(ТипЗнч(Роль.ОбъектРасширяемойКонфигурации));
Сообщить(Роль.ЕстьИзмененияРасширениямиКонфигурации());
Сообщить(ТипЗнч(Роль.РасширениеКонфигурации()));
Сообщить(Роль.Родитель() = Метаданные);
КонецПроцедурыРазбор по шагам
Найти реальную роль ПолныеПрава и метаданные Номенклатура.
Прочитать Роль.Права: по контракту это всегда Неопределено, не таблица доступов и не неисправность роли.
Через РольДоступна проверить активность этой роли у текущего пользователя. Через ПравоДоступа отдельно получить признак чтения справочника.
Вывести паспорт роли и происхождение расширений. Никаких пользователей, профилей или ролей не менять.
Как проверить результат
Пять фиксированных проверок дают Истина; РольАктивна и ЕстьЧтение выводятся как диагностика и могут быть Ложь.
У пользователя без ПолныеПрава роль всё равно найдётся в метаданных. Это наглядно разделяет описание и фактический доступ.
Ожидаемый результат
Практическая диагностика права без назначения ролей и без чтения записей номенклатуры.
На что обратить внимание
ПравоДоступа не доказывает доступ к конкретной записи с ограничениями RLS.
Не включайте привилегированный режим ради положительного результата: это изменит смысл проверки.
Синоним Полные права — не имя роли. Для поиска используется ПолныеПрава.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.