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

Параметры сеанса

Параметры сеанса находятся в дереве конфигурации в разделе «Общие».

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

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

В основном параметры сеанса используются как параметры для запросов ограничения прав доступа на уровне записей (RLS). Причем в запросе для RLS параметр сеанса можно указать как обычный параметр запроса через амперсанд (&): Реализация.Менеджер = &ТекущийПользователь.

Не рекомендуется часто изменять значения параметров сеанса, потому что запросы для RLS кэшируются, а если изменить значение параметра сеанса и он использовался в запросе RLS, то кэш сбрасывается.

Значения параметров сеанса хранятся отдельно для каждого пользователя, в течении всего сеанса пользователя.

Значения параметров сеанса сохраняются в сеансовых данных, на сервере. Изменять и читать значения параметров сеанса можно только на сервере. Если попытаться обратиться к параметрам сеанса на клиенте будет вызвана ошибка «Переменная не определена (ПараметрыСеанса)».

Для параметров сеанса можно назначать права доступа: на получение и на установку.

Если у пользователя нет права «Установка» для параметра сеанса, то установить параметр можно только в привилегированном общем модуле или в модуле сеанса (который всегда выполняется в привилегированном режиме).

Модуль сеанса

Данный модуль выполняется самым первым при загрузке конфигурации. Он всегда выполняется без контроля прав доступа (в привилегированном режиме).

В данном модуле есть только один обработчик УстановкаПараметровСеанса() с одним параметром ТребуемыеПараметры (при этом ничто не мешает переименовать данный параметр). Данный обработчик предназначен для инициализации параметров сеанса.

При запуске системы и вызове данного обработчика, параметр ТребуемыеПараметры = Неопределено. Если обратиться к неинициализированному параметру сеанса, то будет вызван данный обработчик, а в параметре ТребуемыеПараметры будет содержаться массив с именами параметров сеанса, к которым было выполнено обращение. Если после вызова хотя бы один из параметров сеанса из данного массива будет равен Неопределено, то будет вызвано исключение «Попытка получения неинициализированного значения параметра сеанса».

Работа с параметрами сеанса из встроенного языка

К параметрам сеанса можно обращаться только на сервере. Причем, можно как получать значения параметров, так и изменять:

ПараметрыСеанса.НовыйПараметр = ЗначениеНовогоПараметра();
Сообщить(ПараметрыСеанса.НовыйПараметр);

Параметры сеанса можно перебрать циклом Для Каждого:

Для Каждого Пар Из ПараметрыСеанса Цикл
	Сообщить(Пар);
КонецЦикла;

Можно очистить все значения параметров сеанса одним методом:

ПараметрыСеанса.Очистить();

Или только выбранные:

ОчищаемыеПараметры = Новый Массив;
ОчищаемыеПараметры.Добавить("НовыйПараметр");
ПараметрыСеанса.Очистить(ОчищаемыеПараметры);

Желательно инициализировать параметры сеанса при первом обращении к ним, а не при запуске приложения:

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

Использование параметров сеанса

Не рекомендуется использовать параметры сеанса как глобальные серверные переменные или как результат вычисления какого-либо значения на сервере, чтобы не вычислять его повторно. Хотя чисто технически так можно делать. Например в БСП (библиотека стандартных подсистем) есть параметр БуферОбмена, который используется для копирования строк табличной части.

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

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями: