Интеграционный модуль RabbitMQ

13.08.26

Интеграция - Внешние источники данных

Внешняя обработка для интеграции с RabbitMQ. Содержит демонстрационный интерфейс для тестирования обмена сообщениями и готовые программные методы для быстрого встраивания в конфигурацию. Обеспечивает отправку, получение с подтверждением и администрирование очередей.

Файлы

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

Наименование Скачано Купить файл
Интеграционный модуль RabbitMQ
.epf 9,98Mb
1 6 200 руб. Купить

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

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

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

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

 Содержание

Введение

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

  • Максимальную производительность — статически скомпилированный бинарник.
  • Кроссплатформенность — один и тот же код компилируется как для Windows, так и для Linux.
  • Надежность — Go обеспечивает безопасную работу с памятью (сборщик мусора) и встроенную поддержку конкурентности.
  • Простоту поддержки — код на Go читается как книга, а найти разработчика для его сопровождения не составляет труда.

Ключевая философия решения — процессный подход вместо сервисного. В отличие от распространенных HTTP-прослоек (которые требуют установки, настройки, мониторинга и постоянного поддержания в рабочем состоянии), данное решение работает «из коробки». 1С сама управляет жизненным циклом Go-компонента: запускает его, передает данные, контролирует выполнение и получает результат.

В обработке реализованы все ключевые сценарии:

Отправка сообщений — напрямую в очередь или через обменник (exchange) с гибкой маршрутизацией.

Получение сообщений — с возможностью ручного подтверждения (ack/nack) через уникальный файловый механизм.

Гарантированная доставка (Guaranteed Delivery) — через Publisher Confirms.

Параллельная отправка — до 20 потоков для максимальной производительности (если не важен порядок помещения сообщений в очередь).

Администрирование RabbitMQ — создание/удаление очередей и обменников прямо из 1С.

 

Архитектура

Архитектура решения построена на разделении ответственности между двумя компонентами:

Launcher — создается 1С для каждой операции. Запускает основное ядро, контролирует его жизненный цикл и удаляется после завершения. Это гарантирует, что в системе не останутся подвисшие процессы.

Core — высокопроизводительный компонент на Go, выполняющий всю логику обмена с RabbitMQ: подключение (с кешированием), отправку, получение и подтверждение сообщений.

Для отправки и административных действий:

    1. 1С создает JSON-файл с параметрами операции и запускает Launcher.

    2. Launcher запускает Core, передавая ему управление.

    3. Core читает JSON-файл, подключается к RabbitMQ, выполняет операцию и записывает результат в ответный JSON-файл.

    4. Core завершается, затем завершается Launcher.

    5. 1С читает результат и завершает операцию.

Для получения сообщений:

    1. 1С создает JSON-файл с параметрами операции и запускает Launcher.

    2. Launcher запускает Core, передавая ему управление.

    3. Core читает JSON-файл, подключается к RabbitMQ, получает сообщения и записывает их в ответный JSON-файл.

    4. Core остается активным и ожидает от 1С JSON-файл с подтверждением (ack/nack) по каждому сообщению.

    5. После обработки ack-файла Core завершается, затем завершается Launcher.

Процессный подход вместо сервисного: Core — это не постоянно висящий сервис, а процесс, который 1С запускает «по требованию». Это исключает необходимость внешнего мониторинга.

Единое подключение к RabbitMQ: Core кеширует TCP-соединение, переиспользуя его для всех операций. Это экономит время на установку соединения.

Параллельная отправка: Для режима parallel используется пул AMQP-каналов (до 20), что позволяет отправлять сообщения максимально быстро(при условии если порядок помещения сообщений в очередь не важен).

Атомарный Ack-механизм: Уникальная система ручного подтверждения через файлы гарантирует, что ни одно сообщение не будет потеряно даже при сбоях.

Безопасность: Встроена проверка целостности Core по хешу SHA256 (проверка на стороне 1С перед запуском). При необходимости заранее известные хеши файлов можно добавить в исключения антивируса.

Расположение файлов на диске:

Для Linux:

    /var/tmp/1c_rabbitmq/core/rabExSDG_core       - основной компонент

      /var/tmp/1c_rabbitmq/rabExSDG_launcher_<UUID> - временный launcher

      /tmp/ВременныйФайл1С.json                     - входные параметры

    /tmp/ВременныйФайл1С.json                     - результат операции

    /tmp/ВременныйФайл1С.json                     - файл подтверждения (для получения)

