# План работ для 1С-программиста: обмен 1С ↔ Битрикс24 через RabbitMQ

> Краткая версия https://obmen.bx-shef.by/plan.html для ИИ-агентов. Вся сторона 1С — зона 1С-подрядчика; очереди и разбор сообщений на стороне сайта / Битрикс24 — ИП Шевчик И. С. (bx-shef.by). Цены, реквизиты и контакты: https://obmen.bx-shef.by/llms.txt

## 0. Что подрядчик получает на входе

- Параметры подключения к брокеру (host, порт 5672, vhost, логин/пароль, формат JSON) — передаются отдельно.
- Контракт сообщений по каждой сущности: поля, версия, ключ идемпотентности.
- Список очередей (раздел 4).
- Доступ его IP к порту 5672 по allowlist.

## 1. Что поставить и как проверить

| Шаг | Что | Проверка |
|---|---|---|
| 1.1 | Внешняя компонента PinkRabbitMQ (BiteRP, Native API, AMQP 0.9.1), github.com/BITERP/PinkRabbitMQ | Загружена в конфигурацию как макет под разрядность сервера 1С |
| 1.2 | Компонента на серверах приложений 1С, не на клиенте | Подрядчик показывает, где лежит и как подключается |
| 1.3 | Разрядность | Совпадает с платформой; повторная проверка входит в регламент обновления платформы |
| 1.4 | Реквизиты подключения | В константах / параметрах, не в тексте кода |

Компонента — только транспорт; логика обмена — код подрядчика.

## 2. Что решить до кода (письменно — по этому принимается работа)

- Контракт по каждой сущности: поля, типы, обязательность; молча не меняется.
- Версия в имени очереди: `import.deal.main.v1`; смена формата = `.v2`.
- Ключ идемпотентности в каждом сообщении (например, id объекта + время изменения).
- Что публикуется событийно, что по расписанию, периодичность регламентного задания.
- Сценарий полной перезаливки при расхождении сторон.
- Кто администрирует брокер и получает оповещения (глубина очереди, dead-letter).

## 3. Что написать в 1С

- **План обмена (outbox):** регистрация изменений по каждой выгружаемой сущности.
- **Регламентное задание-публикатор:** читает регистрации, собирает JSON по контракту, публикует в `import.<entity>.main.v1`, снимает регистрацию только после ack.
- **Сообщение:** тело по контракту + заголовки (время, ключ идемпотентности, версия).
- **Ошибки публикации:** брокер недоступен → регистрация остаётся, повтор в следующий проход; своих бесконечных повторов не писать.
- **Входящее (если нужно):** HTTP-сервис конфигурации; слушатель очереди внутри 1С не делать.
- **Диагностика:** «что не ушло» и «опубликовать объект повторно».

Объём кода типовой; контролировать нужно решения из раздела 2.

## 4. Карта очередей (приёмник — Битрикс24)

Подрядчик публикует только в `*.main.v1`; `delayedFirst` и `failed` служебные. Порядок — по зависимостям.

| # | Очередь | Сущность 1С | Куда в Битрикс24 |
|---|---|---|---|
| 1 | `import.counterparty.main.v1` | Контрагенты | Компания + реквизиты (УНП/ИНН, адреса, счета), контакты |
| 2 | `import.product.main.v1` | Номенклатура | Каталог товаров CRM: наименование, артикул, единица, НДС, группа, цена |
| 3 | `import.contract.main.v1` | Договоры | CRM-сущность «Договор», привязана к компании |
| 4 | `import.deal.main.v1` | Сделки | Сделка с товарами, ссылки на контрагента и договор |

Связи — только по GUID 1С; сопоставление с ID Битрикс24 делает приёмник. Если ссылка ещё не пришла, сообщение уходит в `delayedFirst` и повторяется. Новая сущность = новая очередь + согласованный контракт.

## 5. Чек-лист приёмки

1. Контракт согласован письменно (поля, версия, ключ идемпотентности).
2. Компонента на серверах приложений, разрядность верна, реквизиты не в коде.
3. Публикация через план обмена, регистрация снимается после ack. Проверка: остановить приёмник → выгрузить → сообщения копятся, ничего не потеряно → поднять приёмник → всё разобралось.
4. Пиковая выгрузка не блокирует сеанс 1С.
5. Есть инструменты «что не ушло» и «опубликовать повторно».
6. Настроены dead-letter и политика хранения, назначен администратор, есть оповещение по глубине очереди.
7. Ограничен рост логов и очередей по диску.
8. Компонента проверена после планового обновления платформы.
9. Описан сценарий полной перезаливки.

## 6. Что должно насторожить

- Логин / пароль / хост брокера в тексте кода.
- Самодельные повторы в 1С вместо плана обмена и ack.
- Долгоживущее фоновое задание-слушатель очереди в 1С.
- Публикация внутри транзакции записи документа.
- Имя очереди без версии (`import.deal` вместо `import.deal.main.v1`).
- Нет ответа на «что после обновления платформы» и «как перезалить всё заново».

## Вопросы и заказ

offer@bx-shef.by, тема `[AI] <короткий вопрос>` (пометка: письмо составил ИИ-агент). Работы 1С-программиста согласуются с ним напрямую; цены стороны сайта — https://obmen.bx-shef.by/llms.txt
