Top.Mail.Ru
Меню
Каталог Программы 1С Опыт и отзывы Услуги Компания Интересное Контакты

Отладка обработчиков событий правил обмена XML с помощью внешней обработки

Основатель и генеральный директор компании MoscowSoft, Сорокин Сергей
Сорокин Сергей, Генеральный директор MoscowSoft  22.12.2025 Актуальность проверена: 03.02.2026   5 мин.
Содержание

Большую часть времени разработчики правил обмена 1С не новые правила разрабатывают, а, конечно, вносят изменения в существующие и исправляют обнаруженные заказчиками ошибки. Мы рекомендуем заниматься отладкой по алгоритму, описанному ниже.

Этапы отладки правил обмена XML

Считаем, что отладку правил обмена нужно делать по возможности с минимальными усилиями. А возможности для этого есть. Мы предлагаем разделить на три этапа в зависимости от сложности требуемых усилий для разработчика.

Этап 1. Просто изучить текст ошибки

У обработки “Универсальный обмен в формате XML” хорошо реализовано логирование. Часто в тексте ошибки указано имя ПКО или ПВД, имя и номер свойства, в котором возникает ошибка и даже номер строки, в которой возникает ошибка.

Большую часть замечаний можно исправить именно таким способом. Заказчик присылает текст ошибки, внимательно смотрите на него. Исправляете ошибку. Отправляете корректные правила заказчику. Все.

Пример:

Ошибка в обработчике события ПередВыгрузкой (свойства)
ПКО = ВводОстатковРасчетыСПартнерами (:)
ПКС = 10 (--> ДатаПлатежа)
Объект = (Не определено)
СвойствоПриемника = ДатаПлатежа (Дата)
Обработчик = ПередВыгрузкойСвойства
ОписаниеОшибки = Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {<Неизвестный модуль>(16,2)}: Ожидается ключевое слово 'КонецЕсли' ('EndIf')
ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(10228)
КодСообщения = 55

Видно, что в ПКО ВводОстатковРасчетыСПартнерами в ПКС с кодом 10 с названием “ДатаПлатежа” в обработчике ПередВыгрузкойСвойства в строке 16 в позиции символа 2 ожидается ключевое слово “КонецЕсли”. То есть в данном случае разработчик не завершил условный оператор.

В основном именно такие простые ошибки и возникают и для их исправления даже не надо запускать выгрузку или загрузку данных 1С.

Этап 2. Запросить и изучить подробные логи

Иногда ошибка заключается в том, что объект неверного типа значения попадает в ПКО. То есть ПКО ожидает, например, тип СправочникСсылка.Контрагенты, а попадает СправочникСсылка.Организации. В этом случае из текста ошибки по умолчанию непонятно, из какого предыдущего ПКО или ПВД вызывается данное ПКО. То есть ошибка находится где-то выше по коду. Ранее. В каком-то другом ПКО есть ПКС и в этом ПКС неверное имя ПКО подставляется. Там в нее и надо усложнить алгоритм подбора ПКО.

Но этот код выше нам не увидеть из текста ошибки.

Что делать в этом случае?

Рекомендуем запросить клиента выполнить выгрузку данных с подробными логами. В терминах обработки “Универсальный обмен в формате ХМЛ” это называется Выводить информационные сообщения в протокол обмена.

Как выполнять эту выгрузку написали в отдельной статье: Как сделать выгрузку данных с подробными логами в обработке Универсальный обмен в формате XML?

Рекомендуем вашим заказчикам отправлять ссылку на эту статью и просить прислать протокол выгрузки в текстовом файле.

Ниже пример подробных логов выгрузки:

