Современные системы состоят из множества различных сервисов, и одной из основных задач является обеспечение обмена данными между компонентами системы. Для обеспечения этой функциональности используются шины данных (Enterprise Service Bus, ESB), интегрирующие различные приложения и системы в единую информационную среду. Она выступает в роли «посредника», минимизируя прямые связи между отдельными системами и обеспечивая гибкость взаимодействия. Таким образом, основная цель внедрения ESB — оптимизировать и унифицировать взаимодействие внутри информационного ландшафта предприятия.
При этом шина данных должна обеспечивать маршрутизацию сообщений, то есть определять путь, по которому сообщение следует от отправителя к получателю, на основе заданных правил, содержания сообщения или других критериев (например, типа события или адресата).
Отдельной проблемой является совместимость различных форматов сообщений. Так, если системы подключенные к шине используют несовместимые форматы данных (XML, JSON, CSV) и протоколы связи (HTTP, JMS, FTP, SOAP, REST), то ESB конвертирует данные сразу в потоке.
Шина данных должна обеспечивать централизацию интеграции — все настройки маршрутов, правил безопасности и трансформаций сконцентрированы в одном месте, что упрощает сопровождение.
Управление транзакциями и надёжность — в зависимости от категории шина может обеспечивать гарантированную доставку сообщений, поддержку распределённых транзакций и сохранность данных.
И еще одна важная функция это мониторинг и логирование — ESB фиксирует факт передачи и получения сообщений, что позволяет отслеживать статус интеграционных сценариев.
Таким образом, ESB используется в тех случаях, когда необходимо обеспечить взаимодействие большого количество разнородных систем — если в организации используется множество различных приложений, ESB помогает их объединить. Также шина данных упрощает внесение изменений в интеграционные процессы и обеспечивает надёжную и безопасную передачу данных.
1С:Шина
В линейке 1С имеется решение 1С:Шина — это программный продукт класса «Сервисная шина предприятия», обеспечивающий обмен данными между различными информационными системами, работающими как на платформе «1С:Предприятие», так и с системами на других платформах.
1С:Шина перенаправляет все обмены данными между различными системами через себя и предоставляя единую точку входа\выхода для всех информационных систем, а также единый инструмент управления и мониторинга.
Решение ESB от 1С позволяет обеспечить гарантированную доставку сообщений даже в случае, если получатель в данный момент недоступен. В таком случае шина будет держать сообщение в своем буфере, ожидая доступности получателя. При этом продолжительность хранения и другие настройки можно описать в логике работы шины.
Важной проблемой при работе с шинами данных является использование коннекторов, с помощью которых осуществляется взаимодействие с системами. В случае если готового коннектора для данной системы нет, нам придется его самостоятельно разработать.
В 1С:Шина имеется множество готовых коннекторов для различных систем, а также функционал для написания собственных коннекторов. Подробнее о способах подключения мы поговорим чуть позже.
При необходимости, проходящие через шину сообщения можно изменять и преобразовывать в нужный формат. Это удобно в тех случаях, когда отправитель отправляет сообщения в одном формате, а получатель обрабатывает другой.
Немаловажным моментом является интерфейс управления ESB. В 1С:Шина мы можем с помощью веб‑интерфейса выполнять административные задачи, такие как обновление конфигураций и изменение различных настроек. Также в этом интерфейсе можно следить за состоянием компонентов системы и осуществлять мониторинг.
Ниже представлена Панель управления шиной.

Способы подключения к шине
Шина данных предлагает различные способы взаимодействия с подключаемыми системами. Нам важно, чтобы наши подключаемые решения поддерживали хотя бы один из возможных способов взаимодействия.
Прежде всего, мы можем взаимодействовать с шиной с помощью веб сервисов. На стороне 1С:Шины создается веб сервис, использующий SOAP, с которым могут взаимодействовать системы, подключенные к шине. Для описания сервиса используются WSDL‑схемы.
Можно создавать собственные HTTP‑сервисы для обработки входящих HTTP‑запросов от внешних информационных систем. Также можно подключаться к сторонним HTTP‑сервисам через специальный узел, отправлять запросы к внешним ресурсам и формировать исходящие сообщения на основе результатов этих запросов. Функциональность HTTP‑протокола также позволяет использовать обмен данными в соответствии с существующим REST API.
Также есть возможность интегрироваться со сторонним брокером сообщений Apache ActiveMQ Artemis, например, настраивать асинхронную интеграцию с SAP PI (SAP NetWeaver Process Integration).
1С:Шина также даёт возможность обмениваться сообщениями по протоколу AMQP версии 1.0. и кроме этого, в 1С:Шине предусмотрены инструменты для подключения к брокеру сообщений RabbitMQ. Помимо этого, мы можем обмениваться данными с популярным брокером сообщений Kafka.
При необходимости шина может осуществлять прямой обмен с внешними СУБД (например, MS SQL Server, PostgreSQL) посредством использования драйвера JDBC. Возможно добавление нужных JDBC‑драйверов в сервер «1С:Шины».
Еще одна возможность взаимодействия с системами это использование сервисов интеграции. Это встроенный в платформу «1С:Предприятие» механизм, позволяющий обмениваться сообщениями через 1С:Шину. Платформа, совместно с 1С:Шиной, обеспечивает гарантированную доставку сообщений при простоте использования.
Если вам не подходят другие способы взаимодействия, то вы всегда можете воспользоваться обменом сообщениями между шиной и системами в виде файлов. ESB предоставляет возможность обмениваться файлами, подключаясь к файловым хранилищам, каталогам, в том числе сетевым, и различным FTP‑ресурсам.
Процесс построения обмена данными с помощью шины достаточно прост. С помощью специального конструктора мы указываем элементы, между которыми осуществляется информационный обмен. Также указываем связи между ними и направления обмена данными.

