Как изменить типовые правила обмена между УТ 10.3 и БП 3.0 через Конвертацию данных 2.1

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

Работа с типовыми обменами в 1С часто вызывает опасения у начинающих разработчиков, особенно когда речь заходит о такой мощной, но сложной подсистеме, как Конвертация данных 2.1 (КД 2.1). В этой статье мы подробно разберем, как модифицировать обмен между Управление торговлей 10.3 и Бухгалтерия предприятия 3.0, настроить программную подмену реквизитов и защитить данные в приемнике от нежелательной перезаписи.

Подготовительный этап: получение метаданных и правил

Прежде чем приступать к редактированию правил в Конвертации данных, нам необходимо подготовить "фундамент" — актуальные описания структур конфигураций (метаданные) и сами XML-файлы правил обмена. Поскольку конфигурация УТ 10.3 часто бывает доработанной (нетиповой), использование стандартных метаданных из поставки КД может привести к ошибкам.

Разберем процесс получения метаданных по шагам:

  1. Найдем в каталоге установки Конвертации данных внешнюю обработку MD82.epf.
  2. Запустим эту обработку в режиме "1С:Предприятие" в нашей базе-источнике (УТ 10.3). Выгрузим описание метаданных в XML-файл.
  3. Повторим процедуру для базы-приемника (БП 3.0). Если БП 3.0 типовая, можно использовать стандартное описание, но лучше выгрузить актуальное, чтобы учесть все расширения и обновления.

Теперь нам нужно найти сами типовые правила обмена. Как правило, в современных версиях Бухгалтерии предприятия 3.0 они хранятся внутри конфигурации. Проанализируем, где их искать:

Загрузка данных в Конвертацию данных 2.1

Когда все файлы готовы, откроем базу Конвертация данных 2.1 и приступим к импорту. Рассмотрим правильную последовательность действий:

Сначала обновим информацию о конфигурациях. Зайдем в справочник "Конфигурации" и создадим (или обновим) описания для УТ и БП, загрузив созданные ранее файлы метаданных через обработку "Загрузка описания конфигурации". Это критически важно, так как без этого Конвертация данных не "увидит" ваши новые реквизиты, добавленные в УТ 10.3.

Затем перейдем в меню "Сервис" — "Загрузка правил обмена". При загрузке выберем наш XML-файл правил. Важный нюанс: при загрузке система может спросить, обновлять ли существующие ПКО (Правила конвертации объектов) и ПКС (Правила конвертации свойств). Если вы загружаете правила впервые, просто соглашаемся со всеми пунктами.

Реализация логики: изменение реквизита на константу в зависимости от условий

Рассмотрим ситуацию, когда при выгрузке документа "Реализация товаров и услуг" нам нужно заполнить определенный реквизит в зависимости от того, какой договор выбран в документе. Для этого мы будем использовать обработчики событий внутри КД.

Найдем в дереве правил ПКО для документа "Реализация" и перейдем к списку ПКС (свойств). Найдем нужный реквизит приемника. Чтобы изменить его программно, нам нужно открыть обработчик Перед выгрузкой для этого конкретного свойства.

Проанализируем пример кода, который позволит нам реализовать логику "Реквизит -> Константа":


// В обработчике ПКС "Перед выгрузкой"
Если Источник.ДоговорКонтрагента.ВидВзаиморасчетов = Справочники.ВидыВзаиморасчетов.НайтиПоНаименованию("Особый") Тогда
    Значение = "Константа_1";
Иначе
    Значение = "Константа_2";
КонецЕсли;

В данном коде переменная Значение определяет то, что фактически попадет в файл выгрузки. Если мы явно присваиваем ей данные, стандартный поиск значения в Источнике (автоматическое сопоставление) игнорируется. Это позволяет гибко управлять данными "на лету".

Защита данных от перезаписи (Односторонний обмен)

Часто возникает задача: обмен идет из УТ в БП, и если бухгалтер изменил наименование контрагента или его адрес в базе БП, эти изменения не должны затереться при следующей синхронизации. Выясним, как это настроить в КД 2.1.

Существует два уровня настройки "незамещения":

  1. На уровне всего объекта (ПКО): В правилах конвертации объекта (например, "Контрагенты") на закладке "Настройки" можно установить флаг Не замещать существующие объекты в приемнике. Если этот флаг стоит, то при обнаружении в базе БП контрагента с таким же ИНН/КПП (или GUID), система просто пропустит его и не будет обновлять ни одно поле.
  2. На уровне конкретного поля (ПКС): Если нам нужно, чтобы объект обновлялся, но, например, поле "Наименование" оставалось нетронутым, заходим в ПКС "Наименование" и устанавливаем флаг Не замещать значение свойства у существующих объектов в приемнике.

Проанализируем ситуацию с поиском. Чтобы система поняла, что объект "существующий", должны быть правильно настроены поля поиска. Для контрагентов это обычно ИНН и КПП. Убедитесь, что галочки Поиск стоят напротив нужных реквизитов в ПКС.

Загрузка измененных правил обратно в 1С

После внесения правок сохраним правила в XML-файл через обработку "Выгрузка правил обмена". Теперь нам нужно "воткнуть" их обратно в типовой механизм синхронизации БП 3.0.

Посмотрим на алгоритм действий в Бухгалтерии предприятия 3.0:

  1. Перейдем в раздел Администрирование — Синхронизация данных.
  2. Откроем список настроенных синхронизаций и выберем наш обмен с УТ 10.3.
  3. Нажмем кнопку Параметры синхронизации — Настройка правил обмена.
  4. В открывшемся окне выберем вариант "Загрузить из файла на компьютере" и укажем наш новый XML-файл.

Важный момент: если вы изменили логику выгрузки (например, условия по договорам), то объекты, которые уже были зарегистрированы к обмену ранее, могут не сразу применить новые правила. В таких случаях рекомендуется воспользоваться обработкой Регистрация изменений для обмена и перерегистрировать нужные документы или справочники.

Особенности использования КД 2.1 для УТ 10.3

Разберем вопрос выбора версии Конвертации данных. Хотя существует более современная Конвертация данных 3.0, для обменов с участием УТ 10.3 она не подходит. КД 3.0 работает по технологии XDTO и ориентирована на конфигурации, построенные на современных версиях БСП (Библиотеки стандартных подсистем). УТ 10.3 — это конфигурация старого поколения на "обычных формах", поэтому использование КД 2.1 здесь является единственно верным и технически обоснованным решением.

В случае возникновения сложностей при отладке программного кода в обработчиках, рекомендуем использовать механизм отладки выгрузки. В КД 2.1 можно сформировать специальный модуль отладки, вставить его во внешнюю обработку и запустить в УТ 10.3. Это позволит пройти по каждой строчке вашего кода Значение = ... и увидеть, как заполняются переменные в реальном времени.

← На главную