Правило выгрузки данных: ОстаткиАрендованныхОС (Остатки арендованных ОС (счет 001))
Выгрузка объекта: СтрокаТаблицыЗначений (Строка таблицы значений)
Выгрузка объекта: СтрокаТаблицыЗначений (Строка таблицы значений)
Выгрузка объекта: СтрокаТаблицыЗначений (Строка таблицы значений)
Конвертация объекта: СтрокаТаблицыЗначений (Строка таблицы значений) ПКО: ВводОстатковАрендованныхОС (:)
Конвертация объекта: ООО (Организация) ПКО: Организации (Справочник: Организации)
Конвертация объекта: 1 (Число) ПКО: ПодразделениеОсновное (:)
Конвертация объекта: Соглашение № 11001268 от 19.11.2021, EUR (Аренда) (Договор) ПКО: ОбъектыЭксплуатации (Справочник: Основные средства)
Ошибка получения значения свойства объекта (по имени свойства источника)
ПКО = ОбъектыЭксплуатации (Справочник: Основные средства)
ПКС = 1 (ДатаВыпуска --> ДатаВыпуска)
Объект = Соглашение № 11001268 от 19.11.2021, EUR (Аренда) (Договор)
СвойствоПриемника = ДатаВыпуска (Дата)
ОписаниеОшибки = Поле объекта не обнаружено (ДатаВыпуска)
ПозицияМодуля = ВнешняяОбработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(9587)
КодСообщения = 13

Какую ошибку тут наблюдаем?

В ПКО ОбъектыЭксплуатации попадает элемент справочника Договоры. И поэтому не могут отрабатывать ПКС.

Но кто вызывает ПКО ОбъектыЭксплуатации? Без подробных логов мы этого не видели. Сейчас же видно, что это ПКО ОстаткиАрендованныхСредств. Благодаря этому очень легко и быстро найти место, где вызываем ПКО ОбъектыЭксплуатации при выгрузке остатков арендованных средств.

Конкретно в этом случае мы выгружали из сальдо счета учета арендованных ОС значение Субконто1. А в клиентской базе основное средство находилось в Субконто2.

Добавили такой на проверку типа значения и выбор из разных номеров субконтов счета учета при заполнении Выборки данных в ПВД и ошибка ушла:

Если ТипЗнч(ДетальнаяВыборка.Субконто1) = Тип("СправочникСсылка.ОсновныеСредства") Тогда
		НоваяСтрокаОС.ОсновноеСредство = ДетальнаяВыборка.Субконто1;
	ИначеЕсли ТипЗнч(ДетальнаяВыборка.Субконто2) = Тип("СправочникСсылка.ОсновныеСредства") Тогда
		НоваяСтрокаОС.ОсновноеСредство = ДетальнаяВыборка.Субконто2;
	ИначеЕсли ТипЗнч(ДетальнаяВыборка.Субконто3) = Тип("СправочникСсылка.ОсновныеСредства") Тогда
		НоваяСтрокаОС.ОсновноеСредство = ДетальнаяВыборка.Субконто3;
КонецЕсли;

Этап 3. Отладка обработчиков правил обмена

Делается с помощью выгрузки кода в модуль объекта отдельной обработки для отладки обработчиков. Пошаговую инструкцию разберем далее по тексту.

Отладка обработчиков событий правил обмена с помощью внешней обработки 1С

Представьте ситуацию, что у вас написано большое количество программного кода в обработчиках событий правил конвертации данных XML. При выгрузке данных возникает ошибка. И по логам никак не получается идентифицировать, почему возникает ошибка. На каком объекте возникает ошибка, в какой момент? Ничего не известно.

В этом случае разработчикам приходится выполнять отладку обработчиков правил обмена XML. Для этого создается отдельная внешняя обработка. В ее модуль объекта помещается специальный программный интерфейс. И прямо в тексте можно устанавливать точки останова. Также можно включить остановку по ошибке.

Разберем инструкцию, как подготовить обработку отладки обработчиков выгрузки. А уже методику поиска конкретной ошибки выберете в зависимости от своей ситуации. Например, можете установить точку останова с условием и так далее.

MoscowSoft логотип

Подпишитесь на телеграм-канал MoscowSoft!
QR-код (ссылка приглашение) в канал MoscowSoft

https://t.me/MoscowSoft

Публикуем:
- инструкции и советы по разработке на 1С;
- рекомендации по интеграции 1С;
- бесплатно делимся своими обработками;
- публикуем секретные спецпредложения только для подписчиков.

Возврат к списку