Взаимодействие 1С со сторонними продуктами посредством REST и Golang (middleware). Часть 1 - RabbitMQ

18.06.21

Интеграция - WEB-интеграция

Часто 1С не может взаимодействовать со сторонними продуктами, например для шины предприятия RabbitMQ создают внешние компоненты. В статье предлагается новомодный подход REST API реализованный на приложении прокладке Middleware, язык тоже трендовый Golang. В статье немного познакомлю Вас с языком Golang, опишу интеграцию на стороне 1С (8.3.16.1502). Если статья зайдет, напишу как выгружать журнал регистрации по этой схеме в ElasticSearch

Скачать исходный код

Наименование Файл Версия Размер
1С_Enterprise_Client
.epf 9,11Kb
23
.epf 9,11Kb 23 Скачать

Предыдущие и будущие статьи:

Я не буду вдаваться в подробности установки RabbitMQ, в статье используется Docker контейнер с официального сайта для экспериментов, устанавливается просто:

docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management

В качестве модели данных будем использовать Клиента, с полями: ID, Name, Type и Email данную структуру мы будем забирать из шины и помещать в очередь. Данные будут переобразованны в JSON.

Для REST API создадим обработчик exchange_rabbitmq, который будет принимать GET и POST запросы.

В Golange есть хороший внутрненний пакет для работы с HTTP, который будет использован. Для взаимодействия с RabbitMQ будем использовать официальный пакет с сайта шины.

Для метода POST получает JSON строку с массивом структур, полученные данные помещаем в шину. Для метода GET получаем данные из шины и передаем их на сторону 1С.

В 1С создадим внешнюю обработку с таблицей, в которую для метода GET будут поступать записи, а для метода POST из таблицы данные будут поступать в шину, как уже говорилось ранее через JSON

Помещаем в шину

В шину пришло

Потребляем из шины

Шина пустая :)

Для middleware предусмотрена возможность сохранять настройки подключения к шине

В крации внутри middleware создается метод обрабатывающий запросы на адрес "/rabbitMQ_1C", в зависимости от метода происходит или отправка или потребление, для наглядности поазываю урезанную функцию

Внутри middleware разварачивается по сути небольшой веб-сервис обрабатывающий запросы, своего рода микросервис, в следующих статьях я расскажу как поместить его в Докер контейнр, а также разместить этот контейнер в Докер Хаб

Исходники я разместил на GitHub. Можете использовать исходник как шаблон, жду ваших идей и советов. Ни на что не претендую интересная тема, решил поделиться с сообществом своими наработками. Есть наработки по выгрузке журнала регистраций в ElasticSearch возможно дополню проект новым обработчиком для этого дела.

Адрес исходников GitHub https://github.com/dmitry-msk777/Connector_1C_Enterprise

ОБНОВЛЕНИЕ 28.09.2020

Для проекта написан HTTP-сервис в 1С платформе, подробней в Статье №5 этого цикла, он нужне чтобы корректно получать сообщения из RabbitMQ через канал как описанно в документации, а не через текущую реализацию с замедлением.

Golang RabbitMQ REST middleware

См. также

Интеграция Альфа Авто 5 / Альфа Авто 6 и AUTOCRM / Инфотек

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    16404    15    18    

15

Интеграция 1С и Битрикс 24 — модуль синхронизации для обмена задачами

Сайты и интернет-магазины Интеграция WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Интеграция 1С и Битрикс 24. Разработка имеет двухстороннюю синхронизацию 1С и Bitrix24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (платформа начиная с 8.3.23). При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

5040 руб.

04.05.2021    18655    10    15    

16

Модуль для обмена "1С:Предприятие 8. УАТ. ПРОФ" с FortMonitor

WEB-интеграция 8.3.8 Конфигурации 1cv8 Автомобили, автосервисы Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Расширение предназначено для конфигурации "1С:Предприятие 8. Управление Автотранспортом. ПРОФ". Функционал модуля: 1. Заполнение регистров сведений по подсистеме "Мониторинг", а именно: события по мониторингу, координаты по мониторингу, пробег и расход по мониторингу, текущее местоположение ТС по мониторингу 2. Заполнение путевого листа: пробег по мониторингу, время выезда/заезда, табличная часть ГСМ, места стоянок по геозонам. 3. Отчеты по данным загруженным в регистры сведений. 4. Предусмотрена автоматическая загрузка данных в фоновом режиме (условия работы данной загрузке читайте в описании товара) Модуль работает без включенной константы по настройкам мониторинга. Модуль формы предоставляется с открытым кодом, общий модуль защищен. Любой заинтересованный пользователь, имеет возможность скачать демо-версию расширения.

22656 руб.

25.05.2021    13181    35    8    

14

Автоматическая загрузка файлов (например, прайс-листов) из электронной почты, FTP, HTTP, их обработка и выгрузка на FTP (на сайт) и для других целей