Для Windows:

    %TEMP%\ВременныйФайл1С.exe                    - временный launcher

    %TEMP%\rabExSdg_Core\rabExSDG_Win_Core.exe    - основной компонент

    %TEMP%\ВременныйФайл1С.json                   - входные параметры

    %TEMP%\ВременныйФайл1С.json                   - результат операции

    %TEMP%\ВременныйФайл1С.json                   - файл подтверждения (для получения)

 

Использование

Обработка может использоваться в двух режимах:
1: Внешняя обработка (демонстрация и тестирование)

Открывается через Файл Открыть - Внешняя обработка

Предназначена для наглядной демонстрации всех возможностей

Позволяет тестировать параметры подключения и операции в интерактивном режиме

При добавлении обработки в «дополнительные отчеты и обработки» есть возможность фонового выполнения операций

2: Внутренняя обработка (программное использование)

Загружается в конфигурацию «Вставить внешнюю обработку, отчет…»

Используется через экспортные методы модуля объекта:

Отправить() — отправка сообщений

ОтправитьГруппы() — групповая отправка

НачатьПолучение() / ПодтвердитьСообщение() / ЗавершитьПолучение() — получение с подтверждением

Может вызываться из регламентных заданий для автоматического обмена.

Подходит для встраивания в бизнес-логику и фоновые процессы.

Некоторые антивирусы могут блокировать исполняемые файлы, которые 1С извлекает из макетов. Добавьте SHA256-хеши файлов (они постоянны и уникальны) в исключения антивируса.

 

Команды
Получение сообщений:

НачатьПолучение - Открывает сессию получения сообщений из очереди. Возвращает массив сообщений с полями uuid, deliveryTag, body

ПодтвердитьСообщение - Добавляет действие подтверждения (ack/nack) для конкретного сообщения

ЗавершитьПолучение  - Отправляет все накопленные подтверждения в Core и завершает сессию получения

Отправка сообщений:

Отправить - Отправляет сообщения в очередь или обменник. Все параметры передаются явно

ОтправитьГруппы - Отправляет группы сообщений в разные очереди/обменники одним вызовом. Поддерживает до 100 групп

Администрирование RabbitMQ:

СоздатьОчередь - Создает очередь с параметрами (Долговременная, Автоудаление, Эксклюзивная, ВремяЖизниСообщений, МаксимумСообщений)

УдалитьОчередь - Удаляет очередь (с опциями УдалятьТолькоПустые, УдалятьТолькоНеиспользуемые)

ОчиститьОчередь - Удаляет все сообщения из очереди (purge)

ИнформацияОбОчереди - Получает статистику по очереди (количество сообщений, потребителей)

СоздатьТочкуОбмена - Создает обменник (ТипОбменника: direct, fanout, topic, headers)

УдалитьТочкуОбмена - Удаляет обменник (с опцией ТолькоНеиспользуемые)

ПривязатьОчередь - Привязывает очередь к обменнику с указанным КлючМаршрутизации

ОтвязатьОчередь - Отвязывает очередь от обменника
 

Механизмы

Отправка
Publisher Confirms Ожидание подтверждения от RabbitMQ о получении каждого сообщения. Сообщение считается отправленным в rabbit только после получения подтверждения от брокера. В случае сбоя — ошибка возвращается в 1С. Исключает потерю сообщений. Это критически важно для любых данных, где потеря недопустима.
Persistent режим Сохранение сообщений на диск RabbitMQ.Сообщения не теряются при перезапуске брокера.
Повторные попытки при отправке

Автоматические повторные попытки (до 3 раз) с экспоненциальной задержкой (100/200/400 мс).

Получение
Ручное подтверждение

Возможность подтвердить (ack) или отклонить (nack) каждое сообщение(например, успешно ли записали сообщение в БД).

Управление процессами
Launcher

Создается для каждой операции и автоматически удаляется после завершения. Нет подвисших процессов.

Process Group (Linux)

Гарантирует завершение процессов после операции.

 Job Object (Windows) Гарантирует завершение процессов после операции.
Проверка и принудительное завершение

При превышении таймаута процессы завершаются принудительно.

Управление соединениями
Кеширование соединений Переиспользование TCP-соединений(экономия времени на операции).

Автоматическое 
переподключение

