Разработка и Конфигурация · 11 мин
Параметры сеанса в 1С: что это такое и как их использовать
Параметры сеанса в 1С: что это такое, где хранятся, как задать и прочитать значения в коде. Типовые параметры, настройка прав доступа, ошибки и практические примеры.
Параметры сеанса в 1С — это переменные, которые создаются при старте сеанса пользователя и существуют до его завершения. Они доступны из любого места конфигурации и не требуют передачи между процедурами: значение задаётся один раз при входе в систему, а дальше программист просто читает его через обращение ПараметрыСеанса.ИмяПараметра. Это делает механизм удобным для хранения контекста текущего пользователя.
Типичное применение — хранение текущего пользователя, его подразделения, разрешённых складов, настроек отображения интерфейса, а также данных для механизма ограничения доступа к данным на уровне записей (RLS). Например, если в параметре сеанса хранится текущий сотрудник, отборы в запросах могут автоматически показывать только «его» документы.
Важно понимать: параметры сеанса — это не способ постоянного хранения данных. При завершении сеанса значения теряются, а при новом входе инициализируются заново. Если нужно сохранить настройку между сеансами, используются хранилища настроек, константы или регистры сведений.
Что такое параметры сеанса и где они описываются
Параметры сеанса — это отдельная ветвь дерева конфигурации: «Общие» → «Параметры сеанса». Разработчик добавляет параметр, задаёт ему имя и тип данных. Типом может быть примитивное значение (строка, число, булево, дата), ссылка на любой объект конфигурации (справочник, документ, перечисление) или составной тип.
Физически значения хранятся в оперативной памяти сервера 1С (или в памяти клиентского приложения в файловом режиме) и привязаны к конкретному сеансу. У двух одновременно работающих пользователей один и тот же параметр имеет разные значения — в этом и состоит смысл механизма.
Количество параметров не ограничено жёстко, но злоупотреблять ими не стоит: каждый параметр должен иметь понятное назначение, иначе конфигурация становится трудной для сопровождения. Типовые конфигурации используют этот механизм десятками параметров — от «ТекущийПользователь» до служебных флагов обмена данными.
Как задаются значения: модуль сеанса и событие УстановкаПараметровСеанса
Инициализация параметров происходит в модуле сеанса — специальном модуле, который выполняется на сервере при старте каждого сеанса. В нём обрабатывается событие УстановкаПараметровСеанса, куда платформа передаёт массив имён требуемых параметров.
Ключевая особенность: платформа вызывает обработчик не один раз, а по мере первого обращения к параметрам, причём может передавать только те имена, которые понадобились прямо сейчас. Поэтому код обработчика должен уметь устанавливать параметры как по одному, так и пакетом, и не должен зависеть от порядка вызовов.
Процедура УстановкаПараметровСеанса(ТребуемыеПараметры) Экспорт
Если ТребуемыеПараметры = Неопределено
Или ТребуемыеПараметры.Найти("ТекущийПользователь") <> Неопределено Тогда
ПараметрыСеанса.ТекущийПользователь =
Справочники.Пользователи.НайтиПоНаименованию(ИмяПользователя());
КонецЕсли;
КонецПроцедурыЕсли параметр не был установлен, при обращении к нему возвращается значение по умолчанию для его типа (пустая ссылка, пустая строка, ноль). Это частая причина ошибок: код ожидает заполненный параметр, а получает пустое значение, и логика отборов «молча» перестаёт работать.
Как читать и изменять параметры в коде
Чтение выполняется простым обращением через менеджер: ТекущийПользователь = ПараметрыСеанса.ТекущийПользователь;. Запись — аналогично: ПараметрыСеанса.РежимОтладки = Истина;. Менять значение можно в любой момент внутри сеанса, и новое значение сразу видно всему коду этого сеанса.
Проверить текущие значения в отладчике можно через табло: выражение ПараметрыСеанса разворачивается в список всех параметров с их значениями. Это удобный способ убедиться, что инициализация прошла корректно.
- 1Откройте конфигуратор, ветвь «Общие» → «Параметры сеанса», добавьте новый параметр и задайте имя и тип
- 2Откройте модуль сеанса и в обработчике УстановкаПараметровСеанса добавьте установку значения
- 3Обновите конфигурацию базы данных (F7)
- 4Перезапустите сеанс — параметры существующих сеансов не переинициализируются
- 5Проверьте значение через отладчик или сообщение: Сообщить(ПараметрыСеанса.ИмяПараметра)
Помните: изменение параметра в одном сеансе никак не влияет на другие сеансы, даже того же пользователя. Если пользователь работает в двух окнах (два сеанса), у каждого — свой набор значений.
Параметры сеанса и ограничение доступа (RLS)
Одно из главных назначений механизма — работа совместно с ограничением доступа к данным на уровне записей. В шаблоне RLS можно ссылаться на параметр сеанса, и платформа автоматически подставит его значение в условие запроса к таблице.
Классический пример: параметр сеанса «РазрешённыеСклады» (или текущее подразделение пользователя) используется в шаблоне ограничения для документов и регистров. Пользователь физически не может прочитать записи по чужим складам — отбор срабатывает на уровне СУБД, а не только в интерфейсе.
Для RLS параметр должен быть установлен до первого обращения к защищаемым данным. Если параметр пуст, поведение зависит от шаблона: в одних случаях пользователь не увидит ничего, в других — увидит всё. Второй вариант опасен, поэтому шаблоны стоит проектировать по принципу «нет значения — нет доступа».
Типовые параметры в стандартных конфигурациях
В конфигурациях на Библиотеке стандартных подсистем (БСП) уже реализован набор параметров, которые полезно знать, чтобы не создавать дубли:
- ТекущийПользователь — ссылка на элемент справочника «Пользователи», соответствующий учётной записи;
- УстановленныеРасширения, ПараметрыКлиентаНаСервере — служебные данные для работы подсистем;
- параметры обмена данными и синхронизации — флаги и ссылки узлов планов обмена;
- параметры дат запрета изменения данных — используются подсистемой контроля закрытых периодов.
Перед тем как добавлять собственный параметр, проверьте, нет ли готового в используемой библиотеке. Обращение к типовым параметрам делает внедрение совместимым с обновлениями конфигурации.
Где хранить данные: сравнение вариантов
Контекст текущего сеанса: пользователь, его роли, временные флаги. Не переживает завершение сеанса.
Общие настройки всей базы, одинаковые для всех пользователей и постоянные во времени.
Персональные настройки пользователя, которые должны сохраняться между сеансами: состав панелей, значения по умолчанию.
Структурированные данные с историей и измерениями — например, соответствие сотрудников и подразделений на дату.
Типичные ошибки и ограничения механизма
Самая распространённая проблема — обращение к параметру, который ещё не установлен. Второе место занимает попытка использовать параметры сеанса для обмена данными между сеансами: этого механизм не умеет в принципе, для межсеансового взаимодействия нужны регистры, очереди сообщений или другие средства.
Ещё одно ограничение: параметры сеанса недоступны в некоторых контекстах исполнения, где сеанс не инициализирован стандартным образом, например в отдельных служебных соединениях. В таких случаях обработчик установки либо не вызывается, либо работает в ограниченном окружении — это стоит учитывать при проектировании интеграций.
Как проверить, что параметры работают правильно
Базовая проверка — отладчик: поставьте точку останова в модуле сеанса и убедитесь, что обработчик вызывается и параметр получает ожидаемое значение. Затем в табло проверьте значение ПараметрыСеанса.ИмяПараметра уже в рабочем коде.
Как проверить результат
Точка останова срабатывает при старте сеанса
Обработчик не вызывается — проверьте, что модуль сеанса сохранён и конфигурация БД обновлена
Параметр содержит ожидаемую ссылку или значение
Пустое значение — ошибка в логике поиска (например, пользователь не найден по имени)
Пользователь видит только разрешённые записи
Видны лишние данные или не видно ничего — проверяйте шаблон ограничения и заполненность параметра
Вход занимает привычное время
Заметная задержка после добавления кода в модуль сеанса — оптимизируйте запросы
Для диагностики в рабочем режиме полезен технологический журнал: он покажет обращения к базе из модуля сеанса и поможет найти тяжёлые запросы, выполняемые при каждом входе пользователя.
Частые вопросы о параметрах сеанса
Чем параметры сеанса отличаются от глобальных переменных?
Встроенный язык 1С не имеет настоящих глобальных переменных, общих для клиента и сервера. Параметры сеанса — штатная замена: они доступны и на клиенте (через серверный вызов), и на сервере, при этом изолированы в рамках сеанса и управляются платформой.
Сохраняются ли параметры сеанса после перезапуска программы?
Нет. Параметр живёт ровно столько, сколько живёт сеанс. При новом входе выполняется обработчик УстановкаПараметровСеанса, и значения вычисляются заново. Для долговременного хранения используйте хранилище настроек, константы или регистры.
Можно ли изменить параметр сеанса в середине работы?
Да, присваивание ПараметрыСеанса.ИмяПараметра = Значение работает в любой момент. Новое значение сразу видно всему коду текущего сеанса, включая отборы RLS. Другие сеансы это изменение не затрагивает.
Почему параметр возвращает пустое значение?
Чаще всего обработчик установки не отработал: не обновлена конфигурация базы данных, ошибка в логике поиска (например, пользователь не найден) или ветка кода для этого параметра не выполнилась. Проверьте модуль сеанса отладчиком и убедитесь, что присваивание реально происходит.
Сколько параметров сеанса можно создать?
Жёсткого ограничения нет, но каждый параметр — это код инициализации и потенциальная нагрузка при старте сеанса. Разумная практика — держать только действительно сеансовые данные, а остальное выносить в справочники, регистры и настройки.
Работают ли параметры сеанса в фоновых заданиях?
Да, фоновое задание выполняется в собственном сеансе, и обработчик установки параметров для него вызывается. Значения могут отличаться от интерактивного сеанса — например, фоновое задание часто работает от служебного пользователя, что нужно учитывать в логике.
Что важно запомнить
Параметры сеанса — переменные, живущие от входа до выхода пользователя и доступные из любого кода. Задаются в модуле сеанса через УстановкаПараметровСеанса, применяются для контекста пользователя и RLS, не сохраняются между сеансами и не передаются между сеансами. Держите инициализацию лёгкой и всегда проверяйте заполненность параметров.