Гайд 1С: Настройка и отладка универсального обмена данными XML (КД 2.0)
При выполнении обмена через правила «Конвертации данных 2.0» (КД 2.0) возникают проблемы:
- Критическое замедление выгрузки/загрузки данных (обмен выполняется часами).
- Ошибки
Ошибка при выгрузке данных: {Обработка.УниверсальныйОбменДаннымиXML...}без конкретизации строки ошибки. - Задвоение элементов справочников при некорректно настроенных полях поиска в правилах (ПКО).
- Переполнение стека и утечки памяти при сериализации тяжелых связанных структур.
1. Настройка режима отладки обработчиков КД 2.0
Для поиска ошибки внутри кода обработчиков (ПВД, ПКО, ПКС) выгрузите их в модуль внешней обработки:
- В обработке
УниверсальныйОбменДаннымиXMLперейдите на вкладку Выгрузка данных. - Установите флаг Режим отладки обработчиков и нажмите
Настройка отладки. - Сгенерируйте модуль отладки и сохраните как внешнюю обработку (например,
debug_kd2.epf). - Поставьте точку останова в коде обработки и запустите процесс через Конфигуратор 1С.
2. Оптимизация обработчиков: исключение запросов в ПКС
Самая частая причина медленного обмена — выполнение запросов к базе данных внутри обработчиков ПередОбработкой или ПриВыгрузке для каждого отдельного реквизита (ПКС). Выносите сбор данных в обработчик ПВД (ПередОбработкой) и передавайте данные через коллекцию ВходящиеДанные пакетом.
3. Использование FastXML и отключение ненужных метаданных
// Отключение выгрузки неиспользуемых связанных объектов
Отказ = Ложь;
Если НЕ Параметры.ВыгружатьОстатки Тогда
Отказ = Истина;
КонецЕсли; Частые вопросы (FAQ)
В чем разница между обработчиками 'При выгрузке' и 'После выгрузки' в ПКО?
'При выгрузке' выполняется до сериализации свойств объекта и позволяет подменить выгружаемые данные или отменить выгрузку. 'После выгрузки' срабатывает, когда XML-узел объекта уже полностью сформирован.
Как избежать задвоения справочников при загрузке по правилам КД 2.0?
В Правиле конвертации объектов (ПКО) на вкладке 'Поля поиска' четко задайте уникальные идентификаторы (например, ИНН+КПП или УникальныйИдентификатор) и включите флаг 'Не замещать существующие объекты'.
Почему выгрузка через COM-соединение работает медленнее, чем через файл?
COM-соединение выполняет маршалинг каждого типа данных через границы процессов Windows, создавая задержки на уровне вызовов OLE/COM. Файловый или потоковый XML-обмен лишен этого оверхеда.
Как обработать ошибку 'Поле объекта не обнаружено' внутри правил КД 2.0?
Включите режим генерации алгоритмов отладки в обработке обмена, подключите отладчик к сгенерированному файлу обработки и отследите проблемный реквизит по стеку вызовов.