Как разобраться в обменах 1С: состав, карта и сравнение планов

обмен данными 1Спланы обменаПрофессиональная редакция

Разбор обменов по выгрузке 1С: explain_exchange_plan в режимах plan, diff и map, осмотр файлов через exchange_drops и границы выводов без живой базы.

В задаче «разобраться, почему не пришли данные» легко смешать три разных вопроса: что настроено в конфигурации, что изменилось между версиями и что происходило при выполнении обмена. Начните с состава плана, сравните его с предыдущей выгрузкой и найдите обработчики обмена. Номера сообщений и состояние узлов придётся проверять отдельно в базе.

Профессиональная редакция MCP-1C предоставляет explain_exchange_plan с v2.27.0, а с v2.30.0 — режимы сравнения и карты, а также инструмент exchange_drops для осмотра каталогов. Они позволяют собрать исходные факты до обращения к живой базе. Источники: справочник обменов и история релизов.

В статье: состав, сравнение, карта, файлы, проверка в базе.

Сначала прочитайте состав плана

explain_exchange_plan работает по выгрузке. Режим plan показывает имя, синоним, признак РИБ, включение расширений, ссылки на шаблоны и состав объектов с токеном авторегистрации AutoRecord.

{
  "base": "test",
  "mode": "plan",
  "plan": "ОбменФилиалы",
  "format": "json"
}

Имена в примере условные. Не трактуйте AutoRecord: Deny как доказательство, что объект не передаётся: в РИБ он может переноситься составом конфигурации. Отсутствующий Content.xml тоже не означает пустой состав — отбор может определяться форматом обмена. Непрочитанный состав должен остаться неизвестным в выводах по задаче.

Сравните версии перед изменением

Режим diff сравнивает один план в двух выгрузках либо два плана в одной. В первом случае нужны dump_path, dump_path_b и plan; во втором — plan и plan_b. Пример для двух выгрузок внутри разрешённого дерева:

{
  "mode": "diff",
  "dump_path": "/opt/1c/dump/current",
  "dump_path_b": "/opt/1c/dump/new",
  "plan": "ОбменФилиалы",
  "format": "json"
}

Ответ показывает изменившиеся свойства, добавленные и удалённые объекты, изменения AutoRecord и число совпавших позиций. Признак clean требует не только пустой разницы, но и полноты сравнения без примечаний. Если сторона не найдена или состав не удалось сравнить, пустые списки разницы не подтверждают равенство.

С v2.30.0 абсолютные пути ограничены зарегистрированными выгрузками. Относительные доступны при настройке --exchange-compare-root; правила обоих маршрутов подробно описаны в справочнике.

Постройте карту мест, связанных с обменом

Режим map собирает планы, регламентные задания с расписаниями, подписки на события и признаки обмена в коде. Он помогает найти места для чтения, когда доработка затронула несколько подсистем. Для поиска признаков в BSL нужна подключённая база с готовым индексом: если передан только каталог или индекс недоступен, этот раздел помечается непроверенным, хотя планы и расписания разбираются.

Источник карты Что уточнить дальше
План обмена Состав и настройки нужного плана
Регламентное задание Где и при каких условиях запускается обработчик
Подписка Какие события связаны с обработчиком
Признак в BSL Реально ли выполняется найденная ветка

Совпадение конструкции в модуле не доказывает, что этот код выполнялся. Карта не показывает номера сообщений, очередь ошибок, состояние узлов и конфликты РИБ. Это ориентир для расследования по исходникам.

Осмотрите каталог файлов без чтения содержимого

exchange_drops показывает имена, размеры, даты изменения и возраст файлов. Администратор заранее задаёт корень через --exchange-drop-root или MCP_1C_EXCHANGE_DROP_ROOT; без этой настройки инструмент отсутствует в списке.

Чтобы посмотреть разрешённый подкаталог и посчитать файлы старше часа, передайте в exchange_drops:

{
  "subdir": "incoming",
  "stale_after_minutes": 60,
  "format": "json"
}

Содержимое сообщений не читается. Возраст файла сам по себе не означает остановленный обмен: перед вами может быть архив. Копирование с обновлением даты также меняет этот показатель.

При ограниченном обходе сводные показатели относятся только к показанным записям; в JSON это отмечает aggregates_partial. Поля и пределы перечислены в описании exchange_drops.

Подтвердите гипотезу в тестовой базе

Теперь гипотеза должна быть конкретной: например, нужный объект исчез из состава плана или ожидаемый обработчик не найден в доступных исходниках. Проверьте именно её по штатной диагностике обмена и на тестовых данных.

Для изменения состава проверьте передачу нужного объекта между тестовыми узлами, обработку повторного сообщения и восстановление после предусмотренного сбоя. Статическая карта и даты файлов поддерживают расследование, но не заменяют проверку доставки данных.

Рядом полезны карта подсистем и анализ технологического журнала.