Прайсы WEB-интеграция Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Автомобили, автосервисы Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Программа с заданным интервалом времени (или по ручной команде) скачивает файлы (например, прайс-листы поставщиков) из различных источников: письма электронной почты, FTP или HTTP-адреса, и сохраняет их в каталог упорядоченной структуры. При этом извлекает файлы из архивов, может переименовывать файлы и менять их формат (csv, xls, txt). Можно настроить выгрузку обработанных файлов на сайт (через FTP-подключение). Программа будет полезна компаниям, у которых есть большое количество поставщиков и/или прайс-листы поставщиков обновляются часто (необязательно прайс-листы, файлы могут быть любого назначения). Собранные таким образом актуальные версии прайс-листов можно выгрузить с помощью программы себе на сайт (или на любой FTP-сервер) или выполнить другие необходимые задачи.

25200 руб.

28.05.2015    86298    26    51    

50
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Cyberhawk 135 03.09.20 21:29 Сейчас в теме
Не очень понятно, про какую шину в статье постоянно идет речь
2. dmitry-irk38 136 03.09.20 23:21 Сейчас в теме
3. nixel 1418 22.09.20 11:48 Сейчас в теме
4. dmitry-irk38 136 22.09.20 12:42 Сейчас в теме
(3) Брокер сообщений? Он же связующее программное обеспечение, к которому относится и ESB. Я вот какой-то видимой разницы не увидел. Прошу изложить Ваше видение.
5. nixel 1418 22.09.20 12:44 Сейчас в теме
(4) в задачи шины входит трансформация сообщения под формат приемника, логирование статусов доставки сообщений до приемников, синхронизация, управление нси, часто рядом же заявочная система. а рэббит - да, просто брокер сообщений. транспорт.
6. dmitry-irk38 136 22.09.20 13:02 Сейчас в теме
(5) Значить RabbitMQ + Прослойка + мини-адаптер обработка на 1С - вот это все можно назвать шиной? Ну такой кустарной шиной 😊
7. artbear 1555 23.09.20 15:25 Сейчас в теме
(5) управление нси, часто рядом же заявочная система - это вроде уже перебор для шины.
в обычное определение шины этот набор не входит )
8. nixel 1418 23.09.20 15:49 Сейчас в теме
(7) как ты нормализацию данных будешь проводить без управления данными? :) или нормализация - тоже не задача для шины?
9. artbear 1555 23.09.20 17:58 Сейчас в теме
(8) про трансформацию данных в шине знаю. а что такое нормализация данных в данном контексте?
10. nixel 1418 23.09.20 17:59 Сейчас в теме
(9) установление соответствий между разными системами, обработка дублей и проч.
11. artbear 1555 23.09.20 18:39 Сейчас в теме
(10) ИМХО это не функция шины. НСИ сильно завязаны на предметную область, а шины более универсальны.
Lucechiaro; ivv1970; +2 Ответить
12. NoRazum 29 16.02.21 12:49 Сейчас в теме
Идея отличная.
Была бы 1с реалтай язык. не надо было делать таких велосипедов.
13. user1140274 16.04.21 15:54 Сейчас в теме
Коллеги, а как отлаживать http сервисы на Go?) Нажимаю в обработке Поместить в шину, в RabbitMQ ничего не попадает, поставил Goland IDE, на main.go точка останова останавливается, на handlers.go где идет обработка в func Rabbit_MQ не останавливается
Прикрепленные файлы:
14. dmitry-irk38 136 16.04.21 16:42 Сейчас в теме
(13) Если адреса, порты и ресурсы в URL указаны верно, то остановка произойдет на точке, которая на строке 90. Судя по скриншоту складывается ощущение, что приложение вообще не запущенно(в режиме отладки). Я пользуюсь обычно VS Studio
15. user1140274 20.04.21 09:52 Сейчас в теме
(14) Все получилось! Крутая публикация, получается достаточно универсальный инструмент интеграции
16. user907241 09.08.23 09:08 Сейчас в теме
Добрый день! Прошу автора пожалуйста подсказать.
Имеются две базы 1с. Есть потребность связать их с помощью вот этой прослойки. (если точнее то из одной всегда выгружаем какую то инфу, в другую всегда загружаем).
Если бы была вот такая задача "минимум", то можно ли было бы сократить количество сущностей, используемых в ваших статьях (помимо очевидных типа веб сервера)?

p.s. базы, которые будут POSTить - на мобилках.
17. dmitry-irk38 136 09.08.23 15:24 Сейчас в теме
(16) Да, просто исползовать две базы 1С передавая напрямую данные через HTTP-сервисы :)) В серии статей описываются специфичные коннекторы для RabbitMQ, Redis и т.п Также можно использовать бля больших данных, где нужна очередь и многоточность. Например я использовал решение для взаимодествия с 1500 базами 1С
18. user907241 09.08.23 15:46 Сейчас в теме
(17) Количество баз, которые выгружают инфу - тоже в тысячах. Напряму там, к сожалению, нет возможности, поэтому используется прокладка 1Совская на текущий момент, вот идея заменить 1совскую прокладку на golang с минимальным кол-вом новых сущностей. Думаю в сторону простенького сервиса на golang, который как раз заберет из источника инфу и сразу в базу приемник направит.
19. пользователь 09.08.23 15:55
Сообщение было скрыто модератором.
...
Оставьте свое сообщение