К статье
Практический материал

Разработка и Конфигурация · 10 мин

Как создать правила конвертации 1С: практическое руководство

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

Правила конвертации — это набор инструкций, по которым 1С преобразует объекты одной конфигурации в объекты другой при обмене данными. Без корректных правил обмен между, например, «Управлением торговлей» и «Бухгалтерией предприятия» либо невозможен вовсе, либо приводит к дублям справочников, потере реквизитов и битым ссылкам.

Создаются правила в специальной конфигурации «Конвертация данных» (редакции 2.1 и 3.0) от фирмы «1С». Она бесплатна для пользователей с действующей подпиской ИТС и работает как отдельная информационная база. Результат работы — XML-файл правил, который загружается в типовую обработку обмена или в настройку синхронизации.

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

Что понадобится перед началом работы

Для создания правил потребуется три компонента: сама конфигурация «Конвертация данных», выгрузка структуры метаданных базы-источника и выгрузка структуры базы-приёмника. Выгрузка метаданных выполняется обработкой MD83Exp.epf (для обычных форм) либо штатными средствами — в зависимости от редакции конвертации и режима работы конфигурации.

Перед началом чётко сформулируйте задачу: какие объекты переносятся (справочники, документы, регистры), в какую сторону идёт обмен, нужен ли отбор по дате или организации. От этого зависит объём правил. Перенос одного справочника «Номенклатура» — работа на час, а полноценная синхронизация документов с движениями — проект на несколько дней с тестированием.

Загрузка структур метаданных источника и приёмника

Первый шаг в «Конвертации данных» — создание новой пары правил. В справочнике «Конвертации» укажите конфигурацию-источник и конфигурацию-приёмник. Затем загрузите выгруженные ранее XML-файлы со структурами метаданных: программа построит внутреннее описание всех справочников, документов, регистров и их реквизитов для обеих баз.

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

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

Сравнение вариантов

Конвертация данных 2.1

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

Конвертация данных 3.0

Используется для синхронизации через формат EnterpriseData между современными типовыми конфигурациями. Правила работают «на лету» без файлов, но структура строже и меньше свободы в обработчиках.

Создание правил конвертации объектов (ПКО)

Правило конвертации объекта — центральный элемент: оно связывает тип объекта источника с типом объекта приёмника. Например, «Справочник.Номенклатура» источника → «Справочник.Номенклатура» приёмника. Создайте ПКО через одноимённый раздел: укажите объект источника, объект приёмника и способ поиска объекта при загрузке.

Способ поиска — критически важная настройка, от которой зависит, будут ли создаваться дубли. Стандартный вариант — поиск по внутреннему уникальному идентификатору (GUID) с дополнительным поиском по ключевым полям: для номенклатуры это часто артикул и наименование, для контрагентов — ИНН и КПП. Если положиться только на наименование, любое переименование в источнике создаст дубль в приёмнике.

Для документов дополнительно настройте правила конвертации табличных частей и движений. Помните: переносить проведение «как есть» удаётся не всегда — если в приёмнике другой набор регистров, движения придётся либо формировать алгоритмом, либо загружать документ непроведённым и проводить его уже в базе-приёмнике.

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

Настройка правил конвертации свойств (ПКС)

ПКС определяют, как реквизит источника попадает в реквизит приёмника. Простейший случай — прямое соответствие одноимённых реквизитов с совпадающими типами: «Конвертация данных» умеет создавать такие правила автоматически командой автосопоставления. Но автоматика покрывает только очевидные пары, всё остальное настраивается вручную.

Если реквизит ссылочного типа (например, «Валюта» в документе), для него должно существовать собственное ПКО, иначе ссылка превратится в пустое значение или текст. Для реквизитов, которых нет в приёмнике, решите осознанно: либо данные теряются, либо их нужно переносить в другое поле, либо в дополнительные сведения.

Несовпадение типов решается обработчиками. Типичный пример: в источнике ставка НДС — перечисление, в приёмнике — строка или другое перечисление. В обработчике «Перед выгрузкой» ПКС пишется соответствие значений через условный оператор или функцию-алгоритм.

bsl
Если Источник.СтавкаНДС = Перечисления.СтавкиНДС.НДС20 Тогда
    Значение = "20%";
ИначеЕсли Источник.СтавкаНДС = Перечисления.СтавкиНДС.НДС10 Тогда
    Значение = "10%";
Иначе
    Значение = "Без НДС";
КонецЕсли;

Обработчики событий и алгоритмы

Обработчики — это код на встроенном языке 1С, который выполняется в ключевые точки выгрузки и загрузки. У ПКО доступны события «Перед выгрузкой», «При выгрузке», «После выгрузки», «Перед загрузкой», «При загрузке», «После загрузки». У конвертации в целом есть глобальные обработчики, у ПКС — свои, локальные.

