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

Параметр сеанса в ограничении прав доступа — простые лайфхаки, чтобы ваши данные оставались только вашими

Бесплатная консультация юриста

+7 (800) 301-07-30

Реклама jurik.ru

Почему возникает ошибка «Требуется актуализировать ограничение доступа»?

Кратко: платформа 1С:Предприятие не может найти требуемое значение параметра сеанса‚ которое используется в шаблоне RLS (ограничение на уровне записей).
При отсутствии или неверном формате параметра «валится» синтаксическая ошибка:

<<?>>: Требуется актуализировать ограничение доступа по причине:
Не удалось определить вариант ограничения доступа в параметрах сеанса для шаблона ДляОбъекта...

Что такое параметр сеанса?

Параметр сеанса — это ключ-значение‚ которое платформа хранит в течение всего времени работы пользователя и подставляет в ограничения доступа. Примеры:

  • ТекущийПользователь — ссылка на справочник Пользователи
  • ТекущаяОрганизация — ссылка на справочник Организации
  • ДатаНачала / ДатаОкончания — произвольные даты‚ заданные в сеансе

Значение параметра можно получить в любом месте конфигурации‚ но для ограничений доступа обязательно зарегистрировать его до момента первого обращения к данным.

Как установить параметр сеанса

Создание обработки-инициализатора

Создайте общий модуль ПараметрыСеанса с функцией:


// Устанавливает нужные параметры и возвращает их список
Функция УстановитьПараметрыСеанса Экспорт
	
	// 1. Найдем текущего пользователя
	ТекПользователь = Справочники.Пользователи;НайтиПоНаименованию(ИмяПользователя‚ Истина);
	УстановитьПараметрСеанса("ТекущийПользователь"‚ ТекПользователь);
	
	// 2. Найдем организацию
	Организация = Справочники.Организации.НайтиПоКоду("000000001");
	УстановитьПараметрСеанса("ТекущаяОрганизация"‚ Организация);
	
	// 3. Возвратим список установленных параметров
	Возврат "ТекущийПользователь‚ТекущаяОрганизация";
	
КонецФункции

Регистрация в подсистеме БСП

Если используется Библиотека стандартных подсистем‚ в справочнике «Настройки пользователей» задайте строку:

УстановитьПараметрыСеанса

Регистрация в обработке «Запуск 1С» (если БСП не используется)

  1. Откройте обработку ОбщиеНастройки.ПриНачалеРаботыСистемы
  2. Добавьте вызов:
    ПараметрыСеанса.УстановитьПараметрыСеанса;

Как использовать параметр в RLS

Шаблон «ДляОбъекта»

В конфигураторе откройте Права доступа → Ограничения доступа на уровне записей и добавьте новое ограничение:

  • Объект: Справочник.Контрагенты
  • Право: Чтение
  • Шаблон: <<?Если ТекущаяОрганизация = Контрагенты.Организация Тогда Истина Иначе Ложь>>

Возможные ошибки и способы исправления

Текст ошибки Причина Решение
Не удалось определить параметр «ТекущийПользователь» Не вызвана функция УстановитьПараметрСеанса Проверьте регистрацию функции в «ПриНачалеРаботыСистемы»
Синтаксическая ошибка при вычислении шаблона Имя параметра указано без кавычек ТекущийПользователь → <<? ТекущийПользователь = Документ.Автор>>
Ошибка преобразования типа Тип параметра не совпадает с типом реквизита Убедитесь‚ что ТекущийПользователь — это ссылка‚ а не строка

Диагностика: где посмотреть текущие параметры

В режиме отладки выполните код:


П = ПараметрыСеанса.ПолучитьПараметрыСеанса;
Сообщить(П.Свойство("ТекущийПользователь"));

Или используйте внешнюю обработку «Анализатор RLS» с сайта infostart.ru.

  1. Убедитесь‚ что параметр сеанса установлен до первого обращения к данным.
  2. Используйте УстановитьПараметрСеанса в начале сеанса (ПриНачалеРаботыСистемы).
  3. Проверьте корректность имени параметра в шаблоне RLS.
  4. Проверьте тип параметра: ссылка‚ строка‚ дата и т. д.

После этих шагов ошибка «Требуется актуализировать ограничение доступа» исчезнет‚ а RLS начнет работать корректно.