Как настроить 1С:Шину для интеграции 1С со сторонними ресурсами и другими базами?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Что такое 1С:Шина и в чем её принципиальное отличие от других методов

Рассмотрим природу этого продукта. В отличие от привычных нам обработок обмена или планов обмена, 1С:Шина — это полноценное связующее программное обеспечение (Middleware) класса ESB (Enterprise Service Bus). Часто специалисты настраивают обмены через брокеры сообщений, и Шина — это следующий этап в развитии этой идеи. Проанализируем ключевые отличия, которые часто вызывают путаницу у специалистов:

  1. Технологический стек: В отличие от основной платформы «1С:Предприятие», Шина построена на другом языке (Java) и ориентирована на высокую производительность и обработку очередей сообщений.
  2. Среда разработки: Настройка логики обмена происходит не в привычном конфигураторе, а в среде 1С:EDT (Enterprise Development Tools).
  3. Асинхронность: Это главное преимущество. База-отправитель «выстреливает» сообщение в шину и мгновенно возвращается к своей работе. Ей не нужно ждать, пока база-приемник ответит или обработает данные.

Многие ошибочно полагают, что Шина — это просто «транспортная труба». Выясним, почему это не так. В 1С:Шине реализован собственный мощный язык, позволяющий описывать логику трансформации сообщений. Если вам нужно изменить структуру JSON или пересчитать поля «на лету», вы можете сделать это прямо внутри Шины, не нагружая кодом конечные базы.

Архитектура взаимодействия: Сервисы интеграции

Разберем, как именно 1С:Предприятие взаимодействует с Шиной. Начиная с версии платформы 8.3.18, появился специальный объект метаданных — Сервис интеграции. Проанализируем алгоритм работы этого механизма:

Посмотрим на пример кода, как может выглядеть отправка сообщения из кода 1С (для подготовки данных часто полезна универсальная выгрузка документов в JSON):


// Пример отправки сообщения через сервис интеграции
Сервис = СервисыИнтеграции.МойОбменСМаркетплейсом;
Сообщение = Сервис.СоздатьСообщение();
Сообщение.Параметры.Вставить("ТипОбъекта", "Заказ");
Сообщение.УстановитьТелоИзСтроки(ДанныеВФорматеJSON, КодировкаТекста.UTF8);

// Отправка в канал "ИсходящиеЗаказы"
Сервис.Отправить(Сообщение, "ИсходящиеЗаказы");

Важно понимать: такой подход кардинально отличается от прямого вызова HTTP-запроса (для тестирования которых удобно использовать Post1С — аналог Postman). Если сервер на стороне «стороннего ресурса» упадет, ваше сообщение не пропадет — оно будет дожидаться своей очереди в Шине.

Трансформация данных: заменяет ли Шина «Конвертацию данных»?

Существует мнение, что в Шине нельзя сопоставлять данные (например, номенклатуру по УИД или артикулу). Проанализируем эту ситуацию подробнее. Шина действительно не является базой данных и не хранит в себе таблицы соответствий «База А — База Б». Однако она предоставляет инструменты для реализации трансформации.

Если вам нужно сопоставить контрагентов, у вас есть два пути:

  1. MDM-подход: Использовать отдельную базу 1С как мастер-систему, где хранятся все соответствия, и обращаться к ней через Шину.
  2. Трансформация в Шине: Если правила преобразования простые (например, переименование полей или простая логика), они описываются в среде 1С:EDT с помощью встроенного языка Шины.

Для классического сопоставления объектов «старая УТ 8.2 — Бухгалтерия в облаке» часто по-прежнему целесообразно использовать КД 2.0/3.0 для подготовки пакета данных, а Шину использовать именно как надежный транспорт, обеспечивающий доставку этого пакета.

Интеграция со сторонними ресурсами (не 1С)

Часто возникает вопрос: «А поймет ли сторонний сайт нашу Шину?». Рассмотрим, как Шина взаимодействует с внешним миром. Она поддерживает стандартные протоколы, которые являются «родными» для большинства современных систем:

Таким образом, «стороннему ресурсу» не нужно знать ничего про 1С. Для него взаимодействие будет выглядеть как стандартный обмен сообщениями по привычному протоколу.

Особенности работы с облачными сервисами (БухОбслуживание) и старыми базами (УТ 8.2)

Выясним причину, по которой внедрение Шины в сценарии «Облако + УТ 8.2» может быть затруднено. Рассмотрим ограничения, упомянутые в обсуждении:

1. Ограничения облака: В сервисах типа «1С:БухОбслуживание» или «1С:Фреш» возможности внесения изменений в конфигурацию ограничены. Для использования Шины через нативный Сервис интеграции вам потребуется расширение, которое должно пройти аудит. Если аудит запрещает использование низкоуровневых сервисов, администрация сервиса обычно рекомендует стандартный интерфейс oData.

2. Устаревшие версии (УТ 8.2): Платформы старых версий не содержат объекта СервисИнтеграции. Чтобы подключить такую базу к Шине, придется использовать «костыли»:

В такой ситуации стоит взвесить трудозатраты. Если у вас всего две точки обмена, использование Шины может быть избыточным. Но если систем становится 3, 5 или 10 — Шина становится незаменимой для централизации управления потоками данных.

Когда стоит выбирать 1С:Шину?

Подведем итог и определим критерии, по которым мы можем рекомендовать этот инструмент:

  1. Критичность данных: Вам нельзя терять ни одного сообщения (заказы с сайта, чеки).
  2. Событийная модель: Вам нужно передавать данные сразу в момент их появления, а не «раз в час по регламенту».
  3. Сложная топология: У вас много разнородных систем (1С разных версий, сайты, мобильные приложения, SQL-базы).
  4. Нагрузка: Прямые вызовы веб-сервисов начинают тормозить работу пользователей в 1С.

Проанализировав ситуацию автора темы, можно сделать вывод: для разовой связки «облачной» бухгалтерии и одной старой базы УТ, где основной задачей является сопоставление справочников, более простым и дешевым решением будет использование OData или стандартных веб-сервисов с логикой сопоставления внутри расширения 1С. Однако для построения масштабируемой ИТ-инфраструктуры предприятия 1С:Шина является современным и крайне мощным инструментом, требующим, тем не менее, отдельной компетенции в 1С:EDT и архитектуре очередей.

← На главную