Через обработчики решают задачи, непокрываемые настройками: фильтрацию объектов (например, выгружать документы только одной организации — в «Перед выгрузкой» установить Отказ = Истина), вычисляемые поля, склейку нескольких реквизитов в один, поиск объектов по произвольным условиям.

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

Типичные ошибки
01
Поиск объектов только по наименованию — приводит к дублям при любом переименовании в источнике
02
Отсутствие ПКО для ссылочного реквизита — ссылки теряются, в приёмнике пустые значения
03
Тяжёлые запросы в обработчике «Перед выгрузкой» — обмен миллиона объектов выполняется часами
04
Правки правил сразу в рабочем обмене без копии — некорректная загрузка портит учётные данные
05
Игнорирование доработок конфигурации — правила собраны по типовым метаданным и не переносят добавленные реквизиты

Выгрузка, загрузка и тестирование правил

Готовые правила выгружаются из «Конвертации данных» в XML-файл командой «Выгрузить правила обмена». Этот файл подключается в типовой обработке «Универсальный обмен данными в формате XML» или в настройке синхронизации данных — в зависимости от сценария.

Тестирование стройте по нарастающей: сначала выгрузите один-два объекта вручную через отбор, проверьте, как они загрузились, — реквизиты, ссылки, табличные части. Затем прогоните пакет за период и сверьте контрольные суммы: количество документов, итоговые суммы по выборке, остатки по регистрам, если они переносились.

Обязательно включайте протокол обмена и читайте его при ошибках. Сообщения вида «Ошибка в обработчике события ПередЗагрузкой, ПКО = ДокументРеализация» сразу указывают место проблемы. Без протокола поиск причины превращается в гадание.

Контрольные точки

Как проверить результат

Количество объектов
Норма

Число выгруженных и загруженных объектов совпадает с учётом заданных отборов

Тревожный признак

Часть объектов пропала без записей об отказе в протоколе

Ссылки на связанные объекты
Норма

Все ссылочные реквизиты заполнены, связанные справочники загружены

Тревожный признак

Пустые ссылки, надписи «<Объект не найден>» в приёмнике

Дубли справочников
Норма

Повторный обмен не создаёт новых элементов для тех же объектов

Тревожный признак

После повторной синхронизации появляются элементы-двойники

Суммы документов
Норма

Итоги по выборке документов совпадают в обеих базах

Тревожный признак

Расхождения сумм, потерянные строки табличных частей

Частые вопросы по созданию правил конвертации

Можно ли создать правила без конфигурации «Конвертация данных»?

Для простых одноразовых переносов иногда достаточно типовой обработки «Выгрузка и загрузка данных XML» — она переносит объекты между идентичными конфигурациями без правил. Но если структуры баз различаются или нужны отборы и преобразования, без «Конвертации данных» не обойтись.

Чем отличаются ПКО, ПКС и ПКЗ?

ПКО — правило конвертации объекта целиком (справочника, документа). ПКС — правило для отдельного реквизита внутри ПКО. ПКЗ — правило конвертации значений, задающее соответствие между значениями перечислений или предопределённых элементов источника и приёмника.

Почему при загрузке создаются дубли контрагентов?

Почти всегда причина — неправильно настроенный поиск в ПКО. Проверьте, что поиск идёт по уникальному идентификатору и дополнительно по ИНН/КПП, а не только по наименованию. Также убедитесь, что в обеих базах не было самостоятельно созданных элементов с разными GUID, но одинаковыми реквизитами.

Как перенести только часть данных, например документы за период?

Используйте обработчик «Перед выгрузкой» соответствующего ПКО: проверьте дату документа и при несоответствии условию установите Отказ = Истина. Альтернатива — параметры конвертации и отборы в обработке обмена, если правила их поддерживают.

Обязательно ли писать обработчики, или хватит настроек?

Для идентичных или близких по структуре конфигураций часто достаточно автосопоставления и настроек поиска. Обработчики нужны, когда типы реквизитов различаются, требуется фильтрация, вычисляемые значения или нестандартный поиск объектов.

Что делать, если обмен работает, но очень медленно?

Ищите тяжёлые запросы в обработчиках, которые выполняются для каждого объекта. Вынесите чтение стабильных данных (курсы валют, соответствия) в глобальные обработчики с кэшированием в переменных, сократите число лишних ПКО и проверьте, не выгружаются ли неиспользуемые объекты.

Итог

Что важно запомнить

Правила конвертации строятся в конфигурации «Конвертация данных» по схеме: загрузка метаданных → ПКО с корректным поиском → ПКС для реквизитов → обработчики при необходимости → выгрузка XML → тест на копиях баз. Ключ к чистому обмену — правильный поиск объектов и обязательная сверка результатов до запуска в рабочей базе.