Переподключение при обрыве.
Возможность лицензировать ПО
Лицензия по дате (параметр LICENSE_EXPIRY_DATE) Лицензия действительна до установленной даты в формате "2006-01-02", если параметр = "" не применяется.
Лицензия по machine id
(параметр ALLOWED_MACHINE_IDS_MAP)
Лицензия действительна для данного id machine(linux) или UUID компьютера(windows) сервера(может указываться несколько) если не заполнено - не применяется.
Приоритет проверки Сначала проверяется по id machine, затем по дате. В поставке указаны пустые значения(лицензирование не применяется)

 

Описание интерфейса обработки

Параметры подключения:
Пользователь - имя пользователя для авторизации
Пароль - пароль для авторизации

Хост - адрес RabbitMQ (IP или доменное имя)
Порт - порт подключения (по умолчанию 5672)
Виртуальный хост - виртуальный хост (по умолчанию "/")
Параметры выполнения:

Таймаут - время ожидания операции в секундах(общий таймаут на выполнения 1С + go)
Выполнить в фоне - выполнение операций в фоне(если обработка подключена в справочник "доп. обработки и отчеты")
Параметры отправки:
В точку обмена - при активации отправка сообщения происходит через точку обмена и ключ маршрутизации. Устанавливает видимость элементов "точка обмена", "ключ маршрутизации"
В очередь напрямую - при активации отправка сообщения происходит в очередь напрямую. Устанавливает видимость элементов "очередь отправки"
Точка обмена - имя точки обмена
Ключ маршрутизации - имя ключа маршрутизации
Очередь отправки - имя очереди куда отправлять сообщения
Персистентно - признак того что отправленное в rabbit сообщение
сохраняется на диск(не удаляется при перезапуске сервера rabbit)
Добавлять message id - uuid сообщения записывается в служебное поле rabbit 
"message_id" - позволяет вести дополнительный контроль за сообщениями
Отправлять параллельно - при установке позволяет параллельно отправлять сообщения в очередь(рекомендуется использовать при большом объеме отправляемых сообщений, если порядок поступления в очередь не важен)
Использовать Confirm  - при установке включает механизм гарантированной доставки сообщений в Rabbit (при больших объемах отправляемых сообщений за одну операцию рекомендуется использовать вместе с "Отправлять параллельно")
Время жизни сообщения - время жизни сообщения в миллисекундах (1000 - 1 секунда)
Параметры получения:
Очередь получения - очередь из которой необходимо получить сообщение
Подтверждать сообщения - при установке все полученные на форму сообщения удаляются из очереди
Получить все сообщения - при установке получает все сообщения из очереди но не более 1000
Количество получаемых сообщений - количество получаемых сообщений(не более 999)

Создание очереди:
Очередь - имя очереди
Время жизни сообщений в очереди - время жизни сообщений в очереди в миллисекундах (1000 - 1 секунда)
Максимум сообщений - максимум сообщений в очереди
Удаление очереди:

Очередь - имя очереди
Удалять только пустые - удалять только пустую очередь
Удалять только неиспользуемые - удалять только без потребителей

Очистка очереди:
Очередь - имя очереди
Информация об очереди:
Очередь - имя очереди
Создание обменника:
Точка обмена - имя обменника
Тип обменника - тип обменника(direct, fanout, topic, headers)
Удаление обменника:
Точка обмена - имя обменника
Удалять только неиспользуемые - удалять только без потребителей
Привязка очереди:
Очередь - имя очереди
Точка обмена - имя обменника
Ключ маршрутизации - ключ маршрутизации
Отвязка очереди:
Очередь - имя очереди
Точка обмена - имя обменника

Ключ маршрутизации - ключ маршрутизации

Порядок компиляции go файлов

Для корректной компиляции go файлов необходимо выполнить следующие действия
(например в VSC):
1. Создать файл с расширением GO main.go
2. Создать файл описания модуля с зависимостями

     "go mod init MODULENAME"
3. Скачать и установить драйвер для работы с RabbitMQ

     "go get github.com/rabbitmq/amqp091-go"
4. Скачать и установить библиотеку для генерации UUID
     "
go get github.com/google/uuid"
5. Добавить все недостающие зависимости, создать файл go.sum
     "
go mod tidy"
6. Скомпилировать код в исполняемый файл
      для Windows: "
go build -o FILENAME.exe main.go"
      для linux: "go build -o FILENAME main.go"
     

Преимущества решения

1. Готовое решение "из коробки"
   
 Не требует установки, настройки или обслуживания.

    Загрузил и работает.

