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