Загрузка и правка правил обмена данными в 1С

· 9 мин

Содержание

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

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

Где лежат правила и из чего они состоят

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

Файл правил состоит из нескольких частей:

  • 🔄 правила конвертации объектов — соответствие «что во что превращается»;
  • 📤 правила выгрузки данных — какие объекты и по какому отбору уходят из источника;
  • 🧹 правила очистки — что удалять в приёмнике при повторной загрузке;
  • ⚙️ обработчики событий (алгоритмы) — встроенный код на языке 1С, который срабатывает в моменты выгрузки и загрузки: пересчитать сумму, подставить значение по умолчанию, пропустить объект по условию.

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

Хранятся правила в двух местах, в зависимости от типа обмена:

Тип обменаГде лежат правилаКак обновляются
Типовая синхронизация, РИБВ макете плана обмена, внутри конфигурацииАвтоматически, при обновлении конфигурации
Произвольный обмен (КД 2.0)Внешний XML-файлВручную: загрузить новый файл

Автоматическое обновление: вместе с релизом конфигурации

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

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

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

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

Ручная загрузка нового файла правил

Этот способ нужен для произвольных обменов, которые делали под вас в КД 2.0. Правила приходят отдельным XML-файлом, и его надо загрузить в базу.

Инструмент — внешняя обработка «Универсальный обмен данными в формате XML» (файл вида ВыгрузкаЗагрузкаДанныхXML.epf). Она идёт в комплекте с «Конвертацией данных» и лежит на диске ИТС.

Порядок загрузки:

  1. Откройте обработку: Файл → Открыть и выберите .epf. Для этого у пользователя должны быть права на запуск внешних обработок.
  2. Перейдите на вкладку «Выгрузка данных» (если готовите выгрузку из источника) или «Загрузка данных» (если грузите готовый файл в приёмник).
  3. В поле имени файла правил обмена укажите новый XML с правилами.
  4. Обработка прочитает файл и покажет состав: какие объекты будут выгружаться, какой период, какой отбор.
  5. Задайте отбор по периоду и организации, чтобы не прогонять всю базу разом.
  6. Запустите выгрузку — получите файл данных. Его же потом загружают в приёмнике на вкладке «Загрузка данных».

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

Сначала прогоните новые правила на копии базы с небольшим отбором (один-два документа). Убедитесь, что объекты встают в приёмник корректно, и только потом запускайте на полном объёме.

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

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

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

Правка правил в «Конвертации данных 2.0»

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

Общая последовательность:

  1. Обновите структуры метаданных обеих баз. В источнике и в приёмнике запустите обработку выгрузки структуры метаданных из комплекта КД — она сформирует XML с описанием всех объектов конфигурации (документы, справочники, реквизиты).
  2. Загрузите эти структуры в КД как конфигурацию-источник и конфигурацию-приёмник. Без актуальной структуры КД не увидит новые реквизиты, появившиеся после обновления.
  3. Откройте нужную конвертацию и внесите правки: добавьте правило для нового объекта, поправьте соответствие полей, допишите обработчик.
  4. Выгрузите правила обмена в XML. Этот файл и загружают потом в рабочую базу через универсальную обработку (раздел выше).

Ключевой момент, который часто пропускают, — шаг 1 и 2. Без свежей выгрузки структуры метаданных вы будете править правила вслепую: КД покажет старый состав реквизитов, а в бою правило упадёт на поле, которого «нет».

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

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

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

Обработчики событий: как их отлаживать

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

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

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

  1. В обработке отметьте отладку выгрузки или загрузки — смотря где сбой.
  2. Обработка выгрузит весь код обработчиков во внешнюю обработку -«отладчик».
  3. Откройте этот файл в Конфигураторе и запустите обмен повторно.
  4. Платформа остановится на точке останова внутри обработчика — дальше проходите код как обычно, с просмотром значений переменных.

Если менять правила нельзя, а объект упрямо не выгружается, временный обработчик с Сообщить(...) в нужной точке быстрее покажет, что происходит, чем долгий разбор XML вручную.

После того как причина найдена, код правят в КД, а не в выгруженном файле отладки: файл отладки — временный, при следующей выгрузке правил он перезапишется.

Разбор ошибок при загрузке правил

Большинство сбоев при обновлении правил сводится к нескольким типовым. Вот как их отличить.

Диагностика: выберите симптом

Если загрузка останавливается без внятного текста, включите в обработке вывод в окно сообщений и протокол обмена — в нём видно, на каком объекте произошёл сбой.

Что ломается после обновления конфигурации

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

Признаки, что правила отстали от конфигурации:

  • 🔸 обмен падает с «не найдено свойство» сразу после обновления релиза;
  • 🔸 часть данных перестала переноситься, хотя раньше шла;
  • 🔸 в протоколе обмена появились предупреждения по конкретным реквизитам.

Чтобы обновление конфигурации не ломало обмен, держите правила в актуальном состоянии по простому регламенту.

Обновление правил после смены релиза
Выполнено: 0 / 7

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

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

Частые вопросы

Чем правила обмена отличаются от настройки синхронизации?
Правила — это XML с логикой конвертации объектов. Настройка синхронизации — это узел обмена в базе: адрес второй базы, расписание, отбор. Правила определяют «что во что», настройка — «куда и когда».
Нужно ли обновлять правила вручную при типовой синхронизации?
Нет. Для типовых обменов правила входят в конфигурацию и обновляются вместе с релизом. Руками правила грузят только для произвольных обменов, сделанных в «Конвертации данных».
КД 2.0 или 3.0 — в чём разница для обновления правил?
КД 2.0 работает с правилами в старом формате (обмен через универсальную обработку). КД 3.0 — с форматом EnterpriseData, на котором построены современные типовые синхронизации. Файл из одной редакции не загрузится инструментом другой.
Можно ли обновить правила без «Конвертации данных»?
Загрузить готовый файл правил — да, через универсальную обработку. А вот изменить логику (добавить объект, поправить соответствие полей) без КД нельзя: именно в ней правила и редактируются.
Почему после загрузки правил задвоились справочники?
В правиле конвертации справочник ищется не по уникальному полю. Задайте поиск по коду или ИНН вместо наименования и загрузите данные заново из резервной копии.