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

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

Параметры сеанса в 1С: что это такое и как их использовать

Параметры сеанса в 1С: что это такое, где хранятся, как задать и прочитать значения в коде. Типовые параметры, настройка прав доступа, ошибки и практические примеры.

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

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

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

Что такое параметры сеанса и где они описываются

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

Физически значения хранятся в оперативной памяти сервера 1С (или в памяти клиентского приложения в файловом режиме) и привязаны к конкретному сеансу. У двух одновременно работающих пользователей один и тот же параметр имеет разные значения — в этом и состоит смысл механизма.

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

Как задаются значения: модуль сеанса и событие УстановкаПараметровСеанса

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

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

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

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

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

Чтение выполняется простым обращением через менеджер: ТекущийПользователь = ПараметрыСеанса.ТекущийПользователь;. Запись — аналогично: ПараметрыСеанса.РежимОтладки = Истина;. Менять значение можно в любой момент внутри сеанса, и новое значение сразу видно всему коду этого сеанса.

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

Как добавить свой параметр сеанса
  1. 1
    Откройте конфигуратор, ветвь «Общие» → «Параметры сеанса», добавьте новый параметр и задайте имя и тип
  2. 2
    Откройте модуль сеанса и в обработчике УстановкаПараметровСеанса добавьте установку значения
  3. 3
    Обновите конфигурацию базы данных (F7)
  4. 4
    Перезапустите сеанс — параметры существующих сеансов не переинициализируются
  5. 5
    Проверьте значение через отладчик или сообщение: Сообщить(ПараметрыСеанса.ИмяПараметра)

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

Параметры сеанса и ограничение доступа (RLS)

Одно из главных назначений механизма — работа совместно с ограничением доступа к данным на уровне записей. В шаблоне RLS можно ссылаться на параметр сеанса, и платформа автоматически подставит его значение в условие запроса к таблице.

Классический пример: параметр сеанса «РазрешённыеСклады» (или текущее подразделение пользователя) используется в шаблоне ограничения для документов и регистров. Пользователь физически не может прочитать записи по чужим складам — отбор срабатывает на уровне СУБД, а не только в интерфейсе.

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

Типовые параметры в стандартных конфигурациях

В конфигурациях на Библиотеке стандартных подсистем (БСП) уже реализован набор параметров, которые полезно знать, чтобы не создавать дубли:

  • ТекущийПользователь — ссылка на элемент справочника «Пользователи», соответствующий учётной записи;
  • УстановленныеРасширения, ПараметрыКлиентаНаСервере — служебные данные для работы подсистем;
  • параметры обмена данными и синхронизации — флаги и ссылки узлов планов обмена;
  • параметры дат запрета изменения данных — используются подсистемой контроля закрытых периодов.

Перед тем как добавлять собственный параметр, проверьте, нет ли готового в используемой библиотеке. Обращение к типовым параметрам делает внедрение совместимым с обновлениями конфигурации.

Где хранить данные: сравнение вариантов

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

Контекст текущего сеанса: пользователь, его роли, временные флаги. Не переживает завершение сеанса.

Константы

Общие настройки всей базы, одинаковые для всех пользователей и постоянные во времени.

Хранилище общих настроек

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

Регистры сведений

Структурированные данные с историей и измерениями — например, соответствие сотрудников и подразделений на дату.

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

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

Типичные ошибки
01
Обращение к параметру до его установки — получаете пустое значение и неочевидные сбои отборов
02
Тяжёлые запросы в УстановкаПараметровСеанса — медленный вход в систему у всех пользователей
03
Использование параметров для хранения данных между сеансами — значения теряются при выходе
04
Ожидание, что изменение параметра увидит другой сеанс — каждый сеанс изолирован
05
Добавление параметра без обновления конфигурации БД и перезапуска сеанса — изменения не применяются
06
Шаблон RLS, дающий полный доступ при пустом параметре — дыра в безопасности

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

Как проверить, что параметры работают правильно

Базовая проверка — отладчик: поставьте точку останова в модуле сеанса и убедитесь, что обработчик вызывается и параметр получает ожидаемое значение. Затем в табло проверьте значение ПараметрыСеанса.ИмяПараметра уже в рабочем коде.

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

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

Вызов обработчика УстановкаПараметровСеанса
Норма

Точка останова срабатывает при старте сеанса

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

Обработчик не вызывается — проверьте, что модуль сеанса сохранён и конфигурация БД обновлена

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

Параметр содержит ожидаемую ссылку или значение

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

Пустое значение — ошибка в логике поиска (например, пользователь не найден по имени)

Работа отборов и RLS
Норма

Пользователь видит только разрешённые записи

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

Видны лишние данные или не видно ничего — проверяйте шаблон ограничения и заполненность параметра

Скорость входа в систему
Норма

Вход занимает привычное время

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

Заметная задержка после добавления кода в модуль сеанса — оптимизируйте запросы

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

Частые вопросы о параметрах сеанса

Чем параметры сеанса отличаются от глобальных переменных?

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

Сохраняются ли параметры сеанса после перезапуска программы?

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

Можно ли изменить параметр сеанса в середине работы?

Да, присваивание ПараметрыСеанса.ИмяПараметра = Значение работает в любой момент. Новое значение сразу видно всему коду текущего сеанса, включая отборы RLS. Другие сеансы это изменение не затрагивает.

Почему параметр возвращает пустое значение?

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

Сколько параметров сеанса можно создать?

Жёсткого ограничения нет, но каждый параметр — это код инициализации и потенциальная нагрузка при старте сеанса. Разумная практика — держать только действительно сеансовые данные, а остальное выносить в справочники, регистры и настройки.

Работают ли параметры сеанса в фоновых заданиях?

Да, фоновое задание выполняется в собственном сеансе, и обработчик установки параметров для него вызывается. Значения могут отличаться от интерактивного сеанса — например, фоновое задание часто работает от служебного пользователя, что нужно учитывать в логике.

Итог

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

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