Разработка и Конфигурация · 12 мин
1С: как создать правила обмена данными
Как создать правила обмена данными в 1С через Конвертацию данных 2.1 и 3.0: настройка ПКО, ПКС, выгрузка, тестирование и типичные ошибки.
Правила обмена данными в 1С — это описание того, как объекты одной информационной базы (документы, справочники, регистры) преобразуются в объекты другой базы. Без корректных правил источник и приёмник «не поймут» друг друга: номенклатура не сопоставится, документы потеряют табличные части, а ссылки превратятся в битые. Поэтому создание правил — ключевой этап любой интеграции между конфигурациями.
Основной инструмент для этой задачи — конфигурация «Конвертация данных» от фирмы «1С». Версия 2.1 работает с правилами в формате XML и подходит для обменов через универсальный формат EnterpriseData и классические планы обмена. Версия 3.0 (ред. 3) использует другой подход: правила формируются на основе XDTO-пакетов и загружаются в обе базы через менеджер обмена. Выбор версии зависит от того, какие конфигурации участвуют в обмене.
Ниже разобран полный цикл: от подготовки и анализа структуры метаданных до выгрузки правил, их подключения и проверки результата. Материал ориентирован на специалистов, которые уже знакомы с конфигуратором 1С, но впервые настраивают собственные правила конвертации.
Что такое правила обмена и когда они нужны
Правила обмена — это набор инструкций, по которым обработка выгрузки читает объект из базы-источника, преобразует его и записывает в базу-приёмник. В состав правил входят правила конвертации объектов (ПКО), правила конвертации свойств (ПКС), правила конвертации значений (ПКЗ) для перечислений и предопределённых элементов, а также алгоритмы и запросы на встроенном языке.
Собственные правила требуются в нескольких ситуациях: когда типовой обмен между конфигурациями не покрывает нужные объекты, когда базы имеют разную структуру (например, самописная конфигурация и «Управление торговлей»), когда нужно перенести только часть данных с особыми условиями отбора, либо когда обмен идёт со сторонней системой через промежуточный формат.
Если обе базы работают на типовых конфигурациях одного поколения, сначала проверьте типовые правила — в большинстве поставок 1С они уже есть, и дорабатывать их проще, чем писать с нуля. Собственная разработка оправдана, когда типовой вариант отсутствует или принципиально не подходит по логике.
Выбор инструмента: Конвертация данных 2.1 или 3.0
Конвертация данных 2.1 — классический инструмент. Правила хранятся в виде XML-файла, который загружается в обработку «Универсальный обмен данными в формате XML». Этот вариант подходит для разовых переносов, миграций между разнородными базами и обменов, где приёмник не поддерживает формат EnterpriseData. Он проще для освоения и до сих пор широко используется.
Конвертация данных 3.0 ориентирована на обмен через универсальный формат EnterpriseData на базе XDTO. Правила здесь привязаны к версии формата и загружаются в обе базы — и в источник, и в приёмник. Такой подход применяется для постоянных синхронизаций между современными типовыми конфигурациями (например, ERP и Бухгалтерия), когда нужно изменить логику типового обмена.
Сравнение вариантов
Подходит для разовых переносов и разнородных баз; правила — один XML-файл; проще в отладке, но не поддерживает EnterpriseData.
Подходит для постоянных синхронизаций современных конфигураций через EnterpriseData; правила загружаются в обе базы; требует понимания XDTO.
Подходит, когда типовой обмен близок к нужному; экономит время, но изменения могут перезаписаться при обновлении — нужно хранить правила отдельно.
Подготовка: анализ структуры конфигураций
До создания первого правила нужно выгрузить описания структуры метаданных обеих баз. В Конвертации данных 2.1 это делается обработкой выгрузки конфигурации (MD83Exp.epf для обычных форм либо встроенной командой), которая формирует файл со структурой объектов. Эти файлы загружаются в конвертацию как «Конфигурация-источник» и «Конфигурация-приёмник».
На этапе анализа составьте таблицу соответствий: какие объекты переносятся, какие реквизиты имеют прямое соответствие, а какие требуют преобразования. Особое внимание уделите ссылочным полям — для каждого ссылочного реквизита должно существовать ПКО соответствующего справочника, иначе в приёмнике останутся пустые или битые ссылки.
Определите способ поиска объектов при загрузке: по уникальному идентификатору, по коду, по набору полей поиска (например, ИНН + КПП для контрагентов). От этого выбора зависит, не задвоятся ли данные при повторных выгрузках. Для справочников с ненадёжными кодами (ручное заполнение, смена префиксов) поле поиска лучше строить на комбинации нормализованных реквизитов.
Создание правил конвертации объектов
В конвертации создайте новые правила обмена: укажите имя, конфигурации источника и приёмника. Затем для каждой пары объектов добавьте ПКО. Например, для переноса документов «Реализация товаров и услуг» в «Реализация (акты, накладные)» создаётся ПКО с соответствующими объектами источника и приёмника.
Внутри ПКО настраиваются ПКС — соответствия реквизитов. Простые реквизиты (дата, номер, сумма) связываются напрямую. Для реквизитов, требующих преобразования, используются алгоритмы на встроенном языке: например, склейка нескольких полей в одно, пересчёт единиц измерения, установка значения по умолчанию, если в источнике поле пустое.
Табличные части обрабатываются через правила конвертации групп свойств (ПКГС): указывается табличная часть источника, приёмника и набор ПКС для её колонок. Если состав колонок различается, недостающие значения вычисляются в обработчиках «Перед выгрузкой» или «При загрузке».
- 1Выгрузите структуру метаданных обеих конфигураций в файлы
- 2Создайте в конвертации новую конвертацию и загрузите обе структуры
- 3Добавьте ПКО для каждой пары объектов, начиная со справочников
- 4Настройте ПКС и ПКГС внутри каждого ПКО, задайте поля поиска
- 5Создайте ПКЗ для перечислений и предопределённых элементов
- 6Сохраните правила и выгрузите их в XML-файл
- 7Протестируйте выгрузку и загрузку на копиях баз
Обработчики событий и алгоритмы
Когда прямого соответствия реквизитов недостаточно, используются обработчики событий. На уровне ПКО доступны события «Перед выгрузкой», «При выгрузке», «Перед загрузкой», «При загрузке», «После загрузки». В них можно изменить выгружаемые данные, отказаться от выгрузки объекта по условию, выполнить дополнительные записи в приёмнике.
Типовой пример: в источнике ответственный хранится как строка, а в приёмнике — как ссылка на справочник «Пользователи». В обработчике «Перед выгрузкой» реквизита по строке ищется пользователь, и в приёмник передаётся ссылка. Другой частый сценарий — фильтрация: выгружать только проведённые документы за заданный период, что реализуется отказом от выгрузки в обработчике.
Повторно используемый код выносите в алгоритмы — они доступны из любых обработчиков и упрощают сопровождение. Учитывайте, что код обработчиков выполняется в безопасном контексте выгрузки: избегайте тяжёлых запросов в цикле по строкам табличных частей, иначе выгрузка большого объёма займёт неоправданно много времени.
Самая частая причина «зависшей» выгрузки — запрос к базе внутри обработчика, срабатывающего для каждой строки. Выносите такие данные в соответствие или таблицу значений, заполненную один раз в обработчике «Перед конвертацией», и обращайтесь к ней из алгоритмов.
Выгрузка, подключение и тестирование правил
После завершения настройки правила выгружаются из конвертации в файл. В версии 2.1 это один XML-файл, который указывается в обработке «Универсальный обмен данными в формате XML» на закладке «Выгрузка данных». В версии 3.0 правила сохраняются через механизм выгрузки в формате EnterpriseData и загружаются в обе базы через настройку синхронизации данных.
Тестирование начинайте с малого объёма: один справочник, затем один документ с табличной частью, затем пакет документов за короткий период. После каждой загрузки сверяйте результат в приёмнике: количество созданных объектов, заполненность ключевых реквизитов, отсутствие дублей при повторной загрузке.
Для контроля используйте протокол обмена — в нём видны ошибки загрузки каждого объекта с указанием правила, на котором произошёл сбой. Ошибки вида «Объект не найден» почти всегда означают, что выгрузился документ раньше справочника, на который он ссылается, либо для ссылочного типа не создано ПКО.
Как проверить результат
Объекты обновляются, количество не растёт
Появляются дубли — неверно настроены поля поиска
Все ссылки заполнены и открываются
Пустые поля или «Объект не найден» — нет ПКО для типа
Суммы совпадают с источником
Расхождения — ошибка в ПКС табличной части
Нет ошибок или только ожидаемые отказы по отбору
Массовые ошибки загрузки объектов
Типичные ошибки и ограничения
Наиболее распространённая ошибка — отсутствие ПКО для ссылочного типа, встречающегося в реквизитах. Выгрузка при этом формально проходит, но в приёмнике остаются пустые поля. Вторая по частоте проблема — неверные поля поиска: если искать контрагентов только по наименованию, любая правка наименования в источнике создаст дубль в приёмнике.
Также часто забывают про ПКЗ для перечислений и предопределённых элементов справочников: без них значения перечислений не сопоставляются, а предопределённые элементы не находятся. Ещё одна ловушка — различие в длине строковых реквизитов: строка, не поместившаяся в реквизит приёмника, вызовет ошибку загрузки или обрежется, в зависимости от настроек.
Важное ограничение самостоятельной работы: правила для обменов с участием механизмов обособленного учёта, регистров бухгалтерии со сложной аналитикой и расчётных регистров требуют глубокого понимания обеих конфигураций. Ошибка в конвертации проводок может исказить учётные данные, и такие участки разумно доверять специалистам с опытом именно этих конфигураций.
Сопровождение правил при обновлении конфигураций
Правила обмена жёстко привязаны к структуре метаданных. После обновления любой из конфигураций реквизиты могут быть переименованы, удалены или изменить тип — и правила начнут выдавать ошибки. Поэтому после каждого обновления проверяйте обмен на копии: выгрузите новую структуру метаданных, обновите её в конвертации и пройдитесь по ПКС с ошибками — конвертация подсвечивает ссылки на несуществующие объекты.
Храните файлы правил в системе контроля версий или хотя бы в структурированном архиве с датами и комментариями к изменениям. Это позволит быстро откатиться к рабочей версии, если доработка сломала обмен, и понять, что именно менялось между версиями.
Что важно запомнить
Правила обмена создаются в Конвертации данных: ПКО связывают объекты, ПКС — реквизиты, обработчики решают нестандартные преобразования. Ключ к стабильному обмену — корректные поля поиска, полный набор ПКО для ссылочных типов и обязательное тестирование на копиях баз перед боевым запуском.
Частые вопросы
Можно ли создать правила обмена без конфигурации «Конвертация данных»?
Технически да — типовые правила можно править напрямую в XML-файле, а для простых обменов между идентичными конфигурациями иногда достаточно стандартных планов обмена без правил вовсе. Но для разнородных баз ручное редактирование XML неудобно и чревато ошибками, поэтому конвертация остаётся основным инструментом.
Чем отличается выгрузка по правилам от прямого копирования данных запросом?
Правила обмена обеспечивают сопоставление объектов между базами: при повторной выгрузке данные обновляются, а не дублируются, ссылки корректно разрешаются, а логика преобразований централизована. Прямая запись запросом таких гарантий не даёт и применима только для одноразовых переносов в идентичную структуру.
Почему при загрузке возникает ошибка «Объект не найден»?
Чаще всего выгрузился объект, ссылающийся на элемент справочника, для которого не создано ПКО, либо связанный справочник не попал в выгрузку из-за отбора. Проверьте, что все ссылочные типы покрыты правилами и что справочники выгружаются раньше документов или вместе с ними.
Как перенести только часть документов, например за определённый период?
Используйте отборы: в обработке выгрузки можно задать период и отбор по организации, а в обработчике «Перед выгрузкой» ПКО — произвольное условие с установкой отказа от выгрузки. Комбинация этих способов закрывает практически любые сценарии фильтрации.
Нужно ли загружать правила в обе базы?
Для Конвертации данных 2.1 правила нужны только на стороне выгрузки — приёмник принимает уже готовый XML-файл. Для версии 3.0 и обменов через EnterpriseData правила загружаются в обе базы, так как каждая сторона должна знать, как формировать и интерпретировать сообщения обмена.
Что делать, если после обновления конфигурации обмен перестал работать?
Выгрузите актуальную структуру метаданных обновлённой базы, загрузите её в конвертацию и проверьте правила на ссылки на удалённые или переименованные объекты. Исправьте затронутые ПКО и ПКС, выгрузите новую версию правил и протестируйте обмен на копии перед запуском в рабочей базе.