Как исправить ошибку синхронизации УТ и Розницы: «Не найдено соответствие для значения Источника: ОсобенностиУчетаНоменклатуры — Обувная продукция»?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

При настройке и использовании регулярного обмена данными между конфигурациями «1С:Управление торговлей» (УТ) и «1С:Розница» по универсальному формату (EnterpriseData) пользователи и администраторы часто сталкиваются с прерыванием процесса синхронизации. Ошибка заявляет о невозможности сопоставить значения перечисления, отвечающего за особенности учета маркированной продукции. Рассмотрим подробно, почему возникает данная проблема и какими методами ее можно решить.

Выясняем причину возникновения ошибки

С развитием национального законодательства в сфере маркировки товаров («Честный ЗНАК»), фирма «1С» регулярно расширяет перечень видов маркируемой продукции. В конфигурациях за это отвечает перечисление ПеречислениеСсылка.ОсобенностиУчетаНоменклатуры. В него постепенно добавляются новые предопределенные элементы: «Обувная продукция», «Табачная продукция», «Шины и автопокрышки», «Духи и туалетная вода» и другие.

Синхронизация через универсальный формат EnterpriseData опирается на XML-правила обмена, встроенные внутрь конфигураций. Если одна из ваших баз обновилась чуть раньше другой, или разработчики 1С не успели синхронно обновить правила конвертации значений (ПКЗ) для новых элементов разметки маркировки, то при выгрузке номенклатуры возникает логический тупик. База-источник выгружает товар с признаком Обувная продукция, но правила конвертации «не знают», какому значению в базе-приемнике соответствует этот элемент. Программа останавливает чтение пакета данных и выдает ошибку.

Проанализируем структуру сообщения об ошибке из журнала регистрации:

  1. ИмяПКО = ОсобенностиУчетаНоменклатуры — указывает на правило конвертации объектов (в данном случае перечисления).
  2. Значение = Обувная продукция — это значение, которое было передано из базы-источника.
  3. ТипЗначения = ПеречислениеСсылка.ОсобенностиУчетаНоменклатуры — метаданные проблемного объекта.
  4. Текст = В правиле конвертации значений (ПКЗ) необходимо сопоставить значение Источника значению Приемника... — прямое указание на то, что в XML-схеме правил отсутствует жесткая связь между элементами двух баз.

Разберем по шагам наиболее эффективные способы исправления этой ситуации.

Способ 1. Использование альтернативных правил из конфигурации-партнера

В практике поддержки систем 1С замечена интересная особенность: правила обмена в сопряженных конфигурациях (например, УТ 11 и Розница 2) могут различаться по наполнению, даже если релизы выпущены примерно в одно время. Зачастую правила в конфигурации «Розница» оказываются более актуальными или содержат исправленные сопоставления, которых еще нет в параллельном релизе «Управления торговлей».

Выполним следующие действия для исправления обмена:

  1. Откроем базу «1С:Розница». Перейдем в раздел Администрирование -> Синхронизация данных.
  2. Найдем нашу настройку обмена и попробуем сохранить (выгрузить) правила конвертации во внешний файл на диск.
  3. Зайдем в базу «1С:Управление торговлей». Откроем настройки этой же синхронизации.
  4. Вместо использования встроенных правил обмена выберем опцию «Использовать правила из файла» и загрузим полученный ранее XML-файл.
  5. Запустим повторную синхронизацию данных. Очень часто этот простой шаг полностью решает проблему без необходимости программирования.

Способ 2. Корректировка сопоставления значений в Конвертации данных 3.0

Если обновление баз или перенос правил не помогают, нам придется скорректировать правила обмена вручную. Поскольку обмен идет по технологии EnterpriseData, для редактирования правил конвертации нам понадобится специализированная база «Конвертация данных, редакция 3.0» (КД 3.0).

Рассмотрим алгоритм ручной правки правил конвертации значений (ПКЗ):

  1. Выгрузим текущие правила обмена из базы-источника в XML-файл.
  2. Запустим конфигурацию «Конвертация данных 3.0» и импортируем в нее наши правила обмена.
  3. Перейдем в раздел Правила конвертации значений (ПКЗ) и найдем там сопоставление для перечисления ОсобенностиУчетаНоменклатуры.
  4. Проверим табличную часть сопоставлений. Если в колонке «Источник» присутствует значение ОбувнаяПродукция (или Обувная продукция), а колонка «Приемник» пуста, нам нужно вручную связать эти строки.
  5. Укажем в качестве значения приемника соответствующий элемент перечисления приемника ОбувнаяПродукция.
  6. Сохраним измененные правила обмена обратно в XML-файл.
  7. Загрузим обновленные правила в настройки синхронизации в вашей рабочей базе 1С и запустим обмен повторно.

Способ 3. Программный обход проблемы через расширение конфигурации

Если у вас нет возможности или навыков работы с «Конвертацией данных 3.0», проблему можно решить точечным кодом в расширении конфигурации. Мы можем перехватить обработку выгрузки/загрузки данных на уровне общего модуля, отвечающего за менеджер обмена через универсальный формат.

Проанализируем пример кода, который принудительно сопоставляет типы маркировки при обработке данных, не допуская падения системы в ошибку. Этот код пишется в расширении для общего модуля (например, МенеджерОбменаЧерезУниверсальныйФормат):


&После("ЗаполнитьПравилаКонвертацииЗначений")
Процедура Расш1_ЗаполнитьПравилаКонвертацииЗначений(ПравилаКонвертации)
    
    // Находим нужное нам правило конвертации перечисления
    Если ПравилаКонвертации.Свойства.ИмяПКО = "ОсобенностиУчетаНоменклатуры" Тогда
        
        // Создаем недостающую связь программно
        НоваяСтрока = ПравилаКонвертации.ТаблицаЗначений.Добавить();
        НоваяСтрока.Источник = Перечисления.ОсобенностиУчетаНоменклатуры.ОбувнаяПродукция;
        НоваяСтрока.Приемник = "ОбувнаяПродукция"; // Текстовый идентификатор XDTO-последовательности
        
    КонецЕсли;
    
КонецПроцедуры

Такой программный обход позволяет быстро «протолкнуть» зависшую синхронизацию без необходимости глубокого анализа XML-схем правил.

Способ 4. Очистка кэша синхронизации

Иногда возникает ситуация, когда вы уже обновили обе конфигурации до самых актуальных релизов, где разработчики 1С гарантированно исправили эту ошибку, но синхронизация все равно продолжает падать с тем же сообщением. Это происходит из-за кэширования старых правил обмена самой платформой 1С.

Рекомендуется выполнить следующие действия:

  1. Выполните полную очистку кэша конфигурации на локальном компьютере пользователя (путем удаления базы из списка и повторного ее добавления или через очистку папок AppData).
  2. Если база работает в клиент-серверном варианте, может потребоваться перезапуск службы сервера 1С:Предприятие для очистки серверного кэша метаданных.
  3. В крайних случаях помогает удаление старой настройки синхронизации данных и создание нового подключения «с нуля». Это принудительно заставит платформу сформировать новые правила обмена и корректно зарегистрировать изменения.
← На главную