Разработка и Конфигурация · 12 мин
Сервисы интеграции в 1С: что это такое и как их применять
Что такое сервисы интеграции в 1С, чем они отличаются от HTTP-сервисов, как создать и настроить точку подключения, типичные ошибки и проверка результата.
Сервисы интеграции — это объект метаданных платформы 1С:Предприятие, который появился в версии 8.3.22 и предназначен для обмена данными между информационной базой и внешними системами через брокеры сообщений. В отличие от классических HTTP-сервисов, где 1С сама выступает сервером и отвечает на запросы, сервис интеграции работает по модели «подписка на канал»: конфигурация отправляет сообщения в канал и получает сообщения из него асинхронно, не держа открытое соединение.
Такой подход снимает главную проблему прямой интеграции: зависимость систем друг от друга в реальном времени. Если приёмник недоступен, сообщение не теряется — оно остаётся в канале и будет обработано позже. Это делает обмен устойчивым к перезагрузкам серверов, обновлениям конфигураций и разрывам сети, что критично для связки 1С с CRM, интернет-магазинами, WMS и корпоративными шинами данных.
Механизм рассчитан на разработчиков и администраторов, которые строят обмен без промежуточных файлов и ручного запуска обработок. В статье разберём, как устроен объект, когда его выбирать вместо HTTP-сервисов и планов обмена, как настроить подключение и как проверить, что интеграция работает.
Что такое сервис интеграции и как он устроен
Сервис интеграции добавляется в конфигураторе в ветке «Общие» дерева метаданных. Внутри объекта задаются каналы — именованные направления обмена. Каждый канал может быть исходящим (1С отправляет сообщения наружу) или входящим (1С получает сообщения и обрабатывает их в обработчике на встроенном языке).
Физически сообщения проходят через внешний брокер: платформа поддерживает подключение к Apache Kafka и RabbitMQ, а также может работать с внутренней шиной сервера 1С. 1С не хранит очередь сама — она лишь публикует сообщения и забирает их из каналов. Формат тела сообщения произвольный: чаще всего это JSON, но допустимы XML и двоичные данные.
Обработка входящих сообщений выполняется в фоновом задании, которое платформа запускает автоматически при активном канале. Код обработчика пишется в модуле сервиса интеграции: там доступны объект сообщения, его тело, заголовки и возможность подтвердить или отклонить обработку.
Чем сервис интеграции отличается от HTTP-сервисов и планов обмена
Выбор механизма определяет надёжность и стоимость сопровождения всей связки. Один и тот же сценарий «передать заказ из сайта в 1С» можно реализовать тремя способами, и у каждого свои границы применимости.
| Критерий | Сервис интеграции | HTTP-сервис | План обмена |
|---|---|---|---|
| Модель взаимодействия | Асинхронная, через брокера | Синхронная, запрос–ответ | Регламентная, по расписанию |
| Гарантия доставки | Есть, сообщение хранится в брокере | Нет, при сбое запрос теряется | Есть, за счёт регистрации изменений |
| Зависимость от доступности приёмника | Нет | Полная | Частичная |
| Требования к инфраструктуре | Нужен брокер сообщений | Нужна публикация на веб-сервере | Только платформа 1С |
| Типичный сценарий | Связь с внешними системами и шиной | API для мобильных приложений, вебхуки | Обмен между базами 1С |
Практическое правило простое: если обе системы — это базы 1С и допустима задержка в минуты, проще использовать план обмена. Если внешней системе нужен мгновенный ответ (проверка остатка, авторизация), нужен HTTP-сервис. Если важно не потерять события и развязать системы по времени — сервис интеграции.
Сравнение вариантов
Подходит для событийного обмена с внешними системами при наличии брокера. Ограничение: требует платформы 8.3.22+ и навыков администрирования брокера.
Подходит, когда нужен немедленный ответ на запрос. Ограничение: при недоступности базы 1С вызывающая сторона получает ошибку, повтор — её забота.
Подходит для регулярного обмена между базами 1С без внешней инфраструктуры. Ограничение: слабо приспособлен для интеграции с не-1С системами.
Когда сервис интеграции — оправданный выбор
Механизм оправдан, когда события нельзя терять: регистрация оплат, передача заказов на склад, синхронизация статусов доставки, выгрузка в корпоративную шину предприятия. В этих сценариях потеря одного сообщения означает расхождение остатков или неотгруженный заказ, а ручной поиск потерь дороже, чем внедрение брокера.
Второй признак — разнородный ландшафт. Если с 1С обмениваются три и более систем (сайт, CRM, WMS, BI), прямые HTTP-связки превращаются в «паутину», где изменение одного интерфейса ломает остальные. Брокер выступает единой точкой обмена: каждая система знает только про свои каналы.
И наоборот, сервис интеграции избыточен, если обмен один-единственный, идёт раз в сутки и допускает ручной перезапуск. В таком случае проще и дешевле план обмена или выгрузка файлами через регламентное задание.
Как выбрать действие
Как создать и настроить сервис интеграции
Настройка состоит из двух частей: описание объекта в конфигураторе и указание параметров подключения. Параметры подключения (адрес брокера, учётные данные) задаются не в конфигурации, а в настройках информационной базы — через консоль кластера или программно, что позволяет различать тестовый и рабочий контуры без изменения конфигурации.
- 1Убедитесь, что сервер работает на платформе 8.3.22 или новее, а брокер сообщений развёрнут и доступен из сети сервера 1С.
- 2В конфигураторе создайте объект «Сервис интеграции» в ветке «Общие» и добавьте каналы: входящие для приёма, исходящие для отправки.
- 3Для входящих каналов напишите обработчик в модуле сервиса: разбор тела сообщения, создание или изменение объектов, подтверждение обработки.
- 4Задайте параметры подключения к брокеру в настройках информационной базы (адрес, порт, аутентификация).
- 5Обновите конфигурацию базы данных и проверьте, что фоновые задания обработки каналов запустились.
- 6Отправьте тестовое сообщение и убедитесь, что обработчик отработал без ошибок.
Для отправки сообщения из кода используется менеджер сервисов интеграции. Типовой фрагмент выглядит так:
Канал = СервисыИнтеграции.МойСервис.Каналы.ЗаказыИсходящие;
Сообщение = Канал.СоздатьСообщение();
Сообщение.УстановитьТелоИзСтроки(ТекстJSON);
Канал.ОтправитьСообщение(Сообщение);
Обратите внимание: имена каналов в конфигурации и топики/очереди в брокере должны быть согласованы с командой, которая администрирует брокер. Расхождение в имени — самая частая причина «молчаливой» неработоспособности, когда ни отправитель, ни получатель не выдают ошибок, но сообщения не доходят.
Обработка входящих сообщений и надёжность
Обработчик входящего канала выполняется в транзакции. Пока обработчик не завершился успешно, сообщение не считается подтверждённым и может быть доставлено повторно. Из этого следует ключевое требование к коду: обработчик должен быть идемпотентным — повторная обработка того же сообщения не должна создавать дубль документа или двойное списание остатка.
Практический приём — сохранять уникальный идентификатор сообщения (его передаёт отправляющая система в заголовке или теле) в служебном регистре сведений и перед обработкой проверять, не обрабатывалось ли оно ранее. Это дешёвая страховка от дублей при повторных доставках.
Ошибки в обработчике не должны «глотаться» пустой попыткой-исключением. Если сообщение содержит некорректные данные, правильнее записать ошибку в журнал регистрации с телом сообщения и либо отклонить сообщение в отдельную очередь ошибок, либо оставить его на повторную обработку — в зависимости от того, временная это проблема (недоступен справочник) или постоянная (битый формат).
Проверка работы и мониторинг
Работающая интеграция определяется тремя признаками: каналы активны, сообщения не накапливаются в очереди брокера, обработанные события отражаются в данных 1С. Проверять нужно все три, потому что каждый из сбоев по отдельности не останавливает остальные.
Как проверить результат
Каналы активны, фоновые задания обработки выполняются без ошибок
Канал отключён или фоновое задание падает с исключением
Количество необработанных сообщений близко к нулю или сокращается
Очередь непрерывно растёт — приёмник не успевает или не работает
По тестовому сообщению создан корректный объект без дублей
Объекты отсутствуют, дублируются или содержат пустые поля
Нет повторяющихся ошибок обработчика
Одна и та же ошибка повторяется для каждого сообщения
Для постоянного контроля настройте регламентную проверку: отложенную запись метрик в регистр или отправку уведомления администратору, если очередь превышает допустимый порог. Встроенных «красивых» дашбордов у платформы для этого нет, поэтому мониторинг обычно строят на стороне брокера (штатные средства Kafka или RabbitMQ) плюс контроль ошибок в журнале регистрации 1С.
Типичные ошибки и ограничения механизма
Из ограничений стоит помнить о трёх. Во-первых, механизм недоступен на платформах ниже 8.3.22 — на старых версиях придётся использовать внешние компоненты или HTTP. Во-вторых, сервис интеграции не предназначен для синхронных сценариев: получить «ответ» можно только как отдельное сообщение в обратном канале, что усложняет логику. В-третьих, появляется новый элемент инфраструктуры — брокер, который нужно резервировать, обновлять и мониторить; его отказ остановит весь обмен.
Начинайте внедрение с одного некритичного потока — например, синхронизации справочника контрагентов. На нём отладьте идемпотентность, обработку ошибок и мониторинг, и только потом переводите на механизм финансово значимые события вроде оплат и отгрузок.
Итоги
Сервисы интеграции закрывают нишу, которую раньше приходилось закрывать самописными очередями и внешними компонентами: гарантированный асинхронный обмен 1С с внешними системами. Механизм требует платформы 8.3.22+, развёрнутого брокера сообщений и дисциплины в написании обработчиков, но взамен даёт устойчивость к сбоям и независимость систем друг от друга.
Что важно запомнить
Сервис интеграции — асинхронный обмен через брокера сообщений, а не замена HTTP-сервисам. Выбирайте его там, где нельзя терять события, делайте обработчики идемпотентными, храните подключения вне конфигурации и контролируйте очередь в брокере.
Частые вопросы
На какой версии платформы доступны сервисы интеграции?
Механизм появился в платформе 8.3.22. На более ранних версиях объекта «Сервис интеграции» в дереве метаданных нет, и перенести конфигурацию с ним на старую платформу не получится — потребуется обновление сервера.
Можно ли использовать сервис интеграции без внешнего брокера?
Платформа поддерживает работу через встроенный сервис интеграции сервера 1С, который подходит для обмена между базами внутри одного кластера. Для связи с внешними системами всё равно понадобится полноценный брокер — Kafka или RabbitMQ.
Что произойдёт с сообщениями, если база 1С выключена?
Ничего страшного: сообщения останутся в очереди брокера. После запуска базы и активации каналов обработчик заберёт накопившиеся сообщения и обработает их в порядке поступления. Именно за это свойство механизм и выбирают.
Как защититься от дублей при повторной доставке?
Передавайте в сообщении уникальный идентификатор события и перед обработкой проверяйте его по служебному регистру сведений. Если идентификатор уже встречался — подтвердите сообщение без повторного создания объектов.
Чем сервис интеграции лучше обмена файлами через каталог?
Файловый обмен зависит от расписания, прав доступа к каталогу и не даёт подтверждения обработки. Брокер гарантирует доставку, хранит очередь при сбоях и позволяет обрабатывать события почти в реальном времени, а не раз в час.
Нужно ли публиковать базу на веб-сервере для работы сервиса интеграции?
Нет. В отличие от HTTP-сервисов, публикация не требуется: соединение с брокером инициирует сам сервер 1С. Это упрощает сетевую настройку и уменьшает поверхность атаки — база не принимает входящие подключения извне.