Как настроить обмен данными между 1С:Управление торговлей 10.2 (платформа 8.0) и 1С:Бухгалтерия предприятия 2.0 (платформа 8.3)?

Программист 1С v8.3 (Обычные формы) 1C:Бухгалтерия Бухгалтерский учет IT и автоматизация бизнеса
← На главную

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

В этой статье мы подробно разберем, почему стандартные попытки выгрузить правила обмена часто заканчиваются неудачей, проанализируем ошибки ручного изменения правил, оценим риски создания самописных обработок и предоставим пошаговый алгоритм решения этой задачи с использованием инструмента «Конвертация данных 2.1».

Почему не получается настроить обмен через КД «с ходу»?

Основная проблема, с которой сталкивается программист при попытке выгрузить структуру метаданных из старой конфигурации УТ 10.2 (на платформе 8.0), — это использование неподходящей версии внешней обработки выгрузки. Современные релизы конфигурации «Конвертация данных 2.1» (КД) комплектуются обработками выгрузки метаданных, предназначенными для платформ 8.2 и 8.3 (например, MD82Exp.epf или MD83Exp.epf).

Если запустить обработку MD83Exp.epf в базе данных, работающей под управлением платформы 1С 8.0, система выдаст критическую ошибку. Это происходит из-за того, что в коде современных обработок используются методы, свойства и объекты метаданных, которые появились только в версиях платформы 8.2 и 8.3 (например, работа с управляемыми формами, новые функции работы со строками, встроенные методы сериализации и т.д.). В платформе 8.0 этих механизмов просто не существует.

Для успешного решения этой проблемы нам потребуется использовать специализированную обработку выгрузки метаданных именно для версии 8.0 — MD80Exp.epf. Найти ее можно в старых дистрибутивах КД или на дисках ИТС за 2011–2013 годы.

Разбор ошибки: «Ошибка формата» при ручной правке XML

Часто разработчики пытаются пойти по более простому, как им кажется, пути: взять готовые правила обмена (например, для связки УТ 10.3 – БП 2.0) и просто отредактировать XML-файл вручную, изменив номера версий конфигураций в заголовке файла. Это неизбежно приводит к возникновению «ошибки формата» при попытке загрузить правила в обработку обмена. Выясним основные причины этой ошибки:

  1. Различия в структуре метаданных УТ 10.2 и УТ 10.3. Несмотря на визуальное сходство интерфейсов, внутренняя структура этих конфигураций существенно различается. В версии 10.3 были переименованы многие реквизиты, изменены типы данных, переработаны табличные части документов (например, механизмы учета НДС, партионного учета, договоров контрагентов). Прямая подмена правил заставляет обработку обращаться к несуществующим объектам, что ломает парсинг XML-файла.
  2. Несовместимость версий обработок обмена. Универсальная обработка «Универсальный обмен данными в формате XML» жестко привязана к возможностям платформы. Для платформы 1С 8.0 используется обработка V8Exchan.epf, а для платформы 8.3 — V8Exchan83.epf. Попытка передать файл правил, предназначенный для одной версии обработчика, в другую без предварительной конвертации и приводит к синтаксическому сбою разбора формата XML.

Оценка создания самописной обработки выгрузки («Велосипеда»)

Когда стандартные инструменты не работают, у разработчика возникает соблазн написать собственную обработку выгрузки/загрузки данных через XML или COM-соединение. Рассмотрим, почему это решение в долгосрочной перспективе является неэффективным и опасным:

Правильный пошаговый алгоритм настройки обмена

Рассмотрим детально, как правильно настроить стабильный обмен между УТ 10.2 и БП 2.0, используя методологию «Конвертации данных 2.1».

Шаг 1. Подготовка инструментов и выгрузка метаданных

Для начала нам необходимо получить точные структуры метаданных обеих конфигураций в формате XML.

  1. Запустите информационную базу УТ 10.2 на платформе 1С:Предприятие 8.0.
  2. Откройте внешнюю обработку MD80Exp.epf (ее можно найти в каталоге шаблонов установленной КД 2.1).
  3. В открывшемся окне укажите путь для сохранения файла метаданных (например, UT102_metadata.xml). Нажмите кнопку «Выгрузить».
  4. Запустите информационную базу БП 2.0 на платформе 1С:Предприятие 8.3.
  5. Откройте внешнюю обработку MD83Exp.epf (или MD82Exp.epf, если база работает в режиме совместимости).
  6. Укажите имя файла для сохранения структуры (например, BP20_metadata.xml) и выполните выгрузку.

Шаг 2. Создание правил обмена в Конвертации данных 2.1

