К статье
Практический материал

Разработка и Конфигурация · 11 мин

Где задаются параметры сеанса в 1С и как их правильно заполнить

Разбираем, где задаются параметры сеанса 1С: в конфигураторе, в коде на встроенном языке, через модуль сеанса и при подключении. Примеры, ошибки и проверка результата.

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

Задаются параметры сеанса в двух местах, которые часто путают. Первое — ветка метаданных «Параметры сеанса» в конфигураторе, где разработчик объявляет сам параметр: имя, тип данных и длину. Второе — программный код, который присваивает параметру конкретное значение при старте сеанса или в процессе работы. Объявление без присвоения оставляет параметр пустым, а присвоение без объявления невозможно.

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

Где в конфигураторе объявляются параметры сеанса

В конфигураторе параметры сеанса находятся в дереве метаданных: ветка «Общие» → «Параметры сеанса». Если дерево конфигурации открыто в стандартном виде, нужно развернуть узел «Общие» — там же расположены общие модули, роли, подсистемы. У каждого параметра есть имя, тип (любой допустимый тип, включая ссылки, списки значений и составные типы) и, для строк, длина.

Добавление нового параметра выполняется через контекстное меню «Добавить» на ветке «Параметры сеанса». В палитре свойств задаётся имя — именно по нему параметр будет доступен в коде через коллекцию ПараметрыСеанса. Тип выбирается осознанно: если планируется хранить ссылку на справочник «Пользователи», указывается СправочникСсылка.Пользователи, а не произвольный составной тип — это ускоряет работу и упрощает контроль заполнения.

Важно понимать: сам факт объявления параметра ничего не заполняет. Пока код не присвоил значение, параметр содержит значение по умолчанию своего типа — пустую ссылку, пустую строку, ноль или Неопределено, если тип не задан жёстко. Поэтому объявление всегда дополняется логикой установки значения.

Модуль сеанса и процедура УстановкаПараметровСеанса

Основное место, где задаются начальные значения параметров, — модуль сеанса. Он открывается из корня дерева конфигурации (контекстное меню корневого узла → «Открыть модуль сеанса»). В нём существует предопределённая процедура УстановкаПараметровСеанса, которую платформа вызывает при каждом старте сеанса — до открытия каких-либо форм.

Процедура получает параметр ТребуемыеПараметры — массив имён параметров, которые запросила платформа. Если сеанс стартует «холодно», массив пуст, и следует устанавливать все параметры. Если платформа обратилась за конкретными именами (например, при первом обращении к параметру из кода), достаточно заполнить только их — это экономит время запуска.

Типовой каркас выглядит так: проверка, требуется ли конкретный параметр, и его установка. Ниже пример минимальной реализации.

Процедура УстановкаПараметровСеанса(ТребуемыеПараметры) Экспорт

Если ТребуемыеПараметры = Неопределено

Или ТребуемыеПараметры.Найти("ТекущийПользователь") <> Неопределено Тогда

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

Справочники.Пользователи.НайтиПоНаименованию(ИмяПользователя());

КонецЕсли;

КонецПроцедуры

Критическое правило: процедура УстановкаПараметровСеанса не должна содержать кода, способного вызвать исключение при типовых условиях запуска. Ошибка в модуле сеанса означает, что база не откроется ни у одного пользователя — включая администратора, который мог бы исправить данные. Все обращения к данным здесь стоит оборачивать в попытку/исключение и предусматривать значения по умолчанию.

Как задать значение параметра из кода в любой момент

Помимо стартовой установки, параметр сеанса можно перезаписать в любой точке серверного кода — из общего модуля, модуля объекта, обработчика команды. Синтаксис простой: ПараметрыСеанса.ИмяПараметра = НовоеЗначение. Изменение действует до конца текущего сеанса и не затрагивает других пользователей.

Типичный сценарий — переключение контекста работы: пользователь выбрал другой склад или организацию в личных настройках, и обработчик записывает новое значение в параметр сеанса, чтобы все последующие отборы и проверки использовали его без повторных запросов. Это корректнее, чем читать настройку из базы при каждом обращении.

Ограничение: запись параметров сеанса доступна только в серверном контексте. В тонком и веб-клиенте прямое присвоение из клиентского модуля недоступно — нужно вызывать серверную процедуру. Также в файловой базе при работе через веб-сервер поведение идентично клиент-серверному: параметр живёт в рамках сеанса на стороне сервера.

bsl
// Серверная процедура в общем модуле
Процедура УстановитьТекущийСклад(Склад) Экспорт
	ПараметрыСеанса.ТекущийСклад = Склад;
КонецПроцедуры

Где задаются параметры, влияющие на запуск сеанса

Часть «параметров сеанса» в широком смысле задаётся не в конфигурации, а в настройках подключения. В параметрах командной строки и диалоге запуска указываются режим (тонкий, толстый, веб-клиент), строка подключения к серверу 1С или файловой базе, имя пользователя. Эти значения определяют, как сеанс будет создан, ещё до того, как исполнится модуль сеанса.

В клиент-серверном варианте часть характеристик сеансов настраивается в консоли кластера серверов 1С: максимальный объём памяти рабочих процессов, допустимое количество сеансов, таймауты, расписание регламентов. Это административные параметры, они не пересекаются с метаданными «Параметры сеанса», но по названию их часто смешивают. Различать их важно: первые управляются администратором кластера, вторые — разработчиком конфигурации.

