При выгрузке данных из 1С:Управление торговлей в 1С:Бухгалтерия предприятия (например, редакции 2.0) пользователи и разработчики могут столкнуться со следующим сообщением об ошибке:
Ошибка при выгрузке данных для узла плана обмена. ОписаниеОшибки = {Обработка.ОбменДаннымиXML.МодульОбъекта(13709)}: Не найден узел обмена для загрузки данных. План обмена: ОбменУправлениеТорговлейБухгалтерияКОРП, Код: 003. КодСообщения = 72
Чаще всего подобный сбой возникает внезапно, например, после переноса или восстановления одной из информационных баз из архивной копии (файла .dt). Разберем причины возникновения этой ситуации и пошаговые методы её устранения.
Выясним причину сбоя, опираясь на внутреннюю логику типовой обработки ОбменДаннымиXML и архитектуру планов обмена на базе «Конвертации данных 2.1»:
003), а подчиненный узел корреспондента содержит код приемника (например, 001). В базе-приемнике (БП) картина должна быть зеркальной: «Этот узел» имеет код 001, а узел, представляющий УТ — код 003. При прямом COM-подключении база-источник обращается к приемнику и пытается найти узел с кодом своего отправителя через вызов ПланыОбмена[Имя].НайтиПоКоду("003"). Если такого узла нет, формируется ошибка с кодом 72.ОбменУправлениеТорговлейБухгалтерияКОРП, даже если используется версия конфигурации ПРОФ. Дело в том, что разработчики конфигурации используют единое внутреннее имя объекта метаданных плана обмена, в то время как пользовательский синоним отображается как «Бухгалтерия предприятия, редакция 2.0». Платформа всегда обращается к метаданным по их системному имени, а не по синониму.Проанализируем текущие настройки в обеих информационных базах и приведем их к согласованному состоянию. Разберем действия по шагам:
003).001).Планы обмена и найдем план ОбменУправлениеТорговлейБухгалтерияКОРП.001).003. Если его нет, создадим новый узел и укажем для него код 003.Если код предопределенного узла заблокирован для редактирования в пользовательском режиме, воспользуемся программным изменением через внешнюю обработку:
УзелОбъект = ПланыОбмена.ОбменУправлениеТорговлейБухгалтерияКОРП.ЭтотУзел().ПолучитьОбъект();
УзелОбъект.Код = "001";
УзелОбъект.Записать();
После восстановления базы из архива исправления одних лишь кодов узлов часто бывает недостаточно. Поскольку в файле выгрузки содержатся устаревшие номера пакетов, при следующем сеансе обмена платформа может выдать ошибку: «Номер сообщения меньше или равен номеру ранее принятого». Разберем, как восстановить корректную передачу данных:
Регистрация изменений для обмена данными.Номер отправленного сообщения и Номер принятого сообщения равными 0.Если после восстановления архива структура узлов запуталась или в базах присутствуют лишние дубли узлов, самым надежным решением будет перенастройка подключения: