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