Взаимодействие 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
23 Скачать (1 SM) Купить за 1 850 руб.

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

Я не буду вдаваться в подробности установки 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С:ITIL(ИТИЛ), 1С:ITILIUM, Управление IT-отделом 8 через интернет с любого устройства посредством браузера, увеличивая эффективность работы пользователей и снижая нагрузку на сервер. Быстрая инсталляция портала за пару часов, удобный и интуитивно понятный интерфейс и безопасность данных помогут упростить работу с порталом и ускорить выполнение бизнес-процессов компании.

128000 руб.

19.12.2023    2681    3    0    

10

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

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

60000 руб.

07.05.2019    34758    68    45    

27

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

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

57600 руб.

26.11.2024    2451    2    2    

5

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

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

12000 руб.

02.02.2021    18894    54    50    

30

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

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

14400 руб.

20.12.2024    897    4    2    

6

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

Расширение значительно упрощает написание API на 1С. Веб программисты получают простой и понятный доступ к 1С. Описание API создаётся автоматически и представляется в виде удобном как для человека, так и для программной обработки.

24000 руб.

27.09.2024    4162    3    2    

4

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

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

36000 руб.

03.08.2020    19121    22    22    

19

Обмен с ГосИС 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    93148    193    217    

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