Создание проекта
Рассмотрим небольшой пример создания проекта в 1С:Шина на основе официальной документации с 1с.ru. Для примера будет использована информационная база («Управление торговлей»), а также информационная база («Бухгалтерия предприятия КОРП»). Для организации обмена с «1С:Шиной» будут использованы http‑сервисы.
В веб интерфейсе 1С:Шины создадим новый проект HTTP_Example и начнем заполнять его элементами, выбрав опции, представленные на рисунке.

В итоге получаем следующую схему проекта:
Из информационной базы «Управления торговлей, будет отправляться запрос в http‑сервис „1С:Шины“. В http‑сервисе „1С:Шины“ будет формироваться сообщение из полученного запроса, которое будет отправлено в узел „ПрограммныйИсточник“. Из узла „ПрограммныйИсточник“ сообщение поступит в узел „Канал1СНазначение“ для дальнейшей передачи в информационную базу „Бухгалтерии предприятия“, в которой доступны сервисы интеграции. После обработки входящего сообщения в модуле сервиса интеграции будет сформировано ответное сообщение, которое будет отправлено в „1С:Шину“, а далее передано в исходную систему через http‑запрос.
Для того чтобы опубликовать приложение, необходимо настроить узел «Http», заполнив обязательные реквизиты.

Далее необходимо создать http‑сервис «1С:Шины», который будет использоваться для взаимодействия с информационной базой. Для этого нужно выбрать подсистему «Основной», далее нажать правую кнопку мыши — откроется контекстное меню, в котором нужно выбрать «Новый», далее «Элемент проекта».
После создания http‑сервиса нужно создать шаблон URL http‑сервиса. Для этого нужно выбрать ранее созданный http‑сервис, далее нажать правую кнопку мыши — откроется контекстное меню, в котором выбрать «Новый», далее «Шаблон URL HTTP Сервиса».
Формирование сообщения будет происходить из тела входящего http‑запроса, для этого в обработчике метода «ОтправитьСообщение» напишем следующий код:
метод ОтправитьСообщение(Запрос: HttpСервисЗапрос)
если Запрос.Заголовки.Содержит("GetExchangeRate")
знч Сообщение = новый СообщениеИнтеграции({"GetExchangeRate":Истина}, Запрос.Тело)
ОбменДляСтарыхВерсий.ОтправитьСообщениеВУзлы(Сообщение, ОбменДляСтарыхВерсий.Схема.Узлы.ПрограммныйИсточник)
;
;
Здесь адрес http‑сервиса будет формироваться следующим образом: {АдресПубликацииПриложения}/api/{КорневойURLСервиса}/{ПутьКРесурсу}/{ПараметрыЗапроса}.
Для того чтобы обратиться к созданному http‑сервису, необходимо использовать следующий адрес:
«http://Адрес сервера 1С:Шины:Порт сервера 1С:Шины/applications/HTTPExample‑dev/api/exchange/sendmessage».
На этом настройка схемы интеграции завершена, можно переходить к публикации приложения.
После завершения настройки нам останется только выполнить публикацию проекта. В дальнейшем к данной шине можно будет добавлять информационные системы, которые будут осуществлять обмен сообщениями с помощью HTTP.
Заключение
В этой статье мы поговорили о том, что такое шина данных, как ее можно использовать в экосистеме продуктов 1С и рассмотрели небольшой пример создания собственной шины между продуктами 1С. Шины данных являются важным элементом в архитектуре многих решений и их использование позволяет существенно упростить взаимодействие между различными компонентами сложных систем.
Таким образом, использование сервисной шины предприятия позволяет не только выстроить надежные интеграционные процессы, но и структурировать архитектуру всей системы. Однако для того чтобы грамотно проектировать подобные решения, требуется глубокое понимание архитектурных подходов и особенностей платформы.
Если вы хотите системно развить эти компетенции, рекомендуем обратить внимание на курс «Архитектор 1С». Также можно пройти вступительный тест — узнаете, достаточно ли ваших текущих знаний для поступления на курс.

А тем, кто настроен на серьезное системное обучение, рекомендуем рассмотреть Подписку — выбираете курсы под свои задачи, экономите на обучении, получаете профессиональный рост. Узнать подробнее