Наконец, в типовых конфигурациях значения, которые пользователь меняет через интерфейс (дата запрета редактирования, настройки учёта), хранятся в константах или регистрах сведений, а в параметры сеанса попадают копии для быстрого доступа. Менять такие значения нужно через штатные формы настроек — прямое присвоение параметру сеанса даст эффект только до конца сеанса и будет перезаписано при следующем входе.

Где что задаётся

Метаданные «Параметры сеанса»

Объявление параметра: имя и тип. Делает разработчик в конфигураторе.

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

Начальные значения при старте. Код выполняется на каждый вход пользователя.

Произвольный серверный код

Перезапись значения в процессе работы, действует до конца сеанса.

Консоль кластера / командная строка

Технические параметры подключения и сеансов, к метаданным отношения не имеют.

Как проверить, что параметр установлен правильно

Самый быстрый способ проверки — отладчик. Ставится точка останова в УстановкаПараметровСеанса или сразу после неё, сеанс запускается под отладкой, и в табло вычисляется выражение ПараметрыСеанса.ИмяПараметра. Видно и фактическое значение, и его тип.

Без отладчика помогает временное сообщение: Сообщить(ПараметрыСеанса.ИмяПараметра) в серверной процедуре, вызываемой после входа. Для ссылочных типов полезно выводить не только представление, но и проверять заполненность через ЗначениеЗаполнено() — пустая ссылка внешне может выглядеть правдоподобно.

Косвенный признак корректной установки — поведение функционала, завязанного на параметр: отборы в списках, проверки прав, подстановка значений по умолчанию в документах. Если после входа документ подставляет не тот склад, а отладчик показывает пустой параметр, причина почти всегда в логике УстановкаПараметровСеанса: либо условие не сработало, либо поиск по данным вернул пустую ссылку.

Контрольные точки

Как проверить результат

Значение параметра в отладчике
Норма

Заполнено, тип соответствует объявленному

Тревожный признак

Пустая ссылка, Неопределено или несовпадающий тип

Повторный вход в базу
Норма

Параметр снова корректно установлен

Тревожный признак

После перезахода значение теряется — значит, оно задавалось только вручную

Работа зависимых механизмов
Норма

Отборы и подстановки используют нужное значение

Тревожный признак

Данные фильтруются неверно или не подставляются

Типичные ошибки и ограничения

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

Вторая частая проблема — попытка использовать параметры сеанса как постоянное хранилище. Параметр живёт только внутри сеанса: фоновое задание получает свою копию, новый сеанс — свою. Данные, которые должны пережить перезапуск, нужно хранить в константах, регистрах сведений или справочниках, а в параметр сеанса копировать только для ускорения доступа.

Третья группа ошибок связана с правами: если код установки параметра читает данные, к которым у пользователя нет прав, сеанс упадёт с ошибкой доступа ещё на этапе входа. В таких случаях чтение выполняют в привилегированном режиме (УстановитьПривилегированныйРежим) с последующим возвратом в обычный, либо проверяют доступность данных заранее.

Типичные ошибки
01
Необработанное исключение в модуле сеанса — база перестаёт открываться у всех пользователей
02
Хранение изменяемых пользователем настроек только в параметре сеанса — значения теряются при перезаходе
03
Присвоение параметра из клиентского кода тонкого клиента — ошибка компиляции или выполнения
04
Игнорирование массива ТребуемыеПараметры — лишние запросы при каждом старте сеанса
05
Чтение данных без привилегированного режима — ошибка прав доступа при входе рядового пользователя
Итог

Что важно запомнить

Параметр сеанса объявляется в ветке «Общие → Параметры сеанса» конфигуратора, а его значение задаётся кодом: при старте — в УстановкаПараметровСеанса модуля сеанса, в процессе работы — присвоением из серверного кода. Параметр живёт только внутри сеанса, поэтому постоянные настройки хранятся в базе, а в параметр копируются для быстрого доступа.

Частые вопросы

Можно ли задать параметр сеанса без изменения конфигурации?

Нет. Сам параметр должен быть объявлен в метаданных конфигурации, иначе обращение к нему в коде вызовет ошибку. Без изменения конфигурации можно лишь менять значения уже существующих параметров через штатные механизмы, если конфигурация их предоставляет.

Почему параметр сеанса пустой сразу после входа?

Чаще всего код в УстановкаПараметровСеанса не нашёл данные для заполнения: например, пользователь ИБ не сопоставлен с элементом справочника. Проверьте логику поиска в отладчике и убедитесь, что условие по массиву ТребуемыеПараметры не пропускает нужный параметр.

Видны ли параметры сеанса другим пользователям?

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

Как передать значение параметра в фоновое задание?

Фоновое задание создаёт новый сеанс, в котором модуль сеанса отрабатывает заново. Если начальное значение зависит от контекста вызывающего сеанса, его нужно передать через массив параметров метода Выполнить и присвоить параметру сеанса уже внутри фоновой процедуры.

Чем параметр сеанса отличается от константы?

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

Опасно ли добавлять новый параметр сеанса в работающую базу?

Само добавление метаданных безопасно и требует только обновления конфигурации. Риск представляет код его установки: ошибка или тяжёлый запрос в модуле сеанса повлияют на вход всех пользователей. Изменения стоит сначала проверить на копии базы.