Основные сведения по работе спараметрами сеанса

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

Объект конфигурации. Создается в конфигураторе в ветке «параметры сеанса» дерева конфигурации.

 

Назначение параметров сеанса

 

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

 

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

 

Какого типа может быть параметр сеанса

Обычные типы, плюс: ФиксированныйМассив, ФиксированноеСоответствие, ФиксированнаяСтруктура

 

Где можно устанавливать и читать параметры сеанса

Как устанавливать, так и читать параметры сеанса можно только на сервере. Значение параметров сеанса кэшируется.

 

Параметры сеанса инициализируются в модуле сеанса. Модуль сеанса исполняется до начала исполнения модуля управляемого приложения или модуля внешнего соединения. Модуль сеанса исполняется в привелигированном режиме (то есть, без контроля прав доступа).

 

Установка параметра сеанса происходит в обработчике события УстановкаПараметровСеанса(ИменаПараметровСеанса)модуля сеанса.

 

Обработчик УстановкаПараметровСеанса(ИменаПараметровСеанса) вызывается несколько раз:

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

  2. Перед фактическим использованием параметров сеанса, которые не были инициализированы ранее. В этом случае, ИменаПараметровСеанса- содержит массив идентификаторов неинициализированных параметров сеанса, значения которых используются. Если после того, как обработчик отработает, хотя бы одно значение останется неинициализированным, то возникнет исключение.

    Пример инициализации параметров сеанса:

     

     

    Процедура УстановкаПараметровСеанса(ИменаПараметровСеанса)

     

           Если ИменаПараметровСеанса= Неопределено Тогда

    //При старте системы параметр не инициируем

           Иначе

    //Инициируем параметр при фактическом обращении

    //пример упрощен, надо бы еще проверить, что в параметре ИменаПараметровСеанса есть параметр

    //Текущий пользователь

                   ИД=ПользователиИнформационнойБазы.ТекущийПользователь().УникальныйИдентификатор;

                   ПараметрыСеанса.ТекущийПользователь= Справочники.Пользователи.НайтиПоРеквизиту("ИДПользователя",ИД);

           КонецЕсли;

     

    КонецПроцедуры

     

     

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

     

    Прочитать параметр сеанса можно на сервере вот так:

     

    &НаСервере

    Функция ТекущийПользователь() Экспорт

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

    КонецФункции