Взаимодействие 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    15747    10    17    

11

Интеграция 1С — Битрикс24. Обмен задачами

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

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

5040 руб.

04.05.2021    17549    6    15    

13

Интеграция с сервисом vetmanager

WEB-интеграция Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Внешняя обработка разрабатывалась для загрузки документов из Ветменеджер в 1С: Бухгалтерия 3.0

12000 руб.

02.02.2021    16359    42    49    

23

[Расширение] БОР-Навигатор.Культура

Зарплата Бюджетный учет WEB-интеграция Обмен с ГосИС Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бюджетный учет Платные (руб)

Расширение конфигурации, включающее в себя объекты, необходимые для подготовки и сдачи отчета "Штатная численность" системы "БОР-Навигатор.Культура" в программе "1С:Зарплата и кадры государственного учреждения", редакция 3.1.

8400 руб.

01.02.2019    25741    9    0    

7

Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС

Обмен с ГосИС WEB-интеграция Платформа 1С v8.3 Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:Документооборот 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Обработка является альтернативой механизму, разработанному фирмой 1С и заполняющему реквизиты контрагента по ИНН или наименованию. Не требуется действующей подписки ИТС. Вызывается как внешняя дополнительная обработка, т.е. используется, непосредственно, из карточки контрагента. Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС (egrul.nalog.ru) для БП 2.0, БП 3.0, БГУ 1.0, БГУ 2.0, УТ 10.3, УТ 11.x, КА 1.1, КА 2.x, УПП 1.x, ERP 2.x, УНФ 1.5, УНФ 1.6, УНФ 3.0, ДО 2.1

2400 руб.

28.04.2016    88580    160    215    

318
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Cyberhawk 135 03.09.20 21:29 Сейчас в теме
Не очень понятно, про какую шину в статье постоянно идет речь
2. dmitry-irk38 135 03.09.20 23:21 Сейчас в теме
3. nixel 1403 22.09.20 11:48 Сейчас в теме
4. dmitry-irk38 135 22.09.20 12:42 Сейчас в теме
(3) Брокер сообщений? Он же связующее программное обеспечение, к которому относится и ESB. Я вот какой-то видимой разницы не увидел. Прошу изложить Ваше видение.
5. nixel 1403 22.09.20 12:44 Сейчас в теме
(4) в задачи шины входит трансформация сообщения под формат приемника, логирование статусов доставки сообщений до приемников, синхронизация, управление нси, часто рядом же заявочная система. а рэббит - да, просто брокер сообщений. транспорт.
6. dmitry-irk38 135 22.09.20 13:02 Сейчас в теме
(5) Значить RabbitMQ + Прослойка + мини-адаптер обработка на 1С - вот это все можно назвать шиной? Ну такой кустарной шиной 😊
7. artbear 1448 23.09.20 15:25 Сейчас в теме
(5) управление нси, часто рядом же заявочная система - это вроде уже перебор для шины.
в обычное определение шины этот набор не входит )
8. nixel 1403 23.09.20 15:49 Сейчас в теме
(7) как ты нормализацию данных будешь проводить без управления данными? :) или нормализация - тоже не задача для шины?
9. artbear 1448 23.09.20 17:58 Сейчас в теме
(8) про трансформацию данных в шине знаю. а что такое нормализация данных в данном контексте?
10. nixel 1403 23.09.20 17:59 Сейчас в теме
(9) установление соответствий между разными системами, обработка дублей и проч.
11. artbear 1448 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 135 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 135 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
Сообщение было скрыто модератором.
...
Оставьте свое сообщение