Получает представление права по имени права.
Синтаксис
ПредставлениеПрава(<ИмяПрава>)Полное описание, параметры и ограничения
Глобальный контекст.ПредставлениеПрава (Global context.RightPresentation)
Глобальный контекст (Global context)
ПредставлениеПрава (RightPresentation)
Доступен, начиная с версии 8.2.
Синтаксис:
ПредставлениеПрава(<ИмяПрава>)
Параметры:
<ИмяПрава> (необязательный)
Тип: Строка.
Содержит имя права, для которого нужно получить представление.
Возвращаемое значение:
Тип: Строка.
Описание:
Получает представление права по имени права.
Доступность:
Сервер, толстый клиент, внешнее соединение.
Примечание:
Если право с таким именем не существует, генерируется исключительная ситуация.
Использование в версии:
Доступен, начиная с версии 8.2.
Методическая информация
Практические примеры
Построить карту четырёх прав, не изменяя роли и данные
ПредставлениеПрава даёт локализованную подпись имени права, а ПравоДоступа — отдельное булево разрешение текущего пользователя. Совмещаем их в понятном собственном отчёте.
Где и как запускать
Полный модуль управляемой формы своей отдельной учебной конфигурации: клиентская команда и серверная функция без контекста. Только чтение метаданных и прав.
Подготовка
Создайте отдельную собственную конфигурацию с именем УчебнаяКонфигурацияСинтаксиса. В ней создайте справочник УчебныеТовары, без реальных товаров и без записи элементов.
Создайте учебную обработку с управляемой формой и командой УчебноеДействие. Назначьте кнопке команду и вставьте весь модуль урока на уровне модуля формы.
В тестовой конфигурации создайте учебную роль с выбранными правами на УчебныеТовары и учебного пользователя, назначив эту роль вручную. Рабочие роли и пользователей не меняйте.
Серверная функция сама проверяет наличие собственного справочника. Она не перебирает и не читает элементы справочника.
Не делайте модуль привилегированным и не включайте привилегированный режим: иначе ПравоДоступа возвращает Истина независимо от проверяемого права.
Повторяйте проверку под собственными учебными пользователями только в этой базе; отсутствие права не обходится кодом урока.
Запуск в 1С не проверен. Сверка кода и типов не доказывает фактический результат ваших ролей, RLS или возможности конкретной записи.
&НаКлиенте
Процедура УчебноеДействие(Команда)
Карта = ПрочитатьУчебнуюКартуПрав();
Для Каждого СтрокаКарты Из Карта Цикл
Сообщить(СтрШаблон("%1: %2; право текущего учебного пользователя: %3",
СтрокаКарты.Имя, СтрокаКарты.Представление, СтрокаКарты.Разрешено));
КонецЦикла;
Сообщить(Карта.Количество() = 4);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПрочитатьУчебнуюКартуПрав()
Если ПривилегированныйРежим() Тогда
ВызватьИсключение "Для учебной карты прав выключите привилегированный режим";
КонецЕсли;
ОбъектПроверки = Метаданные.Справочники.Найти("УчебныеТовары");
Если ОбъектПроверки = Неопределено Тогда
ВызватьИсключение "Сначала создайте собственный справочник УчебныеТовары в отдельной учебной конфигурации";
КонецЕсли;
Карта = Новый Массив;
Для Каждого ИмяПрава Из СтрРазделить("Чтение,Добавление,Изменение,Удаление", ",") Цикл
Подпись = ПредставлениеПрава(ИмяПрава);
Разрешено = ПравоДоступа(ИмяПрава, ОбъектПроверки);
Если ТипЗнч(Подпись) <> Тип("Строка") ИЛИ ТипЗнч(Разрешено) <> Тип("Булево") Тогда
ВызватьИсключение "Неожиданный тип элемента карты прав";
КонецЕсли;
Карта.Добавить(Новый Структура("Имя,Представление,Разрешено", ИмяПрава, Подпись, Разрешено));
КонецЦикла;
Возврат Карта;
КонецФункции
Разбор по шагам
Клиент вызывает серверную функцию, потому что ПредставлениеПрава и ПравоДоступа недоступны в тонком клиенте напрямую.
На сервере выбираем только определение собственного справочника УчебныеТовары; значение Неопределено обрабатывается до проверки прав.
Перебираем четыре допустимых имени: Чтение, Добавление, Изменение и Удаление. ПредставлениеПрава не проверяет разрешение пользователя.
ПравоДоступа вызываем для того же имени и конкретного объекта метаданных без параметра чужой роли или пользователя; проверяется текущий сеанс.
В собственный массив добавляем четыре структуры с именем, подписью и булевым разрешением. Клиент выводит их раздельно и проверяет размер карты.
Как проверить результат
Ожидаются четыре подписанные строки и Истина для размера карты. Значения разрешений зависят от вашего учебного пользователя, не обещаются все Истина.
В копии учебной базы сравните пользователя с ограниченными правами и своего учебного администратора. Подписи могут совпасть, а булевы разрешения — различаться.
Ожидаемый результат
Создан конкретный отчёт по четырём правам собственного справочника с раздельными данными подписи и разрешения.
На что обратить внимание
Неизвестное имя права в ПредставлениеПрава вызывает исключение: не подставляйте название кнопки интерфейса вместо права.
Наличие права не доказывает видимость всех строк при RLS и не гарантирует успешность записи конкретного объекта.
Вывод определения права не назначает его пользователю. Этот пример не устанавливает роли и не создаёт элементы справочника.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.