При обмене данными между конфигурациями Управление торговлей версии 11.5 и Бухгалтерия предприятия версии 3.0 часто возникают ситуации, когда процесс синхронизации прерывается ошибкой. Одной из наиболее распространенных проблем является ошибка выполнения обработчика ПриОтправкеДанных с текстом Поле объекта не обнаружено (Подразделение). Давайте разберем, почему это происходит и как устранить данную ошибку шаг за шагом.
Первая трудность, с которой сталкиваются разработчики — это «невидимость» ошибки для отладчика. Часто при запуске синхронизации вручную отладчик не останавливается на проблемном участке кода. Причина кроется в том, что механизмы обмена данными в 1С по умолчанию выполняются в фоновых заданиях.
Чтобы увидеть реальную причину падения кода, выполним следующие действия:
Управление торговлей.Отладка -> Подключение.Автоматическое подключение для пункта Фоновые задания.МенеджерОбменаЧерезУниверсальныйФормат происходит обращение к отсутствующему полю Подразделение.После включения отладки мы видим, что система пытается обратиться к полю Подразделение внутри табличной части Услуги документа ПриобретениеТоваровУслуг. Ошибка возникает из-за того, что в текущей версии конфигурации структура метаданных изменилась (реквизит переименован или перемещен), а правила обмена или код модуля остались прежними. Это классический конфликт версий, возникающий после обновления конфигурации.
Рассмотрим два основных способа, которые помогут вернуть синхронизацию в рабочее состояние.
Фирма «1С» оперативно выпускает исправления (патчи) для известных критических ошибок. В данном случае для релиза УТ 11.5 была выпущена специальная заплатка под номером EF_00_00471992. Это наиболее предпочтительный вариант решения, так как он не требует ручного вмешательства в код конфигурации и сохраняет возможность последующего корректного обновления системы.
Для поиска и установки патча:
Администрирование -> Обслуживание.Обновление программы и проверьте наличие патчей (исправлений) в Центре мониторинга.Если официальный патч по каким-то причинам недоступен, опытные разработчики иногда прибегают к временному восстановлению логики из предыдущего рабочего релиза. Суть метода заключается в замене функции ПТиУ_РасширенныеДанныеИБ на версию из того релиза, где обмен работал без ошибок (например, из версии 11.5.8.245).
Разберем пример того, как это выглядит в коде:
// Пример фрагмента кода, который требует проверки
Если ЗначениеЗаполнено(СтрокаУслуги.Подразделение) Тогда
// Текущая версия кода вызывает ошибку, если поле не найдено
// Здесь мы должны проверить наличие реквизита в метаданных перед обращением
КонецЕсли;
Внимание: данный метод является «костылем». Мы настоятельно рекомендуем использовать его только как временную меру для восстановления обмена, а при ближайшей возможности заменить на официальное обновление от разработчика.
Для предотвращения подобных ситуаций в будущем:
Настройках синхронизации данных.Если ни один из методов не помог, рекомендуем обратиться на линию консультации 1С или к вашему обслуживающему партнеру, так как возможны специфические изменения в структуре базы, требующие индивидуальной настройки правил конвертации.