Объект "Параметры сеанса" предназначен для хранения значений определенных типов для каждого клиентского сеанса на время работы этого сеанса. По сути, это некая глобальная (???) переменная, привязанная к сеансу текущего пользователя.
Параметры сеанса задаются только программно, универсального интерфейса для установки параметров сеанса в системе нет.
Инициализацию параметров сеанса следует выполнять в модуле сеанса (см. ниже), а их значения рекомендуется использовать в запросах и условиях ограничения доступа к данным для текущего сеанса. Если параметр не определен, во время обращения к нему будет вызвана ошибка.
Открытие модуля сеанса выполняется с помощью контекстного меню в окне конфигурации:
Примеры параметров сеанса 1С:
ТекущийПользователь
(типСправочникСсылка.Пользователи
);ОбменДаннымиВключен
(типБулево
);РабочееМестоКлиента
(типСправочникСсылка.РабочиеМеста
).
Параметры сеанса доступны из встроенного языка 1С:Предприятия, например:
1 ЗначениеТекущегоПользователя = ПараметрыСеанса.ТекущийПользователь;
В этом случае, для установки или получения значения параметра сеанса текущий пользователь должен быть наделен соответствующим правом.
Также они могут использоваться в текстах ограничений доступа, например:
1 ГДЕ Документ.Пользователь = &ТекущийПользователь
В последнем случае для получения значения параметра сеанса наличия у текущего пользователя соответствующего права не требуется.
Особенности использования параметров сеанса 1С:
- Не рекомендуется использовать параметры сеанса для хранения значений, используемых исключительно в клиентской логике. Поскольку в клиент-серверном варианте 1С:Предприятия параметры сеанса хранятся на сервере, то любое их считывание или изменение в процессе работы на клиенте потребует дополнительного серверного вызова и увеличит объем передаваемых данных с клиента на сервер и обратно. В таких случаях следует использовать глобальные переменные модуля управляемого приложения (и обычного приложения – для режима обычного приложения, соответственно).
- Не рекомендуется использовать параметры сеанса для кеширования вычисленных значений, которые многократно используются в серверной бизнес-логике. В таких случаях следует определять функцию в серверном общем модуле с повторным использованием возвращаемых значений. Исключение составляют случаи, когда время вычисления результата функции модуля с повторным использованием возвращаемых значений соизмеримо с периодом сброса платформенного кеша.
- Не следует производить инициализацию параметров сеанса при запуске программы, так как:
- не все параметры сеанса запрашиваются из кода конфигурации при запуске программы;
- при работе программы возможно намеренное обнуление значений параметров сеанса из кода на встроенном языке.
Установка параметров сеанса 1С по требованию
Материал с сайта https://its.1c.ru/db/v8std#content:-2145783234:hdoc
Правильным способом установки значений параметров сеанса является установка значений "по требованию" в обработчике УстановкаПараметровСеанса
модуля сеанса. Т.е. параметры сеанса должны быть инициализированы только в тот момент, когда к ним происходит первое обращение, как к неустановленным.
Пример установки параметров сеанса "по требованию":
12345678910111213141516171819202122232425262728293031323334353637383940414243444546 Процедура УстановкаПараметровСеанса(ИменаПараметровСеанса)Если ИменаПараметровСеанса = Неопределено Тогда// Раздел установки параметров сеанса при начале сеанса (ИменаПараметровСеанса = Неопределено).//Выполняется установка параметров сеанса, которые можно инициализировать при начале работы системыИначе// Установка параметров сеанса "по требованию"// Параметры сеанса, инициализация которых требует обращения к одним и тем же// данным, следует инициализировать сразу группой. Для того, чтобы избежать// их повторной инициализации, имена уже установленных параметров сеанса сохраняются// в массиве УстановленныеПараметрыУстановленныеПараметры = Новый Массив;Для Каждого ИмяПараметра Из ИменаПараметровСеанса ЦиклУстановитьЗначениеПараметраСеанса(ИмяПараметра, УстановленныеПараметры);КонецЦикла;КонецЕсли;КонецПроцедуры// Установить значения параметров сеанса и возвратить имена установленных// параметров сеанса в параметре УстановленныеПараметры.//// Параметры// ИмяПараметра - Строка - имя параметра сеанса, который требуется установить (проинициализировать).// УстановленныеПараметры - Массив, в который добавляются имена установленных (проинициализированных) параметров.Процедура УстановитьЗначениеПараметраСеанса(Знач ИмяПараметра, УстановленныеПараметры)// Если в данном вызове УстановкаПараметровСеанса параметр ИмяПараметра уже был установлен - возврат.Если УстановленныеПараметры.Найти(ИмяПараметра) <> Неопределено ТогдаВозврат;КонецЕсли;Если ИмяПараметра = "ТекущийПользователь" ТогдаПараметрыСеанса.ТекущийПользователь = <значение>;ПараметрыСеанса.<другой параметра сеанса> = <значение>;УстановленныеПараметры.Добавить(ИмяПараметра);УстановленныеПараметры.Добавить("<другой параметра сеанса>");КонецЕсли;КонецПроцедуры
Пример установки текущего пользователя 1С:
- В дереве метаданных создадим новый параметр сеанса —
ТекущийПользователь
, назначим ему тип —СправочникСсылка.Сотрудники
. - В модуле сеанса создадим процедуру, в которой будет определяться текущий параметр сеанса:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Процедура УстановкаПараметровСеанса(ТребуемыеПараметры) //ищем Сотрудника по имени пользователя ТекПользователь = Справочники.Сотрудники.НайтиПоНаименованию(ИмяПользователя()); //если не нашли - создаём нового Сотрудника Если ТекПользователь.Пустая() Тогда НовПользователь = Справочники.Сотрудники.СоздатьЭлемент(); НовПользователь.Наименование = ИмяПользователя(); НовПользователь.Записать(); ТекПользователь = НовПользователь.Ссылка; КонецЕсли; //присваиваем параметру сеанса ТекущийПользователь ссылку на справочник Сотрудники ПараметрыСеанса.ТекущийПользователь = ТекПользователь; КонецПроцедуры |
После этого в любом месте конфигурации вы можете узнать, кто текущий пользователь, просто используя конструкцию «ПараметрыСеанса.ТекущийПользователь
».