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

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

Как создать правило обмена в 1С

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

Правило обмена в 1С — это файл с описанием того, как данные одной конфигурации преобразуются в данные другой: какие объекты выгружать, как сопоставлять поля и реквизиты, что делать при отсутствии соответствия. Чаще всего правила создают в конфигурации «Конвертация данных» (редакции 2.1 или 3.0), а используют — в типовых обменах, обработках «Универсальный обмен данными в формате XML» или механизмах EnterpriseData.

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

Ниже — практический порядок создания правила обмена: от подготовки конфигураций до проверки результата, с разбором типичных ошибок и ограничений каждого подхода.

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

Прежде чем открывать «Конвертацию данных», проверьте, не решит ли задачу штатный механизм. В типовых конфигурациях на библиотеке стандартных подсистем (БСП) есть настройка синхронизации данных через «Администрирование → Синхронизация данных». Там правила уже встроены и поддерживаются поставщиком конфигурации: при обновлении релиза они обновляются автоматически.

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

Маршрут решения

Как выбрать подход

Обе конфигурации типовые, обмен между ними поддерживается штатноИспользуйте встроенную настройку синхронизации данных, свои правила не создавайте
Нужно перенести данные из доработанной или самописной конфигурацииСоздавайте правила в Конвертации данных 2.1 для обмена через универсальный формат XML
Обмен идёт через формат EnterpriseData с типовыми конфигурациямиРассмотрите Конвертацию данных 3.0 и расширение правил конвертации
Нужен одноразовый перенос справочников и остатковИспользуйте обработку «Универсальный обмен данными в формате XML» с простыми правилами КД 2.1

Подготовка: что нужно перед созданием правил

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

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

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

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

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

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

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

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

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

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

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

Начинайте настройку с одного простого справочника — например, «Валюты» или «Единицы измерения» — и доведите цикл «выгрузка → загрузка → проверка» до конца. Затем добавляйте объекты по одному. Так локализовать ошибку в правилах гораздо проще, чем при отладке полного обмена из двух десятков объектов сразу.
ПЗ
Практическое замечание

Выгрузка и загрузка данных по созданным правилам

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

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

Для обменов через EnterpriseData (Конвертация данных 3.0) механика другая: правила загружаются в саму конфигурацию через механизм регистрации правил конвертации, а обмен идёт через планы обмена и сообщения в формате XDTO. Этот вариант сложнее в освоении, но лучше подходит для регулярной синхронизации с типовыми конфигурациями.

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

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

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

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

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

Часть объектов не загрузилась, в протоколе ошибки поиска или конвертации

Справочники
Норма

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

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

Появились дубли контрагентов или номенклатуры — неверно настроен поиск

Документы
Норма

Суммы, даты и табличные части совпадают с источником, ссылки заполнены

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

Пустые ссылки на контрагентов или номенклатуру, расхождения в суммах

Проведение
Норма

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

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

Ошибки проведения из-за незаполненных обязательных реквизитов приёмника

Типичные ошибки при создании правил обмена

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

Вторая группа ошибок — потеря данных из-за ненастроенных ПКС. Если реквизит есть в источнике, но для него не создано правило конвертации свойства, значение молча не переносится. После загрузки обязательно сверяйте несколько объектов вручную по всем значимым реквизитам, а не только по наименованию и сумме.

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

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

Ограничения и альтернативные способы обмена

Конвертация данных — не единственный способ организовать обмен. Для простых задач переноса табличных данных (прайсов, списков номенклатуры) достаточно обработок загрузки из табличного документа или CSV. Для интеграции с внешними системами часто удобнее HTTP-сервисы, веб-сервисы или обмен через REST API, где правила описываются кодом, а не в конвертации.

У самих правил обмена есть ограничения. КД 2.1 ориентирована на универсальный XML-формат и плохо подходит для высокочастотной синхронизации больших объёмов. КД 3.0 требует конфигураций на современных версиях БСП и знания формата EnterpriseData. Производительность универсальной обработки ограничена: при переносе миллионов записей выгрузку разбивают на части по объектам или периодам.

Ещё одна альтернатива — прямое программирование обмена на встроенном языке через COM-соединение или файлы собственного формата. Это оправдано для узких специфических задач, но такой код сложнее сопровождать, чем правила конвертации, которые можно корректировать без изменения конфигурации.

Сравнение способов обмена

Типовая синхронизация (БСП)

Подходит для поддерживаемых пар типовых конфигураций; не требует разработки, но не покрывает доработки и нетиповые объекты

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

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

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

Расширение типовых правил EnterpriseData для современных конфигураций; сложнее освоение, работает только с форматом XDTO

HTTP/веб-сервисы

Прямая интеграция с внешними системами в реальном времени; требует разработки и сопровождения кода

Часто задаваемые вопросы

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

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

Чем отличается Конвертация данных 2.1 от 3.0?

Редакция 2.1 строит правила для универсального XML-обмена и работает практически с любыми конфигурациями, включая старые. Редакция 3.0 предназначена для расширения типовых правил в формате EnterpriseData (XDTO) и применяется с современными конфигурациями на базе БСП, где обмен идёт через планы обмена.

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

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

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

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

Что делать, если в приёмнике есть обязательный реквизит, которого нет в источнике?

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

Безопасно ли менять правила обмена в работающей синхронизации?

Изменённые правила вступают в силу для новых сеансов обмена, но сами по себе не исправляют уже перенесённые данные. Перед заменой правил сделайте резервную копию обеих баз и проверьте новую версию на копиях: изменение правил поиска может привести к тому, что ранее сопоставленные объекты начнут дублироваться.

Итог

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

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