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

18.06.21

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

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

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
1С_Enterprise_Client
.epf 9,11Kb
23 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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

Я не буду вдаваться в подробности установки 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

См. также

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

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

36000 руб.

03.08.2020    22856    33    24    

26

WEB-интеграция Программист Руководитель проекта 1С:Предприятие 8 1C:Бухгалтерия 1С:Франчайзи, автоматизация бизнеса Платные (руб)

Расширение значительно упрощает написание API на 1С. Веб программисты получают простой и понятный доступ к 1С. Описание API создаётся автоматически и представляется в виде удобном как для человека, так и для программной обработки. Основные преимущества: 1. Документация API создаётся автоматически. Удобна для программной обработки. 2. Изменить API столь же просто как настроить отчёт. Можно опубликовать существующий вариант отчёта. 3. Отчёты в API поддерживают параметры (Период, ДатаНачала и др.) 4. При создании простых методов не требуется изменять конфигурацию. 5. Поддерживается работа с планами обмена.<br/> 6. Возможно настроить отправку из 1С данных корреспондирующей системе, для случаев когда 1С сама "знает" какие данные нужно отправить. 7. После записи в 1С Ле Мурр может возвращать соответствие полученных идентификаторов созданным в 1С объектам данных.

36000 руб.

27.09.2024    11495    8    9    

13

SALE! 15%

WEB-интеграция Программист Бизнес-аналитик 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)

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

17280 14688 руб.

20.12.2024    4972    22    4    

24

WEB-интеграция Программист 1С:Предприятие 8 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Внешняя обработка разработана для автоматизации передачи данных между сервисом Vetmanager с 1С: Бухгалтерия 3.0. Решение позволяет загружать документы и справочники из Ветменеджер в 1С:Бухгалтерию, сокращая время на ручной ввод данных и минимизируя ошибки.

12000 руб.

02.02.2021    21503    62    52    

40

WEB-интеграция Загрузка и выгрузка в Excel Программист Пользователь 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Розничная и сетевая торговля (FMCG) Россия Платные (руб)

Расширение освободит вас от необходимости вручную обновлять товары в группах ВКонтакте. Достаточно задать правила один раз, и система автоматически синхронизирует ваш каталог. Вы сможете легко выбирать, какие товары публиковать, создавая гибкие критерии отбора. Например, можно добавить важные для покупателей параметры: цвет, размер или другие характеристики.

12000 руб.

29.08.2025    1318    2    0    

3

Обмен с ГосИС WEB-интеграция Бухгалтер Пользователь 1С:Предприятие 8 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

5196 руб.

28.04.2016    99499    114    218    

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