Перейти к основному содержимому

Сеансы интернет-сервисов 1С

Разработчику Архитектору

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

Сеансы интернет‑сервисов 1С — это специализированные сеансы, возникающие при обращении к опубликованным на веб‑сервере HTTP‑ и Web‑сервисам, а также к OData‑интерфейсам. В отличие от обычных пользовательских сеансов, они часто создаются по запросу, имеют ограниченный контекст (без полноценной формы и интерфейса) и ориентированы на передачу данных в формате JSON/XML. Такие сеансы могут не требовать интерактивной авторизации, если используется токен или API‑ключ, и обычно живут строго ограниченное время, чтобы снизить нагрузку и риски безопасности. Платформа управляет ими отдельно, применяя пулы и лимиты, и может завершать досрочно при превышении квоты или отсутствии активности.

Зачем переиспользовать сеанс

Каждый вызов HTTP-сервиса, Web-сервиса или OData без переиспользования создаёт новый сеанс информационной базы. При этом выполняется тяжёлый УстановкаПараметровСеанса() и связанная инициализация. На высокой частоте запросов это даёт задержки и нагрузку на кластер.

HTTP‑сервис в 1С — это механизм публикации прикладных функций в виде URL‑эндпоинтов, доступных по протоколу HTTP/HTTPS. Он позволяет вызывать серверные процедуры и функции из внешних систем, мобильных приложений и скриптов, передавая параметры в теле запроса или в query‑строке и получая ответ в JSON либо XML. HTTP‑сервисы строятся декларативно: разработчик описывает маршруты, методы (GET, POST и др.), параметры и обработчики, а платформа берёт на себя маршрутизацию, сериализацию и обработку ошибок. Это основной способ «открыть» логику 1С наружу без необходимости прямого доступа к базе.

Web‑сервис в терминологии 1С (часто подразумеваются SOAP‑сервисы) — это интерфейс, соответствующий стандартам веб‑сервисов с WSDL‑описанием и строгой типизацией. В отличие от HTTP‑сервисов, Web‑сервисы ориентированы на корпоративные интеграции с жёсткими контрактами: они используют XML‑сообщения, SOAP‑обёртки и WSDL для автоматической генерации клиентов в других системах. Платформа поддерживает публикацию и вызов таких сервисов, обеспечивая валидацию схем, обработку заголовков и транзакционную целостность. Web‑сервисы удобны, когда партнёры ожидают стандартный SOAP‑интерфейс, а не REST.

OData (Open Data Protocol) в 1С — это стандартизованный протокол доступа к данным, позволяющий читать и изменять объекты метаданных через унифицированные URL‑запросы. В платформе OData‑сервис даёт возможность запрашивать справочники, документы, регистры и отчёты с фильтрами, сортировкой, пагинацией и проекцией полей, не создавая собственных обработчиков. Формат ответа — JSON или Atom/XML, а семантика запросов близка к REST, но с жёсткой привязкой к структуре метаданных. OData особенно востребован в BI‑системах, самописных клиентах и аналитических витринах, где нужна универсальная точка доступа к данным без написания кода.

Информационная база (ИБ) — это целостная прикладная система, включающая конфигурацию (описание объектов и логики), данные (фактические записи), пользователей и права, а также служебные механизмы (журналы, полнотекстовый поиск, фоновые задания). ИБ может работать в файловом варианте либо в клиент‑серверном режиме на СУБД, сохраняя единый программный интерфейс. В рамках одной платформы можно одновременно обслуживать множество ИБ, каждая из которых имеет собственный набор данных и историю изменений, но использует общую технологическую среду выполнения.

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

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

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

Переиспользование сеансов позволяет обслужить следующий запрос уже "прогретым" сеансом.

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

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


Два режима

Автоматический пул

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

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

