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