Параметры сеанса в 1С 8.3
Меню

Параметры сеанса в 1С 8.3

Рассматриваемые параметры в 1С:Предприятие представлены в виде объекта метаданных. По существу, это не что иное, как глобальная переменная, привязанная к текущему сеансу.

Параметры в виде объекта метаданных
Параметры в виде объекта метаданных

Глобальная переменная – такая же переменная, как и любая другая, но особенность ее в том, что обратиться к ней можно из любой точки программы, а в случае с параметром сеанса это работает только в пределах текущего сеанса.

Поскольку параметр сеанса является объектом метаданных, он имеет определенные особенности:

  • Он может быть определенного типа. Разрешенные типы определяются платформой. Перечень их достаточно обширный, но даже если в данном списке нет нужного для вас, всегда можно сериализовать значение и хранить его в параметре в виде строки.

Хранение в параметре в виде строки
Хранение в параметре в виде строки
  • Права на него, как и на любой другой объект метаданных, можно ограничивать ролями (как на запись, так и на чтение). При этом существует особенность при использовании его в RLS, но об этом будет написано ниже.
  • Он имеет ограничение на объем помещаемых данных в сериализованном виде. Их объем не должен превышать 4 Гб.

Если тип параметра сеанса:

  • ФиксированныйМассив
  • ФиксированнаяКоллекция
  • ФиксированнаяСтруктура

Тогда значение элемента коллекции может быть Неопределено.

Основная область параметров – применение их значений в запросах RLS (ограничение доступа на уровне записей).

Например, нам нужно в запросе RLS установить условие по текущему пользователю. Для этого заводим параметр сеанса «ТекущийПользователь», из кода встроенного языка устанавливаем значение:

ПараметрыСеанса.ТекущийПользователь = <значение>

Далее в запросе RLS позволено обращаться к данному параметру:

Таблица.Пользователь = &ТекущийПользователь

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

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

При этом у текущего пользователя должны быть права на получение (чтение) значения.

При этом у текущего пользователя должны быть права на получение (чтение) значения
При этом у текущего пользователя должны быть права на получение (чтение) значения

Установить параметр сеанса, то есть его значение, можно только программно и только на сервере. Для этого с клиента потребуется вызвать серверную процедуру. При обращении к параметру сеанса (установка, получение), если параметр не инициализирован, будет вызвана процедура УстановкаПараметровСеанса в модуле сеанса. Данная процедура имеет один параметр ТребуемыеПараметры – массив устанавливаемых идентификаторов параметров сеанса. УстановкаПараметровСеанса вызывается также при установке соединения с информационной базой до вызова всех остальных обработчиков. В этом случае ТребуемыеПараметры будет равен Неопределено.

Рекомендовано использовать отложенную (ленивую) инициализацию, то есть инициализировать параметры сеанса по требованию, а не при старте системы, так как не все параметры сеанса требуются непосредственно при старте системы. Отложенная инициализация выполняется так:


 Процедура УстановкаПараметровСеанса(ИменаПараметровСеанса)
  Если ИменаПараметровСеанса  Неопределено Тогда
  	   Если ИмяПараметра = "ТекущийПользователь" Тогда
        	ПараметрыСеанса.ТекущийПользователь = ;
       ИначеЕсли ИмяПараметра = " ТекущаяОрганизация" Тогда
  	        ПараметрыСеанса.ТекущаяОрганизация = ;
       // и т.д.
  	   КонецЕсли;
  КонецЕсли;
 КонецПроцедуры

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


Рассказать друзьям
Предыдущая статья статья
Комиссионная торговля в 1С 8.3 Бухгалтерия
Следующая статья статья
Основные справочники 1С 8.3: создание и изменение элементов
Комментарии