Вопрос интеграции программных продуктов «1С» с внешними системами и между собой всегда остается актуальным. С появлением продукта 1С:Шина у разработчиков и архитекторов возникло множество вопросов: является ли это «серебряной пулей», заменяет ли она привычную «Конвертацию данных» и как её настроить, если одна из баз находится в облаке, а другая — сильно кастомизированная старая версия. В этой статье мы подробно разберем, что представляет собой 1С:Шина, в каких случаях она полезна и как правильно подойти к процессу настройки обмена.
Рассмотрим природу этого продукта. В отличие от привычных нам обработок обмена или планов обмена, 1С:Шина — это полноценное связующее программное обеспечение (Middleware) класса ESB (Enterprise Service Bus). Часто специалисты настраивают обмены через брокеры сообщений, и Шина — это следующий этап в развитии этой идеи. Проанализируем ключевые отличия, которые часто вызывают путаницу у специалистов:
Многие ошибочно полагают, что Шина — это просто «транспортная труба». Выясним, почему это не так. В 1С:Шине реализован собственный мощный язык, позволяющий описывать логику трансформации сообщений. Если вам нужно изменить структуру JSON или пересчитать поля «на лету», вы можете сделать это прямо внутри Шины, не нагружая кодом конечные базы.
Разберем, как именно 1С:Предприятие взаимодействует с Шиной. Начиная с версии платформы 8.3.18, появился специальный объект метаданных — Сервис интеграции. Проанализируем алгоритм работы этого механизма:
СервисИнтеграции.Посмотрим на пример кода, как может выглядеть отправка сообщения из кода 1С (для подготовки данных часто полезна универсальная выгрузка документов в JSON):
// Пример отправки сообщения через сервис интеграции
Сервис = СервисыИнтеграции.МойОбменСМаркетплейсом;
Сообщение = Сервис.СоздатьСообщение();
Сообщение.Параметры.Вставить("ТипОбъекта", "Заказ");
Сообщение.УстановитьТелоИзСтроки(ДанныеВФорматеJSON, КодировкаТекста.UTF8);
// Отправка в канал "ИсходящиеЗаказы"
Сервис.Отправить(Сообщение, "ИсходящиеЗаказы");
Важно понимать: такой подход кардинально отличается от прямого вызова HTTP-запроса (для тестирования которых удобно использовать Post1С — аналог Postman). Если сервер на стороне «стороннего ресурса» упадет, ваше сообщение не пропадет — оно будет дожидаться своей очереди в Шине.
Существует мнение, что в Шине нельзя сопоставлять данные (например, номенклатуру по УИД или артикулу). Проанализируем эту ситуацию подробнее. Шина действительно не является базой данных и не хранит в себе таблицы соответствий «База А — База Б». Однако она предоставляет инструменты для реализации трансформации.
Если вам нужно сопоставить контрагентов, у вас есть два пути:
Для классического сопоставления объектов «старая УТ 8.2 — Бухгалтерия в облаке» часто по-прежнему целесообразно использовать КД 2.0/3.0 для подготовки пакета данных, а Шину использовать именно как надежный транспорт, обеспечивающий доставку этого пакета.
Часто возникает вопрос: «А поймет ли сторонний сайт нашу Шину?». Рассмотрим, как Шина взаимодействует с внешним миром. Она поддерживает стандартные протоколы, которые являются «родными» для большинства современных систем:
Таким образом, «стороннему ресурсу» не нужно знать ничего про 1С. Для него взаимодействие будет выглядеть как стандартный обмен сообщениями по привычному протоколу.
Выясним причину, по которой внедрение Шины в сценарии «Облако + УТ 8.2» может быть затруднено. Рассмотрим ограничения, упомянутые в обсуждении:
1. Ограничения облака: В сервисах типа «1С:БухОбслуживание» или «1С:Фреш» возможности внесения изменений в конфигурацию ограничены. Для использования Шины через нативный Сервис интеграции вам потребуется расширение, которое должно пройти аудит. Если аудит запрещает использование низкоуровневых сервисов, администрация сервиса обычно рекомендует стандартный интерфейс oData.
2. Устаревшие версии (УТ 8.2): Платформы старых версий не содержат объекта СервисИнтеграции. Чтобы подключить такую базу к Шине, придется использовать «костыли»:
В такой ситуации стоит взвесить трудозатраты. Если у вас всего две точки обмена, использование Шины может быть избыточным. Но если систем становится 3, 5 или 10 — Шина становится незаменимой для централизации управления потоками данных.
Подведем итог и определим критерии, по которым мы можем рекомендовать этот инструмент:
Проанализировав ситуацию автора темы, можно сделать вывод: для разовой связки «облачной» бухгалтерии и одной старой базы УТ, где основной задачей является сопоставление справочников, более простым и дешевым решением будет использование OData или стандартных веб-сервисов с логикой сопоставления внутри расширения 1С. Однако для построения масштабируемой ИТ-инфраструктуры предприятия 1С:Шина является современным и крайне мощным инструментом, требующим, тем не менее, отдельной компетенции в 1С:EDT и архитектуре очередей.