Отладка правил конвертации данных (КД 2): трассировка обмена
Симптомы ошибок при выгрузке и загрузке данных XML в 1С
При выполнении обмена между разнородными конфигурациями (например, УТ 10.3 -> БП 3.0) процесс выгрузки прерывается аварийно с выдачей сообщений: Ошибка в обработчике события ПередВыгрузкойОбъекта, Поле агрегатного объекта не обнаружено или данные переносятся с искажением реквизитов.
| Событие в окне обмена | Контекст ошибки | Причина |
|---|---|---|
| Ошибка при вызове метода контекста (ВыгрузитьПоПравилу) | Обработчик ПКО / ПКО_ПослеЗагрузки | Попытка обращения к реквизиту, отсутствующему в исходном объекте источника |
| Тип не определен | Конвертация свойств (ПКС) | Несоответствие имен типов метаданных в конфигурациях источнике и приемнике |
| Зависание процесса выгрузки | Выгрузка движений регистров | Неоптимизированный запрос внутри циклического обработчика ПКС |
Пошаговый процесс отладки правил обмена в Конфигураторе
- Включение режима генерации отладочного модуля в обработке:
- Откройте обработку «Универсальный обмен данными в формате XML» (V8Exch83.epf).
- Перейдите на вкладку «Выгрузка данных», укажите путь к файлу ваших правил конвертации (
.xml). - Перейдите на вкладку «Настройки для разработчика» (или «Отладка выгрузки»).
- Установите флаг «Включить режим отладки обработчиков».
- Генерация модуля отладки:
- Нажмите кнопку «Сформировать код обработчиков» и скопируйте созданный текст в буфер обмена или сохраните в файл.
- Откройте конфигурацию информационной базы источника в режиме Конфигуратор.
- Создайте внешнюю обработку (или откройте модуль внешней обработки отладки
ОбработкаДляОтладкиВыгрузки.epf), вставьте сгенерированный код в модуль объекта обработки.
- Установка точек останова (Breakpoints):
В тексте вставленного кода найдите проблемное правило, например событие
ПКО_ПередОбработкой_Номенклатура, и поставьте точку останова клавишейF9. - Запуск процедуры трассировки:
- Запустите 1С в режиме «Отладка» (F5).
- В обработке универсального обмена поставьте флаг «Использовать внешнюю обработку с кодом обработчиков» и укажите файл вашей обработки.
- Нажмите «Выгрузить данные». Выполнение прервется в конфигураторе на точке останова, позволяя исследовать переменные
ОбъектКоллекции,Параметры,Отказчерез табло (Shift+F9).
Совет разработчику: Для быстрой отладки без конфигуратора используйте метод вывода сообщений Сообщить("Текущее значение: " + Строка(Значение)); непосредственно внутри тела обработчиков в конфигурации «Конвертация данных 2.1» с последующим пересохранением файла правил.
Частые вопросы (FAQ)
В чем разница между обработчиками ПКО и ПКС?
ПКО (Правило Конвертации Объекта) описывает сопоставление и логику переноса документа или справочника целиком. ПКС (Правило Конвертации Свойства) управляет логикой заполнения отдельного конкретного реквизита или табличной части.
Как принудительно пропустить выгрузку объекта по условию?
В теле обработчика ПКО 'ПередВыгрузкой' напишите условие и установите флаг Отказ = Истина; (например: Если Источник.ПометкаУдаления Тогда Отказ = Истина; КонецЕсли;).
Где взять последнюю версию обработки «Универсальный обмен данными XML»?
Актуальная внешняя обработка поставляется в составе шаблона конфигурации 'Конвертация данных' и лежит в каталоге: AppData\Roaming\1C\1Cv8\tmplts\1c\Conversion\<НомерРелиза>\.
Можно ли выполнять отладку правил загрузки (приемника)?
Да, алгоритм полностью аналогичен: флаг отладки включается на вкладке 'Загрузка данных', после чего модуль отладки внедряется в базу-приемник.