Глобальный контекст.ПредставлениеПрава

Методы · RightPresentation

Получает представление права по имени права.

Синтаксис

ПредставлениеПрава(<ИмяПрава>)
Полное описание, параметры и ограничения

Глобальный контекст.ПредставлениеПрава (Global context.RightPresentation)

Глобальный контекст (Global context)

ПредставлениеПрава (RightPresentation)

Доступен, начиная с версии 8.2.

Синтаксис:
ПредставлениеПрава(<ИмяПрава>)
Параметры:

<ИмяПрава> (необязательный)
Тип: Строка.
Содержит имя права, для которого нужно получить представление.
Возвращаемое значение:
Тип: Строка.

Описание:

Получает представление права по имени права.

Доступность:

Сервер, толстый клиент, внешнее соединение.

Примечание:
Если право с таким именем не существует, генерируется исключительная ситуация.
Использование в версии:

Доступен, начиная с версии 8.2.

Методическая информация

Практические примеры

Построить карту четырёх прав, не изменяя роли и данные

ПредставлениеПрава даёт локализованную подпись имени права, а ПравоДоступа — отдельное булево разрешение текущего пользователя. Совмещаем их в понятном собственном отчёте.

Где и как запускать

Полный модуль управляемой формы своей отдельной учебной конфигурации: клиентская команда и серверная функция без контекста. Только чтение метаданных и прав.

Подготовка

  1. Создайте отдельную собственную конфигурацию с именем УчебнаяКонфигурацияСинтаксиса. В ней создайте справочник УчебныеТовары, без реальных товаров и без записи элементов.

  2. Создайте учебную обработку с управляемой формой и командой УчебноеДействие. Назначьте кнопке команду и вставьте весь модуль урока на уровне модуля формы.

  3. В тестовой конфигурации создайте учебную роль с выбранными правами на УчебныеТовары и учебного пользователя, назначив эту роль вручную. Рабочие роли и пользователей не меняйте.

  4. Серверная функция сама проверяет наличие собственного справочника. Она не перебирает и не читает элементы справочника.

  5. Не делайте модуль привилегированным и не включайте привилегированный режим: иначе ПравоДоступа возвращает Истина независимо от проверяемого права.

  6. Повторяйте проверку под собственными учебными пользователями только в этой базе; отсутствие права не обходится кодом урока.

  7. Запуск в 1С не проверен. Сверка кода и типов не доказывает фактический результат ваших ролей, RLS или возможности конкретной записи.

&НаКлиенте
Процедура УчебноеДействие(Команда)
    Карта = ПрочитатьУчебнуюКартуПрав();
    Для Каждого СтрокаКарты Из Карта Цикл
        Сообщить(СтрШаблон("%1: %2; право текущего учебного пользователя: %3",
            СтрокаКарты.Имя, СтрокаКарты.Представление, СтрокаКарты.Разрешено));
    КонецЦикла;
    Сообщить(Карта.Количество() = 4);
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПрочитатьУчебнуюКартуПрав()
    Если ПривилегированныйРежим() Тогда
        ВызватьИсключение "Для учебной карты прав выключите привилегированный режим";
    КонецЕсли;
    ОбъектПроверки = Метаданные.Справочники.Найти("УчебныеТовары");
    Если ОбъектПроверки = Неопределено Тогда
        ВызватьИсключение "Сначала создайте собственный справочник УчебныеТовары в отдельной учебной конфигурации";
    КонецЕсли;
    Карта = Новый Массив;
    Для Каждого ИмяПрава Из СтрРазделить("Чтение,Добавление,Изменение,Удаление", ",") Цикл
        Подпись = ПредставлениеПрава(ИмяПрава);
        Разрешено = ПравоДоступа(ИмяПрава, ОбъектПроверки);
        Если ТипЗнч(Подпись) <> Тип("Строка") ИЛИ ТипЗнч(Разрешено) <> Тип("Булево") Тогда
            ВызватьИсключение "Неожиданный тип элемента карты прав";
        КонецЕсли;
        Карта.Добавить(Новый Структура("Имя,Представление,Разрешено", ИмяПрава, Подпись, Разрешено));
    КонецЦикла;
    Возврат Карта;
КонецФункции

Разбор по шагам

  1. Клиент вызывает серверную функцию, потому что ПредставлениеПрава и ПравоДоступа недоступны в тонком клиенте напрямую.

  2. На сервере выбираем только определение собственного справочника УчебныеТовары; значение Неопределено обрабатывается до проверки прав.

  3. Перебираем четыре допустимых имени: Чтение, Добавление, Изменение и Удаление. ПредставлениеПрава не проверяет разрешение пользователя.

  4. ПравоДоступа вызываем для того же имени и конкретного объекта метаданных без параметра чужой роли или пользователя; проверяется текущий сеанс.

  5. В собственный массив добавляем четыре структуры с именем, подписью и булевым разрешением. Клиент выводит их раздельно и проверяет размер карты.

Как проверить результат

  1. Ожидаются четыре подписанные строки и Истина для размера карты. Значения разрешений зависят от вашего учебного пользователя, не обещаются все Истина.

  2. В копии учебной базы сравните пользователя с ограниченными правами и своего учебного администратора. Подписи могут совпасть, а булевы разрешения — различаться.

Ожидаемый результат

Создан конкретный отчёт по четырём правам собственного справочника с раздельными данными подписи и разрешения.

На что обратить внимание

  1. Неизвестное имя права в ПредставлениеПрава вызывает исключение: не подставляйте название кнопки интерфейса вместо права.

  2. Наличие права не доказывает видимость всех строк при RLS и не гарантирует успешность записи конкретного объекта.

  3. Вывод определения права не назначает его пользователю. Этот пример не устанавливает роли и не создаёт элементы справочника.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.