Справочный материал

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

1.1. Параметры сеанса предназначены для хранения значений определенных типов для каждого клиентского сеанса на время работы этого сеанса. Инициализацию параметров сеанса следует выполнять в модуле сеанса (см. ниже раздел 2.1), а их значения рекомендуется использовать в запросах и условиях ограничения доступа к данным для текущего сеанса.Примеры параметров сеанса:Установка параметров сеанса "по требованию". См. также

Абстрактная серверная сессия: центральный светящийся узел по запросу активирует только нужные защищённые модули данных между клиентом и сервером.

Установка параметров сеанса "по требованию"

См. также

 

1.1. Параметры сеанса предназначены для хранения значений определенных типов для каждого клиентского сеанса на время работы этого сеанса. Инициализацию параметров сеанса следует выполнять в модуле сеанса (см. ниже раздел 2.1), а их значения рекомендуется использовать в запросах и условиях ограничения доступа к данным для текущего сеанса.
Примеры параметров сеанса:

  • ТекущийПользователь – тип СправочникСсылка.Пользователи
  • ОбменДаннымиВключен – тип Булево
  • РабочееМестоКлиента – тип СправочникСсылка.РабочиеМеста

Параметры сеанса доступны из встроенного языка 1С:Предприятия, например:

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

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

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

ГДЕ Документ.Пользователь = &ТекущийПользователь

В последнем случае для получения значения параметра сеанса наличия у текущего пользователя соответствующего права не требуется.

1.2.Не рекомендуется использовать параметры сеанса для хранения значений, используемых исключительно в клиентской логике. Поскольку в клиент-серверном варианте 1С:Предприятия параметры сеанса хранятся на сервере, то любое их считывание или изменение в процессе работы на клиенте потребует дополнительного серверного вызова и увеличит объем передаваемых данных с клиента на сервер и обратно.

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

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

Установка параметров сеанса "по требованию"

2.1. Не следует производить инициализацию параметров сеанса при запуске программы, так как:

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

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

Пример установки параметров сеанса "по требованию":

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

См. также

  • Влияние изменения значений параметров сеанса и функциональных опций на производительность механизма ограничения доступа к данным
Записаться по телефону