Что подрядчик получает на входе
- Параметры подключения к брокеру: host, порт
5672, vhost, логин/пароль, формат JSON — передаются отдельно, не в этом документе. - Контракт сообщений по каждой сущности: состав полей, версия, ключ идемпотентности.
- Список очередей и их назначение (см. §4).
- Доступ его IP к порту
5672— открывается по allowlist на стороне сервера.
Что и как поставить
и как проверить| Шаг | Что | Как проверить (заказчику) |
|---|---|---|
| 1.1 | Внешняя компонента PinkRabbitMQ (BiteRP, Native API, AMQP 0.9.1). Репозиторий: github.com/BITERP/PinkRabbitMQ | Компонента загружена в конфигурацию как макет с двоичными данными (Windows x86/x64 и/или Linux x64 — под разрядность сервера 1С) |
| 1.2 | Размещение компоненты на серверах приложений 1С (не на клиенте) | Подрядчик показывает, где лежит и как подключается (ПодключитьВнешнююКомпоненту) |
| 1.3 | Проверка разрядности | Версия so/dll совпадает с разрядностью платформы. Спросить: «что будет после обновления платформы 1С?» — правильный ответ: повторная проверка компоненты в регламенте обновления |
| 1.4 | Реквизиты подключения — в константах / параметрах сеанса, не в коде | Открыть модуль: логина, пароля, хоста в тексте кода быть не должно |
Connect, DeclareQueue, BasicPublish, BasicConsume, BasicAck, BasicReject, GetLastError и т.п.). Вся логика обмена — код подрядчика поверх неё.Что решить до кода
ответ письменноНа эти вопросы подрядчик обязан ответить письменно — по ним потом принимается работа.
Контракт по каждой сущности
Состав полей, тип, обязательность. Фиксируется и не меняется молча.
Версия точки обмена в имени
Например
import.deal.main.v1. Смена формата = новая версия (.v2), а не тихая правка старой.Ключ идемпотентности в каждом сообщении
По нему приёмник отбивает повтор и переупорядочивание. Что берём ключом (id объекта + время изменения) — решает подрядчик, фиксирует в контракте.
Что публикуем событийно, а что по расписанию
И с какой периодичностью работает регламентное задание.
Сценарий полной перезаливки
Как выгрузить всё заново, когда стороны разошлись (очередь этого не решает). Отдельный механизм.
Кто администрирует брокер и получает оповещения
По глубине очереди и dead-letter.
Что написать на стороне 1С
Ядро — механизм гарантированной публикации. В терминах 1С объясняется за минуту: outbox = план обмена.
План обмена (outbox)
На каждую выгружаемую сущность — регистрация изменений. Записал документ/справочник → изменение зарегистрировалось.
Регламентное задание — публикатор
Читает зарегистрированные изменения, формирует JSON по контракту, публикует в
import.<entity>.main.v1. Регистрацию снимает только после ack от брокера. Упал до публикации — изменение уедет в следующий проход.Формирование сообщения
Тело по контракту + заголовки: время сообщения, ключ идемпотентности, версия.
Обработка ошибок публикации
Брокер недоступен → не терять регистрацию, повторить в следующий проход. Самодельный бесконечный повтор не писать — повторы разбора на стороне приёмника даёт брокер.
Входящее — только если нужно
HTTP-сервис конфигурации. Слушатель очереди внутри 1С не делаем — 1С плохой потребитель.
Инструменты диагностики
Обязательны, без них брокер — чёрный ящик: посмотреть, что не ушло (осталось в плане обмена), и опубликовать повторно вручную конкретный объект.
Карта очередей
типовые сущности Битрикс24Приёмник на стороне Битрикс24 разбирает эти очереди. Подрядчик публикует в *.main.v1; delayedFirst и failed — служебные, их трогать не нужно. Таблица идёт в порядке зависимостей: сначала справочники, потом документы, которые на них ссылаются.
| # | Очередь (main) | Сущность 1С | Что публикует 1С → куда в Битрикс24 |
|---|---|---|---|
| 1 | import.counterparty.main.v1 | Контрагенты | Юрлица и ИП с реквизитами (УНП/ИНН, адреса, банковские счета), контактные лица → CRM: компания + реквизиты, контакты |
| 2 | import.product.main.v1 | Номенклатура | Карточка: наименование, артикул, единица измерения, ставка НДС, группа, цена → каталог товаров CRM |
| 3 | import.contract.main.v1 | Договоры | Номер, дата, вид, срок действия, валюта, статус; ссылка на контрагента → CRM-сущность «Договор», привязанная к компании |
| 4 | import.deal.main.v1 | Сделки | Сумма, валюта, стадия, ответственный, товарные позиции (номенклатура, количество, цена, скидка); ссылки на контрагента и договор → CRM: сделка с товарами |
delayedFirst и повторяется, пока ссылка не появится. Новую сущность вводит новая очередь + согласование контракта.Чек-лист приёмки
до того, как обмен принятОтмечено 0 из 9. Отметки сохраняются только в этом браузере.
Что должно насторожить заказчика
import.deal вместо import.deal.main.v1.