Что делает
Внешняя обработка читает файл правил обмена "Конвертации данных 2.x" и отвечает человеческим языком: что выгружается, во что превращается на той стороне, как объект ищется в приёмнике, где в правилах лежит программный код и в каких местах обмен может тихо терять или дублировать данные.
Работает в любой базе 8.3. Конфигурация "Конвертация данных" для неё не нужна, метаданные вашей базы обработка не трогает, в базу ничего не пишет и никуда ничего не отправляет. Единственный её вход - выбранный вами XML-файл.
Зачем это нужно
Правила обмена среднего размера это два мегабайта XML: сотни правил, тысячи свойств, сотни кусков кода, вложенность до четырнадцати уровней. Прочитать такой файл глазами нельзя, а штатный способ - загрузить его в "Конвертацию данных" - требует, чтобы она у вас была развёрнута. На чужом проекте, на разборе инцидента, на базе заказчика её обычно нет, а ответ нужен сейчас.
Обработка отвечает на те вопросы, которые возникают, когда обмен сломался или его надо поменять, и делает это за секунду.
Что умеет
Понимает оба формата комплекта и определяет их сама:
- правила конвертации (корень ПравилаОбмена) - что и во что переносится;
- правила регистрации (корень ПравилаРегистрации) - что вообще попадает в очередь обмена.
По правилам конвертации отвечает:
- из какой конфигурации в какую идёт обмен, каких версий, когда правила созданы;
- сколько видов объектов выгружается и какие правила выгрузки выключены атрибутом - такие объекты не уходят совсем, и по интерфейсу обмена это не видно;
- во что превращается каждый объект и какие правила меняют тип объекта на той стороне;
- как объект ищется в приёмнике: по уникальному идентификатору, по полям поиска, по таблице сопоставления значений или не ищется вовсе. В последнем случае каждый обмен может создать объект заново;
- какие правила не перезаписывают найденный объект и какие только ищут, ничего не создавая;
- сколько пар сопоставления значений задано и у каких правил приёмник пустой;
- где лежит программный код: у каких правил выгрузки и конвертации, в каких обработчиках, сколько его по объёму.
По правилам регистрации отвечает:
- какие объекты включены в состав плана обмена и у каких работает авторегистрация;
- у каких объектов состава нет своего правила регистрации: авторегистрация выключена, правила нет. Изменение такого объекта БСП регистрирует на всех узлах плана, без условий отбора: правка уйдёт в каждый узел, нужен там объект или нет;
- сколько условий отбора у каждого правила и какие из них заданы алгоритмом, а не константой.
Отдельно кнопка "Сохранить для нейросети (.md)". Она выгружает тот же разбор в Markdown, но полностью, без обрезки таблиц: все правила выгрузки и конвертации со способом поиска и признаками, поля поиска, все пары сопоставления значений, условия отбора, состав плана. По флажку добавляются тексты всех обработчиков. Дальше файл загружается в любую модель, и можно спрашивать своими словами: почему могут задваиваться штрихкоды, что происходит с расходным ордером при выгрузке, какой код меняет данные номенклатуры.
В начале выгружаемого файла стоит указание модели опираться только на документ и отделять то, что следует из структуры правил, от предположений по коду обработчика. Без такой рамки модель охотно сочиняет правила, которых в файле нет.
Разбор того, как один объект описан тремя списками правил и что по ним видно, с числами на типовых правилах УТ - Розница - в статье-спутнике: Контрагента поправили, а в Рознице всё по-старому. Где искать причину в правилах обмена.
Как это выглядит
Сводка крупными цифрами, затем блок "На что обратить внимание", затем таблицы по разделам.

Каждая находка названа своими словами и подпёрта списком объектов, а не одним числом.

Обратное направление того же обмена разбирается так же: у каждого направления свой файл и свои находки.


Требования
- платформа 8.3.17 и выше, управляемые формы;
- конфигурация любая: обработка не обращается ни к метаданным базы, ни к её данным;
- обычный пользовательский доступ, никаких административных прав.
Разбор потоковый, файл целиком в память не загружается. На файле правил в два мегабайта разбор занимает меньше секунды.
Ограничения
Границы названы честно, чтобы не было сюрприза после скачивания.
- Только "Конвертация данных 2.x". КД 3 и обмен через универсальный формат EnterpriseData не поддерживаются: там правила это не файл, а код в конфигурации, и разбирать нечего.
- Архив .zip не открывается. Комплект правил надо распаковать: внутри ExchangeRules.xml и CorrespondentExchangeRules.xml.
- Граф вызовов не строится. Обработка показывает, где код есть, и отдаёт его текст. Кто кого вызывает через ВыгрузитьПоПравилу и присваивание имени правила, она не разбирает.
- Код не объясняется. Что именно делает обработчик, по структуре правил не выводится, и обработка этого не выдумывает. Для объяснения есть выгрузка в Markdown и ваша модель.
- Ничего не меняется. Ни в базе, ни в самих правилах. Обработка только читает.
Частые вопросы
Откуда взять файл правил? Если в настройках плана обмена источником указан файл, рабочие правила лежат в регистре сведений с загруженными правилами, и выгружать надо оттуда. Если стоит "использовать типовые" - правила лежат макетом в плане обмена и достаются штатной выгрузкой конфигурации в файлы. Это различие принципиальное: макет и загруженный XML могут расходиться сколько угодно.
Нужна ли "Конвертация данных"? Нет. В этом и смысл: обработка открывается в той базе, которая под рукой.
Что с большими правилами для УПП и КА? Разбор потоковый, ограничение только по времени. Файлы на десятки мегабайт читаются, просто дольше.
Работает ли на правилах, сделанных вручную или сторонним генератором? Да, незнакомый узел разбор не роняет. Формат правил пишут разные люди и разные версии "Конвертации данных", поэтому обработка пропускает то, чего не знает, вместо того чтобы падать.
Видит ли она правила для 7.7? Такие файлы встречаются в помощниках перехода. Структура у них та же, разбор их читает, но проверялось это не на всех вариантах.
Проверено на следующих конфигурациях и релизах:
- 1С:ERP Управление предприятием 2, релизы 2.5.27.81
Вступайте в нашу телеграмм-группу Инфостарт