Объект 1С «Параметры сеанса»
Объект «Параметры сеанса» предназначен для хранения значений определенных типов для каждого клиентского сеанса на время работы этого сеанса. По сути, это некая глобальная (. ) переменная, привязанная к сеансу текущего пользователя.
Параметры сеанса задаются только программно, универсального интерфейса для установки параметров сеанса в системе нет.
Инициализацию параметров сеанса следует выполнять в модуле сеанса (см. ниже), а их значения рекомендуется использовать в запросах и условиях ограничения доступа к данным для текущего сеанса. Если параметр не определен, во время обращения к нему будет вызвана ошибка.
Открытие модуля сеанса выполняется с помощью контекстного меню в окне конфигурации:

Примеры параметров сеанса 1С:
- ТекущийПользователь (тип СправочникСсылка.Пользователи );
- ОбменДаннымиВключен (тип Булево );
- РабочееМестоКлиента (тип СправочникСсылка.РабочиеМеста ).
Параметры сеанса доступны из встроенного языка 1С:Предприятия, например:
В этом случае, для установки или получения значения параметра сеанса текущий пользователь должен быть наделен соответствующим правом.
Также они могут использоваться в текстах ограничений доступа, например:
В последнем случае для получения значения параметра сеанса наличия у текущего пользователя соответствующего права не требуется.
Особенности использования параметров сеанса 1С:
- Не рекомендуется использовать параметры сеанса для хранения значений, используемых исключительно в клиентской логике. Поскольку в клиент-серверном варианте 1С:Предприятия параметры сеанса хранятся на сервере, то любое их считывание или изменение в процессе работы на клиенте потребует дополнительного серверного вызова и увеличит объем передаваемых данных с клиента на сервер и обратно. В таких случаях следует использовать глобальные переменные модуля управляемого приложения (и обычного приложения – для режима обычного приложения, соответственно).
- Не рекомендуется использовать параметры сеанса для кеширования вычисленных значений, которые многократно используются в серверной бизнес-логике. В таких случаях следует определять функцию в серверном общем модуле с повторным использованием возвращаемых значений. Исключение составляют случаи, когда время вычисления результата функции модуля с повторным использованием возвращаемых значений соизмеримо с периодом сброса платформенного кеша.
- Не следует производить инициализацию параметров сеанса при запуске программы, так как:
- не все параметры сеанса запрашиваются из кода конфигурации при запуске программы;
- при работе программы возможно намеренное обнуление значений параметров сеанса из кода на встроенном языке.
Установка параметров сеанса 1С по требованию
Правильным способом установки значений параметров сеанса является установка значений «по требованию» в обработчике УстановкаПараметровСеанса модуля сеанса. Т.е. параметры сеанса должны быть инициализированы только в тот момент, когда к ним происходит первое обращение, как к неустановленным.
v8: 8.3 БСП Установка параметров сеанса
Хочу добавить новые параметры сеанса и само собой их установить.
Но сунувшись в отладчик обалдел увидев в процедуре «УстановкаПараметровСеанса» уже заполненные параметры.
Около часа уже лажу и не могу смекнуть где они их устанавливают, если эта процедура отрабатывает первой.
а как ты в отладчике смотришь установленность параметров сеанса? по шифт+ф9? если так, то они сразу тебе и рассчитываются.
(18) Спасиб.
Но камрад banco уже написал то что мне было нужно в (9)
Инициализация параметров сеанса
Для инициализации параметров сеанса требуется вписать имя параметра сеанса и путь к его обработчику в процедуру ОбработчикиИнициализацииПараметровСеанса общего модуля ОбщегоНазначенияПереопределяемый. При этом обработчик инициализации должен принимать два параметра:
? ИмяПараметра – строка – имя инициализируемого параметра
? УстановленныеПараметры – массив – имена параметров, которые были инициализированы
Только вот прописал.
Но инициализация не проходит.
(17) так ничего сложного, в ОбщегоНазначенияПереопределяемый.ОбработчикиИнициализацииПараметровСеанса добавляешь
Обработчики.Вставить(«МойПараметрСеанса», «ОбщегоНазначенияПереопределяемый.УстановитьПараметрыСеанса»);
добавляешь процедуру
Процедура УстановитьПараметрыСеанса(ИмяПараметра, УстановленныеПараметры) Экспорт
ПараметрыСеанса.МойПараметрСеанса = Истина;
УстановленныеПараметры.Добавить(«МойПараметрСеанса»);
Функция ОбработчикиИнициализацииПараметровСеанса() Экспорт
Обработчики = Новый Соответствие;
Но на вот этом участке кода отрабатывает только установка одного параметра
Для каждого ИмяПараметра Из ИменаПараметровСеанса Цикл
Если УстановленныеПараметры.Найти(ИмяПараметра) <> Неопределено Тогда
Продолжить;
КонецЕсли;
Обработчик = Обработчики.Получить(ИмяПараметра);
Если Обработчик <> Неопределено Тогда
Если Не ОбщегоНазначения.ПроверитьИмяЭкспортнойПроцедуры(Обработчик, ТекстСообщения) Тогда
ВызватьИсключение ТекстСообщения;
КонецЕсли;
Выполнить Обработчик + «(ИмяПараметра, УстановленныеПараметры)»;
Продолжить;
КонецЕсли;
Для Каждого ИмяКлючаПараметра Из ПараметрыСеансаКлючи Цикл
Если Лев(ИмяПараметра, СтрДлина(ИмяКлючаПараметра)) = ИмяКлючаПараметра Тогда
Обработчик = Обработчики.Получить(ИмяКлючаПараметра+»*»);
Если Не ОбщегоНазначения.ПроверитьИмяЭкспортнойПроцедуры(Обработчик, ТекстСообщения) Тогда
ВызватьИсключение ТекстСообщения;
КонецЕсли;
Выполнить Обработчик + «(ИмяПараметра, УстановленныеПараметры)»;
КонецЕсли;
КонецЦикла;
КонецЦикла;
В ИменаПараметровСеанса потмоу что указан только один «ТекущийПользователь»
Параметры сеанса
● Параметры сеанса являются объектами метаданных, что позволяет «1С:Предприятию» осуществлять повышенный контроль за их использованием.
● Параметры сеанса имеют тип. Набор типов параметров сеанса ограничен. Их важной общей чертой является невозможность изменения внутреннего
состояния для объектов этих типов.
● Для установки или получения значения параметра сеанса текущий пользователь должен быть наделен соответствующим правом.
● В клиент-серверном варианте «1С:Предприятия» значения параметров сеанса хранятся на сервере и доступны как с сервера, так и с клиента.
● Параметры сеанса доступны как из встроенного языка «1С:Предприятия», например:
Так и из ограничений доступа к данным, например:
В последнем случае для получения значения параметра сеанса у текущего пользователя наличия соответствующего права не требуется.
Примечание 1. Если параметру сеанса установлен один из следующих типов: ФиксированныйМассив , ФиксированнаяКоллекция или
ФиксированнаяСтруктура , то в качестве значения элемента коллекции может выступать значение Неопределено.
Примечание 2. Объем данных, перемещаемых между клиентом и сервером, для установки одного параметра сеанса, не должен превышать 4 Gb (в сериализованном виде).
Модуль сеанса 1Сv8
Модулем сеанса называется модуль, который автоматически выполняется при старте системы 1С:Предприятие 8 в момент загрузки конфигурации.
Модуль сеанса предназначен для инициализации параметров сеанса и отработки действий, связанных с сеансом работы. Модуль сеанса всегда исполняется в привилегированном режиме в кластере серверов 1С:Предприприятия 8.
Модуль сеанса не содержит экспортируемых процедур и функций и может использовать процедуры из общих модулей конфигурации.
Модуль сеанса должен содержать обработчик УстановкаПараметровСеанса (SessionParametersSetting), другим способом он не может получить управление.
Особенности
При старте системы процедуры модуля сеанса вызываются в момент, когда интерфейс ещё не инициализирован, поэтому любые функции вывода (например, «Сообщить») там не работают, хотя и не вызывают ошибок.
Первый вызов процедуры «УстановкаПараметровСеанса» — это самый первый программно доступный обработчик событий.
Уже после него вызываются обработчики ПередНачаломРаботыСистемы и ПриНачалеРаботыСистемы модулей клиенских приложений.
Обработчики событий
УстановкаПараметровСеанса
Синтаксис:
Параметры:
<Параметры сеанса>
Тип: Массив; Неопределено.
Массив устанавливаемых идентификаторов параметров сеанса, которые нужно инициализировать, если обработчик вызывается перед использованием неинициализированных параметров сеанса.
Неопределено, если обработчик события вызывается системой при начале сеанса или при захвате соединения из пула.