Теперь нам нужно настроить правила сопоставления объектов в базе «Конвертация данных».

  1. Откройте базу «Конвертация данных 2.1».
  2. Перейдите в справочник «Конфигурации» и загрузите созданные ранее файлы метаданных UT102_metadata.xml (источник) и BP20_metadata.xml (приемник).
  3. Создайте новую настройку правил обмена (создайте объект в справочнике «Правила обмена»). Укажите конфигурацию-источник (УТ 10.2) и конфигурацию-приемник (БП 2.0).
  4. Используйте встроенный мастер «Настройка правил обмена». Программа предложит автоматически сопоставить справочники и документы с одинаковыми именами. Согласитесь с этим предложением — это сэкономит до 80% времени.
  5. Вручную сопоставьте объекты, имена которых различаются. Например, если в УТ 10.2 используется специфический справочник, настройте его конвертацию в соответствующий справочник БП 2.0.
  6. Важный момент: Настройте правила конвертации свойств (РКС) для ключевых реквизитов. Обратите внимание на сопоставление договоров контрагентов и ставок НДС. Поскольку в УТ 10.2 ставки НДС могут храниться в виде перечисления, а в БП 2.0 — также в виде перечисления или справочника, обязательно пропишите правила перечисления значений (ПКО для перечислений).

Шаг 3. Настройка регистрации изменений в источнике (Планы обмена)

Чтобы обмен переносил только измененные данные, необходимо задействовать механизм планов обмена.

Проанализируем конфигурацию УТ 10.2. Если в ней отсутствует подходящий типовой план обмена, его необходимо создать в конфигураторе:

  1. Откройте УТ 10.2 в режиме Конфигуратора.
  2. Добавьте новый объект метаданных в ветку «Планы обмена» (назовите его, например, ОбменУТ102БП20).
  3. На вкладке «Состав» отметьте галочками те документы и справочники, изменения по которым необходимо регистрировать для переноса в бухгалтерию (например, документы РеализацияТоваровУслуг, ПоступлениеТоваровУслуг, справочники Контрагенты, Номенклатура).
  4. Для автоматической регистрации изменений убедитесь, что у выбранных объектов свойство «Авторегистрация» установлено в значение «Разрешить».

Пример кода для программной регистрации объекта на созданном плане обмена (если авторегистрация отключена или требуется зарегистрировать данные вручную):


// Процедура регистрирует изменения конкретного документа на узле обмена
Процедура ЗарегистрироватьИзменениеДокумента(ДокументСсылка, КодУзла) Экспорт
    УзелОбмена = ПланыОбмена.ОбменУТ102БП20.НайтиПоКоду(КодУзла);
    Если Не УзелОбмена.Пустая() Тогда
        ПланыОбмена.ЗарегистрироватьИзменения(УзелОбмена, ДокументСсылка);
    КонецЕсли;
КонецПроцедуры

Шаг 4. Настройка и запуск процесса обмена

После сохранения созданных правил обмена из КД в файл (например, Rules.xml), перейдем к непосредственному выполнению обмена:

  1. В конфигурации УТ 10.2 (на платформе 8.0) откройте внешнюю обработку V8Exchan.epf.
  2. На вкладке «Выгрузка данных» укажите путь к файлу правил Rules.xml и имя выходного файла данных (например, Data_UT_to_BP.xml).
  3. Выберите созданный узел плана обмена ОбменУТ102БП20, чтобы выгрузить только измененные объекты. Нажмите кнопку «Выгрузить данные».
  4. В конфигурации БП 2.0 (на платформе 8.3) откройте встроенную обработку «Универсальный обмен данными в формате XML» (или внешнюю V8Exchan83.epf).
  5. Перейдите на вкладку «Загрузка данных», укажите путь к файлу данных Data_UT_to_BP.xml и нажмите кнопку «Загрузить данные».

Пример чтения XML-файла данных на стороне БП 2.0, если вы захотите реализовать чтение через фоновое задание или кастомный скрипт загрузки:


// Пример безопасного чтения XML-файла выгрузки на платформе 8.3
Процедура ВыполнитьЗагрузкуДанныхИзФайла(ПутьКФайлу) Экспорт
    ФайлОбмена = Новый ЧтениеXML;
    Попытка
        ФайлОбмена.ОткрытьФайл(ПутьКФайлу);
    Исключение
        ЗаписьЖурналаРегистрации("ОбменДанными", УровеньЖурналаРегистрации.Ошибка, , , 
            "Не удалось открыть файл обмена: " + ОписаниеОшибки());
        Возврат;
    КонецПопытки;
    
    // Здесь запускается чтение структуры и загрузка объектов через специализированные механизмы КД
    // ...
    ФайлОбмена.Закрыть();
КонецПроцедуры

Использование этого системного подхода гарантирует целостность базы данных БП 2.0, исключает появление дублирующихся элементов и позволяет автоматизировать процесс обмена до запуска по расписанию через регламентные задания.

← На главную