Как создавать и редактировать правила обмена в 1С:Конвертация данных?

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

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

Инструменты для создания и редактирования правил обмена

Для разработки и модификации правил конвертации применяется специализированная конфигурация — «1С:Конвертация данных» редакции 2.x. Разберем по шагам стандартную цепочку действий при изменении структуры метаданных конфигураций-источников или приемников:

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

Настройка фильтрации данных по организации

Частая задача при переносе документов — ограничение состава выгрузки конкретной организацией. Реализовать такой отбор можно несколькими способами. Проанализируем каждый вариант.

Способ 1. Использование параметров обмена

Создадим глобальный параметр на вкладке «Параметры» в конфигурации «Конвертация данных» с именем Организация. При открытии обработки универсального обмена этот параметр станет доступен для выбора на вкладке «Параметры выгрузки». Затем в ПКО нужного документа в обработчике «Перед выгрузкой» пропишем проверку:


Если ЗначениеЗаполнено(Параметры.Организация) И Источник.Организация <> Параметры.Организация Тогда
    Отказ = Истина;
КонецЕсли;

Способ 2. Жесткое условие в обработчике ПКО

Если правила пишутся под конкретную организацию и интерактивный выбор не требуется, отбор можно задать непосредственно по наименованию или другим реквизитам объекта в обработчике «Перед выгрузкой»:


Если Источник.Организация.Наименование <> "Основная организация" Тогда
    Отказ = Истина;
КонецЕсли;

Особенности контекста обработчиков и ошибка «Переменная не определена (Источник)»

Выясним причину частой ошибки начинающих разработчиков: появление сообщения об ошибке Переменная не определена (Источник). В «Конвертации данных» обработчики выполняются в строго определенном контексте:

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

Если необходимо отобрать документы по периоду, правильнее всего задавать период на уровне ПВД в параметрах ДатаНачала и ДатаОкончания. Проверка даты в ПКО вида Если Источник.Дата < Параметры.ДатаНачала Тогда Отказ = Истина; КонецЕсли; допустима, но приводит к лишнему считыванию неподходящих объектов из базы.

Корректное заполнение счетов учета в правилах конвертации свойств

Посмотрим на пример сопоставления счетов бухгалтерского учета, когда в базе-источнике (например, УТ 10.3) план счетов отсутствует, а в приемнике (БП 2.0) реквизит требует ссылку на предопределенный счет плана счетов Хозрасчетный.

В ПКС реквизита счета в обработчике «Перед выгрузкой» передадим имя предопределенного счета в строковом виде либо установим поиск по коду:


Если Источник.ВидОперации = Перечисления.ВидыОперацийПКО.ОплатаПокупателя Тогда
    Значение = "РасчетыСПокупателями"; // Имя предопределенного счета в приемнике
Иначе
    Значение = "";
КонецЕсли;

Если требуется непосредственная установка счета при загрузке в базе-приемнике, пропишем следующий код в обработчике ПКО «После загрузки»:


Если Объект.ВидОперации = Перечисления.ВидыОперацийПКО.ОплатаПокупателя Тогда
    Объект.СчетУчетаРасчетовСКонтрагентом = ПланыСчетов.Хозрасчетный.НайтиПоКоду("62.01");
Иначе
    Объект.СчетУчетаРасчетовСКонтрагентом = ПланыСчетов.Хозрасчетный.ПустаяСсылка();
КонецЕсли;

Почему документы переносятся пустыми при автоматической генерации правил

Разберем типичные причины ситуации, когда документ переносится в базу-приемник, но его реквизиты или табличные части остаются пустыми:

  1. Не созданы ПКС для табличных частей: при автоматическом создании правил мастер может не сгенерировать правила для строк табличных частей. Необходимо открыть ПКО документа, развернуть ветку табличной части и создать правила конвертации свойств для каждой колонки.
  2. Отсутствие ПКО для ссылочных реквизитов: если у документа заполнены поля типа СправочникСсылка (Контрагент, Договор, Номенклатура), но для этих справочников в правилах нет сопоставленных ПКО, ссылки не смогут выгрузиться или синхронизироваться в приемнике, и поля останутся пустыми.
  3. Режим проведения: документы по умолчанию загружаются непроведенными. Чтобы документ автоматически проводился после загрузки, в обработчике ПКО После загрузки укажем РежимЗаписи = РежимЗаписиДокумента.Проведение; либо включим флаг проведения на форме обработки универсального обмена.
← На главную