Как исправить ошибку режима совместимости при переносе номенклатуры обработкой ВыгрузкаЗагрузкаДанныхXML в Рознице 3.0 на платформе 8.5?

Программист 1С v8.5 1С:Розница Торговля и дистрибуция
← На главную

При переносе данных между идентичными конфигурациями 1С:Розница 3.0 (или 1С:УНФ) стандартным инструментом администратора является внешняя обработка ВыгрузкаЗагрузкаДанныхXML83.epf. Однако при работе в среде новой технологической платформы 1С:Предприятие 8.5 разработчики сталкиваются с непредвиденной блокировкой: при попытке открытия или запуска выгрузки программа выдает отказ со ссылкой на несовместимый режим совместимости конфигурации, даже если в свойствах метаданных установлен параметр Не использовать.

Проанализируем ситуацию, выясним глубинную причину такого поведения платформы и подробно рассмотрим варианты решения задачи переноса справочника номенклатуры.

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

На первый взгляд кажется, что дело в параметрах самой конфигурации, и изменение свойства Режим совместимости в дереве метаданных решит проблему. На практике переключение этого параметра между Не использовать и предыдущими версиями не дает результата. Ошибка кроется не в базе данных, а в коде самой внешней обработки ВыгрузкаЗагрузкаДанныхXML83.epf.

Рассмотрим подробнее логику валидации окружения внутри обработки:

  1. При инициализации формы выполняется обращение к объекту СистемнаяИнформация.ВерсияПриложения для считывания текущего релиза платформы.
  2. В теле процедур зашит жесткий парсинг строкового представления версии (например, поиск подстроки 8.3).
  3. Алгоритм рассчитан исключительно на ветку 8.3. Когда обработка запускается на платформе 8.5, встроенное условие интерпретирует старшую мажорную цифру 8.5 как неподдерживаемую среду или как несоответствие режима совместимости, после чего прерывает выполнение и выбрасывает исключение.

Способ 1. Доработка кода обработки ВыгрузкаЗагрузкаДанныхXML83.epf

Если для решения задачи требуется использовать именно выгрузку по прямому формату XML с сохранением уникальных идентификаторов (GUID), снимем ограничение в коде обработки. Разберем по шагам, как это сделать:

  1. Откроем ВыгрузкаЗагрузкаДанныхXML83.epf через Конфигуратор как внешний файл.
  2. Перейдем в модуль основной формы обработки и найдем процедуру проверки версии платформы и режима совместимости (обычно это процедура, вызываемая в обработчике ПриОткрытии или ПриСозданииНаСервере).
  3. Закомментируем вызов проверки либо адаптируем условие разбора версии платформы так, чтобы оно разрешало запуск на версиях 8.5.
  4. Сохраним внешнюю обработку и запустим её в режиме 1С:Предприятие.

Посмотрим на пример адаптации условия в коде модуля:


// Отключаем строгую блокировку по номеру релиза платформы
// Старый вариант проверки вызывал исключение при ВерсияПриложения вида 8.5.*
Если Лев(СистемнаяИнформация.ВерсияПриложения, 3) <> "8.3" И Лев(СистемнаяИнформация.ВерсияПриложения, 3) <> "8.5" Тогда
    ВызватьИсключение "Обработка предназначена для работы на платформе 8.3 и выше.";
КонецЕсли;

Способ 2. Временный перенос базы на платформу 8.3

Если конфигурация Розница 3.0 не использует специфичный функционал, доступный исключительно в ветке 8.5, самым быстрым способом будет временное использование платформы 8.3:

  1. Подключим обе информационные базы (источник и приемник) через стартер платформы 1С:Предприятие 8.3 (релизов 8.3.24 или 8.3.25).
  2. Откроем оригинальную обработку ВыгрузкаЗагрузкаДанныхXML83.epf без внесения правок в код.
  3. Выгрузим необходимые объекты из исходной базы и загрузим их в целевую базу.
  4. После завершения загрузки данных продолжим штатную эксплуатацию обеих баз на платформе 8.5.

Важные нюансы переноса номенклатуры в конфигурации Розница 3.0

При выгрузке только одного справочника Номенклатура через XML часто возникает проблема повреждения ссылочной целостности. Конфигурация Розница 3.0 построена на едином ядре с УНФ, где карточка номенклатуры тесно связана со множеством сопутствующих структур данных.

Если выгрузить исключительно справочник Справочник.Номенклатура, в чистой базе-приемнике поля единиц измерения, категорий и ставок НДС окажутся пустыми или будут содержать битые ссылки Объект не найден. Чтобы перенос прошел корректно, обязательно включим в состав выгрузки зависимые метаданные:

  1. Справочники: КатегорииНоменклатуры, ЕдиницыИзмерения, ХарактеристикиНоменклатуры, СерииНоменклатуры, УпаковкиЕдиницыИзмерения.
  2. Регистры сведений: ШтрихкодыНоменклатуры, ЦеныНоменклатуры, СчетаУчетаНоменклатуры.

Альтернативные варианты переноса данных

Если нет необходимости переносить внутренние идентификаторы GUID всех записей или исправлять внешнюю обработку, воспользуемся штатными типовыми механизмами:

  1. Обмен в формате EnterpriseData: Встроенная синхронизация через универсальный формат автоматически контролирует состав выгружаемых данных. Механизм подтягивает по ссылкам всю нормативно-справочную информацию (единицы измерения, категории, штрихкоды и упаковки), исключая появление битых ссылок в целевой базе.
  2. Загрузка данных из внешних источников: В командной панели справочника Номенклатура доступна штатная загрузка из табличного документа (Excel или CSV). Этот способ удобен тем, что алгоритм при импорте автоматически создает сопутствующие единицы измерения и штрихкоды по правилам конфигурации.
  3. Универсальный обмен данными XML (Конвертация данных 2.1): Использование классических правил конвертации позволяет гибко настроить выгрузку по ссылкам, перенося только те реквизиты и регистры, которые действительно требуются для работы товарного каталога.
← На главную