Интеграция 1С через ESB: «Интегра»

На связи Сергей Скирдин, технический директор ИТ-интегратора «Белый код». Уже 2 года я делаю подробные обзоры на продукты класса ESB. Появилась идея детально разобрать решения, которые предлагают те или иные платформы, для интеграции с 1С. В этом материале про возможности «Интегры».

О компании и продукте

«Севен Груп» — российский ИТ-бренд, предоставляющий заказчикам комплексные услуги в сфере цифровизации. На рынке с 2000 года. Входит в топ‑25 поставщиков ИТ‑решений в РФ и занимает высокие позиции в рейтингах по цифровизации госсектора, финансовых предприятий, организаций здравоохранения, образования и других отраслей.

В составе бренда — три высокотехнологичные компании, включая аккредитованного Минцифры вендора «Севентек». Компания создает и внедряет инновационные ИТ‑продукты, а также специализируется на заказной разработке.

Флагманский продукт вендора — интеграционная low‑code платформа «Интегра». Это инновационная система класса ESB для подключения различных источников данных и соединения приложений в единый ИТ‑ландшафт. Платформа позволяет непосредственно в интерфейсе создавать интеграции, настраивать мониторинг, логирование и оперативно вносить изменения в потоки информационного обмена.

«Интегра» включена в Реестр российского ПО и рекомендована АРПП к импортозамещению.

Ссылка на полный обзор продукта

Обзор «Интегры»

Подход к интеграции с 1С

  1. По протоколу OData — есть собственный low-code коннектор.

  2. REST-сервис — используется для крупных заказчиков, у которых есть REST-сервис на стороне 1С.

Задача

Настроить передачу справочника «Организации» между двумя демо базами 1С. В первой базе 1С — 5 справочников «Организации», во второй — 3. 

Решение задачи

Для подключения первой базы 1С используется OData-коннектор. В настройках указывается адрес системы, параметры авторизации и выбирается объект для синхронизации — справочник «Организации». Далее через интерфейс платформы выбираются поля, которые необходимо выгружать из 1С.

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

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

После настройки коннекторов изменения автоматически передаются из одной базы 1С в другую. В демонстрации после добавления новой организации в исходную систему запись автоматически появилась в целевой базе.

Архитектура коннектора

Коннектор использует OData — стандартный REST-интерфейс, встроенный в платформу 1С и позволяющий ESB обращаться к опубликованным объектам информационной базы по HTTP. Через OData можно читать и изменять данные справочников, документов и регистров, использовать фильтрацию, сортировку и постраничную выборку. Подход удобен для быстрой интеграции без разработки дополнительного веб-сервиса, однако имеет ограничения при выполнении сложной бизнес-логики, проведении составных операций и передаче больших объёмов данных. 

Для более сложных сценариев интеграции потребуется разработка REST-интерфейса на стороне 1С, который позволит выполнять необходимую бизнес-логику и работать со сложными структурами данных.

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

CDC и отслеживание изменений

Для объектных типов 1С отслеживание изменений реализовано через механизм DataVersion. Коннектор хранит последнюю обработанную версию объекта и периодически запрашивает данные с более новой версией. Благодаря этому задержка между изменением данных и обнаружением изменения может составлять всего несколько секунд.

Для регистров полноценное отслеживание изменений не поддерживается. В таких сценариях данные периодически перечитываются из 1С и сравниваются с ранее сохраненным состоянием во внутреннем хранилище платформы.

Если шина была недоступна в момент изменения данных, информация не теряется. После восстановления работы система повторно запрашивает изменения на основании сохраненного значения DataVersion и передает актуальные данные в целевую систему.

Надёжность и поддержка

Мониторинг работы коннектора осуществляется стандартными средствами платформы. Ошибки подключения, недоступность сервисов, проблемы с сертификатами и другие сбои фиксируются в логах коннектора и общих логах платформы.

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

Конфигурации интеграций могут переноситься между проектами в виде JSON-описания. На практике внедренцы используют готовые шаблоны интеграций, меняя только параметры подключения к конкретным системам.

Практика внедрения

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

Один из самых распространенных кейсов - синхронизация кадровых данных между 1С и Active Directory: из 1С выгружаются сведения о сотрудниках, должностях и организационной структуре.

Кейсы

Количество заказчиков, использующих интеграции с 1С, находится в диапазоне от 10 до 20 компаний. Наиболее типичные сценарии связаны с передачей справочников и кадровых данных между 1С и внешними системами.

В одном из проектов заказчик использует более 25 интеграций с участием 1С, объем обмена достигает 2000 записей в день при среднем размере сообщения до 50 КБ.

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

Самые сложные задачи обычно связаны с регистрами 1С. В таких случаях стандартного OData-коннектора недостаточно, и разработчикам приходится реализовывать собственные обработчики получения данных, включая поддержку постраничной выборки и специальной логики выгрузки.

Заключение

«Интегра» использует максимально консервативный подход к интеграции с 1С: на стороне конфигурации не требуется доработка конфигурации или установка дополнительных расширений. Это упрощает запуск, снижает издержки на обслуживание 1С.

Обратная сторона — ограничения OData. Обмен работает по модели pull, регистры не поддерживаются CDC.

Решение хорошо подходит для простых интеграций, особенно в части справочников и документов. Для сложных интеграционных сценариев скорее всего потребуется разработка отдельного REST сервиса на стороне 1С. 

В статье отражена моя субъективная точка зрения, у которой нет цели нанести ущерб деловой репутации создателям этого продукта.

Вступайте в сообщество в Телеграме «Шины не для машины», там обсуждаем насущные вопросы рынка ESB.