При разработке и сопровождении правил конвертации данных (КД 2.0) регулярной задачей становится проверка работы встроенных алгоритмов и обработчиков событий (например, «Перед выгрузкой», «При конвертации объекта», «После загрузки»). Штатно обработка Универсальный обмен данными XML выполняет программный код с помощью оператора Выполнить(), в котором прямая отладка не поддерживается. Для этого механизм обмена предусматривает генерацию внешней обработки отладки, однако программисты часто сталкиваются с ситуацией, когда точка останова в модуле этой обработки просто не срабатывает.
Разберем по шагам, как устроен механизм отладки правил обмена, выясним причины сбоев при подключении отладчика и рассмотрим проверенные способы решения проблемы.
Пошаговый алгоритм настройки отладки правил конвертации
Для того чтобы получить возможность пошагового выполнения кода обработчиков правил, выполним следующие действия:
Генерация модуля отладки: Откроем обработку Универсальный обмен данными XML (или V8Exchan82.epf), перейдем на вкладку «Отладка выгрузки» или «Отладка загрузки» и выберем режим формирования внешней обработки отладки. Сохраним созданный файл .epf в постоянный локальный каталог на диске.
Открытие файла в Конфигураторе: Запустим Конфигуратор нужной базы данных и откроем через меню «Файл — Открыть» именно тот файл обработки, который был сохранен на предыдущем шаге.
Установка точки останова: Перейдем в модуль объекта созданной обработки, найдем нужную процедуру с кодом правила и установим точку останова клавишей F9.
Запуск сеанса в режиме отладки: Запустим сеанс «1С:Предприятие» из Конфигуратора с включенной отладкой (F5).
Выполнение обмена: В открывшемся сеансе предприятия запустим универсальный обмен, укажем сформированный файл внешней обработки в поле файла модуля отладки и нажмем кнопку запуска обмена.
Основные причины, почему точка останова не срабатывает
Если после выполнения всех шагов выполнение кода не останавливается в нужной строке, проанализируем возможные технические причины:
Несовпадение физического пути к файлу: Конфигуратор сопоставляет точку останова с кодом по точному пути к файлу и его контрольной сумме. Если обработка открыта в Конфигураторе из одной папки (или временного каталога), а в сеансе предприятия указан файл из другой папки, платформа создаст дубликат окна модуля или проигнорирует точку останова.
Ошибки и ограничения конкретных релизов платформы: В ряде релизов платформы (например, в некоторых сборках 8.3.6) наблюдались ошибки механизма отладки внешних обработок при использовании динамического подключения через ВнешниеОбработки.Создать(). Обновление платформы на более стабильный релиз (например, 8.3.9 и выше) решает проблему без дополнительных правок.
Параметры разрешения отладки в сеансе: Необходимо убедиться, что в Конфигураторе в меню «Сервис — Параметры — Запуск 1С:Предприятия — Дополнительные» установлен флаг «Установить режим разрешения отладки».
Клиент-серверный режим и фоновые задания: Если база расположена на сервере 1С:Предприятия, служба сервера должна быть запущена с ключом -debug, а в окне «Предметы отладки» в Конфигураторе должны быть подключены серверные вызовы.
Альтернативные способы диагностики правил обмена
Если использование внешней обработки отладки затруднено окружением или правами доступа, рассмотрим альтернативные методы поиска ошибок:
Логирование в Журнал регистрации: В проблемном участке кода правила можно вызвать запись события:
Прерывание с выводом сообщения: Для быстрой проверки типов и значений реквизитов прямо в окне пользователя можно использовать метод Сообщить() в комбинации с прерыванием обработки объекта:
Перенос кода в общий модуль: При объемных и сложных алгоритмах наиболее надежный подход — вынести логику в серверный общий модуль конфигурации-приемника или источника и вызывать его функцию из правила конвертации. Отладка процедур общих модулей работает стабильнее отладки временных внешних файлов.