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

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

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

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

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

Написание правил — задача программиста 1С, но понимание их структуры полезно и администратору, и внедренцу: это позволяет диагностировать ошибки обмена, оценивать трудоёмкость доработок и грамотно ставить задачи. Правила хранятся в виде XML-файла, который подключается к механизму обмена (универсальному обмену XML или формату EnterpriseData).

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

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

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

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

Конвертация данных 3.0 — современный инструмент для обменов через формат EnterpriseData (XDTO-пакеты). Используется в актуальных типовых конфигурациях: синхронизация БП 3.0 с УТ 11, ERP, ЗУП 3. Правила здесь — это наборы модулей на встроенном языке, загружаемые в менеджер обмена.

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

Сравнение инструментов

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

Подходит для универсального XML-обмена и старых типовых обменов. Ограничение: не работает с форматом EnterpriseData.

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

Стандарт для современных типовых синхронизаций (БП 3.0, УТ 11, ERP, ЗУП 3). Ограничение: требует знания XDTO-пакетов и встроенного языка.

Программный обмен (COM, HTTP, веб-сервисы)

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

Как подготовиться: выгрузка структур метаданных

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

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

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

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

Структура правил: ПКО, ПКС и правила поиска

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

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

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

Как настроить обработчики событий

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

Типовые сценарии использования обработчиков:

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

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

Особенности правил для Конвертации данных 3.0

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

Работа идёт с объектами формата XDTO: при отправке объект 1С преобразуется в объект XDTO-пакета, при получении — наоборот. Типовые правила уже покрывают большинство стандартных объектов, поэтому чаще задача сводится к расширению типовых правил: добавлению нового реквизита, нового объекта или изменению логики поиска.

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

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

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

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

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

Контрольные точки качественного обмена:

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

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

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

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

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

Объектов больше (дубли) или меньше (потери при конвертации)

Поиск существующих объектов
Норма

Повторная загрузка не создаёт новых элементов справочников

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

Каждая загрузка плодит дубли контрагентов или номенклатуры

Ссылочная целостность
Норма

Документы ссылаются на корректные контрагентов, договоры, номенклатуру

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

Пустые ссылки, битые ссылки, подстановка не тех элементов

Проведение документов
Норма

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

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

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

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

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

Большинство проблем обмена вызвано не сложной логикой, а типовыми просчётами на этапе проектирования правил. Знание этих ошибок экономит часы отладки.

Типичные ошибки
01
Поиск только по GUID без полей поиска: после переноса базы или переустановки обмена объекты не находятся и создаются дубли
02
Настройка ПКО без правила конвертации для ссылочного реквизита: в приёмнике остаются пустые ссылки
03
Обработчики с обращением к переменным, недоступным в данном событии: обмен падает с ошибкой без внятной диагностики
04
Отсутствие отборов на выгрузку: в приёмник уходят служебные и тестовые документы, объём пакетов растёт
05
Редактирование правил прямо в рабочем узле обмена без копии: откат при ошибке невозможен
06
Игнорирование различий в длине строковых реквизитов: при загрузке строки обрезаются или возникает ошибка

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

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

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

Технически да: файл правил — это XML определённой структуры, и его можно редактировать вручную или генерировать программно. На практике без Конвертации данных это неудобно и чревато ошибками. Альтернатива — полностью программный обмен через COM, HTTP или веб-сервисы, где правила не нужны вовсе, но вся логика пишется кодом.

Чем отличаются правила обмена и правила регистрации?

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

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

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

Как отладить обработчик события, если обмен выдаёт общую ошибку?

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

Что делать с правилами при обновлении типовой конфигурации?

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

Можно ли сделать обмен в реальном времени, а не по расписанию?

Да. Для планов обмена доступна регистрация изменений с отправкой по событию или с минимальным интервалом регламентного задания. Для строго мгновенной реакции используют программные механизмы: HTTP-сервисы, брокеры сообщений, подписки на события записи объектов. Учтите, что частый обмен увеличивает нагрузку на обе базы.

Итог

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

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