При настройке или выполнении регулярной синхронизации данных между конфигурациями «Управление торговлей» редакции 11.4 и «Розница» редакции 2.2 пользователи и администраторы часто сталкиваются со следующей критической ошибкой:
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(14921)}: Тип не определен (ПеречислениеСсылка.ВариантыОказанияУслуг) СоответствиеТипа.Вставить(ИмяУзла, Тип(ПравилаОбмена.Значение));
В этой статье мы подробно разберем причины возникновения данной ошибки, проанализируем изменения в метаданных конфигураций и рассмотрим несколько практических вариантов решения этой проблемы — от официального обновления до ручной корректировки правил обмена.
---
Для того чтобы понять, почему ломается обмен, проанализируем изменения в структуре метаданных конфигурации «Управление торговлей» начиная с релиза 11.4.5.54. В этой версии разработчики фирмы «1С» провели масштабный рефакторинг механизмов учета номенклатурных позиций с типом «Услуга».
В рамках оптимизации конфигурации предопределенное перечисление ВариантыОказанияУслуг было переименовано в УдалитьВариантыОказанияУслуг. Аналогичные изменения затронули и реквизиты справочников: например, реквизит ВариантОказанияУслуг в справочнике ВидыНоменклатуры стал называться УдалитьВариантОказанияУслуг.
Когда мы запускаем синхронизацию данных через КД 2.0 (Конвертация данных редакции 2.0), программа использует XML-файлы правил обмена. В конфигурации «Розница» версии 2.2.9.19 встроенные правила обмена все еще содержат обращения к старому типу метаданных — ПеречислениеСсылка.ВариантыОказанияУслуг.
В процессе загрузки данных на стороне «Управления торговлей» специализированный обработчик КонвертацияОбъектовИнформационныхБаз считывает правила обмена и пытается сопоставить типы данных источника и приемника. На строке 14921 происходит вызов стандартной функции платформы Тип():
// В обработке КонвертацияОбъектовИнформационныхБаз
СоответствиеТипа.Вставить(ИмяУзла, Тип(ПравилаОбмена.Значение));
Поскольку в метаданных УТ 11.4.5 перечисления со старым именем больше не существует, функция возвращает значение Неопределено, что приводит к аварийному завершению работы и выводу сообщения об ошибке.
---
Самый надежный и рекомендуемый способ решения проблемы — приведение релизов ваших информационных баз к совместимому состоянию. Разработчики регулярно обновляют правила синхронизации и включают их в состав дистрибутивов обновлений.
Проанализируем требования к совместимости релизов, которые содержатся в сопроводительных файлах к конфигурации «Розница»:
Таким образом, для восстановления работоспособности обмена стандартными средствами нам необходимо обновить конфигурацию «Розница» до релиза 2.2.9.20 или выше. После обновления метаданные и встроенные правила синхронизации автоматически придут в соответствие.
---
Если по каким-то причинам вы не можете оперативно обновить конфигурацию «Розница» (например, база находится на доработке или снята с поддержки), можно обновить только сами правила обмена, не затрагивая конфигурацию целиком.
Здесь важно разобраться в логике размещения файлов обмена, принятой у разработчиков 1С. Запомните важное правило: правила для обмена с базой-приемником всегда находятся в каталоге шаблонов базы-источника. Это означает следующее:
Выполним пошагово процесс извлечения и загрузки корректных правил:
C:\Users\<ИмяПользователя>\AppData\Roaming\1C\1cv8\tmplts\1c\trade\11_4_5_54\
...\AddFiles\Переходы с других конфигураций\Синхронизация данных\Розница, ред 2.2\
Правила конвертации.zip. Распакуем его — внутри будут находиться файлы правил обмена (в формате XML), которые адаптированы под изменения релиза 11.4.5 и содержат корректные сопоставления типов (включая работу с удаленным перечислением).После этого Розница начнет использовать корректные правила, которые учитывают новую структуру метаданных УТ 11.4.5, и ошибка сопоставления типов исчезнет.
---
Рассмотрим ситуацию, когда ваши базы значительно доработаны, правила обмена кастомизированы (например, через программу «1С:Конвертация данных 2.1»), и загрузка типовых правил сотрет ваши уникальные настройки. В этом случае мы можем исправить ошибку вручную прямо в XML-файле правил.
Выполним следующие шаги:
ПеречислениеСсылка.ВариантыОказанияУслуг
ПеречислениеСсылка.УдалитьВариантыОказанияУслуг
ВариантОказанияУслуг
УдалитьВариантОказанияУслуг
Этот простой «костыль» позволит вам запустить обмен мгновенно, без изменения конфигураций и без потери ваших персональных настроек правил конвертации.
---
Описанная выше проблема наглядно демонстрирует главный недостаток обменов, построенных по технологии КД 2.0: жесткую привязку правил конвертации к конкретным именам объектов метаданных в обеих базах. Любое переименование перечисления или реквизита разработчиками 1С неизбежно ломает весь процесс обмена данными.
Для того чтобы навсегда уйти от необходимости синхронно отслеживать и обновлять релизы конфигураций под требования правил обмена, мы рекомендуем перевести синхронизацию на технологию КД 3.0 (универсальный формат EnterpriseData).
Рассмотрим, как работает эта схема:
В этой схеме, если в УТ изменят имя перечисления на УдалитьВариантыОказанияУслуг, это затронет только внутренние правила самой УТ. База-отправитель (Розница) об этом изменении даже не узнает, так как она продолжает выгружать стандартный объект услуги в шину обмена, а УТ сама разберет его и запишет в измененные реквизиты. Это позволяет обновлять базы асинхронно и минимизирует риски возникновения подобных ошибок в будущем.