ПолныеПрава существует в метаданных. Это не означает, что роль назначена текущему пользователю; обе проверки выполняются отдельно.
Где и как запускать
Полный серверный модуль изолированной учебной копии КА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.
Не включайте привилегированный режим ради положительного результата: это изменит смысл проверки.
Синоним Полные права — не имя роли. Для поиска используется ПолныеПрава.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.