ВремяЖизниСеанса — это параметр, определяющий, сколько времени сеанс может оставаться активным без активности либо в состоянии «простоя» в пуле. По истечении этого времени платформа принудительно завершает сеанс, освобождая ресурсы и снижая риски безопасности из‑за устаревших сессий. Время жизни настраивается отдельно для интерактивных сеансов, фоновых заданий и сеансов сервисов, а также может зависеть от роли пользователя или типа нагрузки. Грамотная настройка этого параметра балансирует между отзывчивостью системы и экономией ресурсов.

Настраивается при публикации (параметры вроде poolSize, poolTimeout, sessionMaxAge / ВремяЖизниСеанса).

  • Сеансы хранятся в разрезе типа сервиса, имени, пользователя, разделителей, безопасного режима.
  • При запросе платформа ищет свободный сеанс с теми же параметрами.
  • Если пул заполнен — ожидание до poolTimeout, затем 406 Not Acceptable.
  • Свободный сеанс уничтожается по истечении ВремяЖизниСеанса.

Подходит для публичных сервисов с однотипными вызовами и унифицированными правами.

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

Ручное управление — заголовок IBSession

IBSession — это идентификатор (токен) сеанса, используемый в протоколах взаимодействия 1С с веб‑сервером и внешними клиентами. Он передаётся в заголовках или параметрах запроса и позволяет платформе найти соответствующий сеанс в памяти или в кластере, восстановить контекст и продолжить обработку. IBSession применяется в веб‑клиенте, HTTP‑сервисах и при работе через прокси, обеспечивая сохранение состояния между HTTP‑запросами. Безопасность IBSession обеспечивается шифрованием, ограничением времени жизни и проверкой привязки к IP или клиенту.

Клиент сам создаёт и завершает сеанс через HTTP-заголовок IBSession:

ЗначениеДействие
startСоздать сеанс; в ответе Set-Cookie: IBsession=<ID>
(cookie в следующих запросах)Использовать существующий сеанс
finishЗавершить сеанс из cookie

Без заголовка и cookie сеанс создаётся и уничтожается на каждый вызов.

Подходит для корпоративных интеграций внутри одной организации, когда нужен контроль жизненного цикла.

Cookie — это небольшие фрагменты данных, которые веб‑сервер отправляет браузеру и которые затем автоматически возвращаются с каждым запросом к этому домену. В контексте 1С cookie используют для хранения IBSession и других служебных маркеров, позволяющих поддерживать сессию между HTTP‑запросами без повторной аутентификации. Cookie могут быть сессионными (действуют до закрытия браузера) либо постоянными (с указанным сроком жизни), а также иметь флаги безопасности (Secure, HttpOnly) для защиты от перехвата и XSS. Платформа корректно обрабатывает cookie, интегрируя их с внутренней моделью сеансов.

Сессия — в широком смысле это синоним сеанса, но в веб‑контексте термин чаще относится к HTTP‑сессии: цепочке запросов, связанных общим идентификатором (IBSession в cookie или заголовке). Сессия абстрагирует состояние поверх stateless‑протокола HTTP: клиент не хранит состояние, а сервер связывает запросы по токену. В 1С понятия «сеанс» и «сессия» пересекаются, но «сеанс» — это внутренняя сущность платформы, а «сессия» — внешний контракт с клиентом; платформа прозрачно маппит сессии на сеансы, управляя их жизненным циклом и переиспользованием.

Корпоративная интеграция — это комплекс решений и механизмов, обеспечивающих обмен данными, синхронизацию процессов и совместное использование функциональности между 1С и другими корпоративными системами (ERP, CRM, WMS, DWH, банковские шлюзы и т. д.). В неё входят Web‑ и HTTP‑сервисы, OData, файловый обмен, прямое подключение к базам, очереди сообщений и EDI. Корпоративная интеграция строится с учётом требований к надёжности, безопасности, аудиту и согласованности данных: используются транзакции, контрольные суммы, статусы доставки, повторные попытки и журналирование. Для 1С это не просто передача файлов, а полноценная координация бизнес‑процессов между разнородными системами с сохранением целостности и отслеживанием ошибок.


Связанные материалы