2. Гарантированная доставка (Publisher Confirms)
    Уникальный механизм, которого нет у конкурентов.
    Сообщение считается отправленным только после подтверждения RabbitMQ.

3. Кроссплатформенность
    
Windows и Linux в одной обработке.

4. Гибкие сценарии отправки
    В очередь напрямую или через обменник.
    С подтверждением или без.
    
Последовательно или параллельно.

5. Простота интеграции
    Экспортные методы модуля объекта.
    Встраивается в регламентные задания и фоновые процессы.

Подробная документация, код golang, описание всех функций golang находятся в макетах обработки. 

Проверено на следующих конфигурациях и релизах:

  • Управление торговлей, редакция 11, релизы 11.5.8.232

Вступайте в нашу телеграмм-группу Инфостарт

rabbitMQ интеграция rabbit модуль обмен обработка очереди брокер сообщений обменник подтверждение менеджер сервис клиент go golang

См. также

Внешние источники данных Программист Бизнес-аналитик Пользователь 1С:Предприятие 8 1C:Бухгалтерия Узбекистан Беларусь Кыргызстан Молдова Россия Казахстан Платные (руб)

Готовое решение для автоматической выгрузки данных из 1С 8.3 в базу данных ClickHouse, PostgreSQL или Microsoft SQL для работы с данными 1С в BI-системах. «Экстрактор данных 1С в BI» работает со всеми типовыми и нестандартными конфигурациями 1С 8.3 и упрощает работу бизнес-аналитиков. Благодаря этому решению, специалистам не требуется быть программистами, чтобы легко получать данные из 1С в вашей BI-системе.

35000 руб.

15.11.2022    32630    50    49    

49

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Перенос данных 1C Программист 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактическим удержаниям, НДФЛ, вычетам, страховым взносам из базы Парус 10 учреждений (далее Парус) в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (далее 1С) и начать с ней работать с любого месяца года.

85400 руб.

05.10.2022    14136    16    8    

17

Розничная торговля Внешние источники данных Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Бухгалтерия 3.0 Фармацевтика, аптеки Россия Бухгалтерский учет Платные (руб)

Внешняя обработка загрузки данных из файла-выгрузки, сформированного в программе F3 TAIL версии 3.4 (и выше) или еФарма версии 2.1, в базу конфигурации 1С: Бухгалтерия предприятия 8, ред. 3.0 (Базовая, ПРОФ, КОРП, ФРЕШ (тонкий клиент)).

17080 руб.

19.12.2016    54908    126    107    

86

Производство готовой продукции (работ, услуг) Внешние источники данных 1С:Предприятие 8 1С:Управление нашей фирмой 1.6 Лесное и деревообрабатывающее хозяйство Россия Управленческий учет Платные (руб)

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

10370 руб.

24.06.2021    26295    64    55    

47

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

Обработка для выгрузки данных из подготовленных СКД в фоновом режиме в базу ClickHouseDB, PostgreSQL, MySQL, в шину данных с поддержкой REST API (CSV, JSON. SQL), в локальные файлы (CSV, JSON, XLS, XLSX) или в Google Sheets. Это дополнительная подключаемая обработка.

18000 руб.

21.08.2024    9949    25    4    

22

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

Хотите, чтобы остатки и цены товаров в вашей базе всегда были актуальными без лишних усилий? Теперь это возможно - автоматизируйте процесс загрузки и обновления данных о номенклатуре от ваших поставщиков или конкурентов. Как это работает? Вы сами настраиваете правила и расписание для каждого поставщика, чтобы обновление информации из произвольных форматов прайс-листов происходило автоматически.

15250 руб.

15.05.2024    4876    8    1    

9

Внешние источники данных Мастера заполнения Бизнес-аналитик Бухгалтер Пользователь 1С:Предприятие 8 1С:Бухгалтерия государственного учреждения 1С:Бухгалтерия 3.0 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 1С:Розница 3.0 1С:Документооборот Россия Платные (руб)

Решение позволяет по ИНН производить проверку контрагентов, получая сведения: видов деятельности, данных ЕГРЮЛ, связанных организаций, отчетности, налогов, финансовый анализ, а также в один клик заполнить карточки справочников контрагентов/партнеров по ИНН в программе 1С по данным ФНС. Попробуйте ДЕМО версию перед покупкой.

5000 руб.

12.08.2025    4000    12    20    

12
Для отправки сообщения требуется регистрация/авторизация