Загрузка и правка правил обмена данными в 1С
Содержание
Правила обмена данными обновляют одним из двух способов: вместе с обновлением конфигурации — если обмен типовой, или вручную — загрузкой нового файла правил через обработку «Универсальный обмен данными в формате XML». Какой способ ваш, зависит от того, откуда правила взялись.
Если обмен настроен через типовую синхронизацию (например, «Бухгалтерия» ↔ «Управление торговлей»), правила зашиты в конфигурацию и приезжают с очередным релизом сами. Если же правила кто-то писал под вас в «Конвертации данных 2.0», обновлять их придётся руками: открыть в КД, поправить, выгрузить новый XML и загрузить в базу. Ниже — оба маршрута, с точными действиями и разбором ошибок, которые всплывают при загрузке.
Где лежат правила и из чего они состоят
Правила обмена — это XML-файл. Внутри него описано, как объект одной базы превращается в объект другой: какой документ переходит в какой, какие реквизиты куда пишутся, какие справочники ищутся по коду, а какие по наименованию.
Файл правил состоит из нескольких частей:
- 🔄 правила конвертации объектов — соответствие «что во что превращается»;
- 📤 правила выгрузки данных — какие объекты и по какому отбору уходят из источника;
- 🧹 правила очистки — что удалять в приёмнике при повторной загрузке;
- ⚙️ обработчики событий (алгоритмы) — встроенный код на языке 1С, который срабатывает в моменты выгрузки и загрузки: пересчитать сумму, подставить значение по умолчанию, пропустить объект по условию.
Обработчики — самая хрупкая часть. Именно из-за них правила «ломаются» после обновления конфигурации: код ссылается на реквизит, которого в новом релизе уже нет.
Хранятся правила в двух местах, в зависимости от типа обмена:
| Тип обмена | Где лежат правила | Как обновляются |
|---|---|---|
| Типовая синхронизация, РИБ | В макете плана обмена, внутри конфигурации | Автоматически, при обновлении конфигурации |
| Произвольный обмен (КД 2.0) | Внешний XML-файл | Вручную: загрузить новый файл |
Автоматическое обновление: вместе с релизом конфигурации
Для типовых обменов отдельных действий не нужно. Правила синхронизации входят в конфигурацию, и при обновлении на свежий релиз новая версия правил встаёт сама. Проверять что-то дополнительно не требуется.
Единственное, что стоит держать в голове: обе базы в паре должны быть на совместимых релизах. Если вы обновили «Бухгалтерию», а «Управление торговлей» осталась на старой версии, синхронизация может начать выдавать предупреждения о несовместимости формата. Лечится это обновлением второй базы до совместимого релиза.
Посмотреть, какой формат синхронизации сейчас используется, можно в настройке обмена: Администрирование → Синхронизация данных → Настройки синхронизации данных, далее открыть нужную настройку и перейти к параметрам подключения. Там же видно дату последнего сеанса и ошибки, если они были.
Современные типовые обмены работают через формат EnterpriseData: правила для него лежат в конфигурации и правятся в «Конвертации данных 3.0». Вручную такой файл обычно не трогают — всё решается обновлением релиза.
Ручная загрузка нового файла правил
Этот способ нужен для произвольных обменов, которые делали под вас в КД 2.0. Правила приходят отдельным XML-файлом, и его надо загрузить в базу.
Инструмент — внешняя обработка «Универсальный обмен данными в формате XML» (файл вида ВыгрузкаЗагрузкаДанныхXML.epf). Она идёт в комплекте с «Конвертацией данных» и лежит на диске ИТС.
Порядок загрузки:
- Откройте обработку:
Файл → Открытьи выберите.epf. Для этого у пользователя должны быть права на запуск внешних обработок. - Перейдите на вкладку «Выгрузка данных» (если готовите выгрузку из источника) или «Загрузка данных» (если грузите готовый файл в приёмник).
- В поле имени файла правил обмена укажите новый XML с правилами.
- Обработка прочитает файл и покажет состав: какие объекты будут выгружаться, какой период, какой отбор.
- Задайте отбор по периоду и организации, чтобы не прогонять всю базу разом.
- Запустите выгрузку — получите файл данных. Его же потом загружают в приёмнике на вкладке «Загрузка данных».
Перед первой загрузкой новых правил в рабочую базу сделайте резервную копию. Неверное правило может задвоить документы или перезаписать справочники — откат к копии будет быстрее, чем ручная чистка.
Сначала прогоните новые правила на копии базы с небольшим отбором (один-два документа). Убедитесь, что объекты встают в приёмник корректно, и только потом запускайте на полном объёме.
Важно не путать два файла. Файл правил (с логикой конвертации) загружают один раз — в нём сами данные не лежат. Файл данных обработка формирует на выгрузке из источника и уже его переносят в приёмник. То есть полный цикл произвольного обмена — это три шага: загрузить правила, выгрузить данные в источнике, загрузить данные в приёмнике. Обновление правил затрагивает только первый шаг, но после него выгрузку-загрузку данных прогоняют заново, иначе изменения в логике ни на что не повлияют.
Если обмен двусторонний, правила обновляют и в источнике, и в приёмнике — файл правил выгрузки и файл правил загрузки обычно разные, и устаревшая половина так же ломает обмен, как и обе сразу.
Обработчики событий, встроенные в файл правил, подключаются автоматически — отдельно «устанавливать» их не нужно. Исключение — режим отладки: в нём обработка выгрузит код обработчиков в отдельный файл, чтобы его можно было пройти в отладчике. Для обычной работы отладка не включается.
Правка правил в «Конвертации данных 2.0»
Если нужно не просто загрузить готовый файл, а изменить саму логику обмена — добавить новый документ, поправить соответствие реквизитов, — работают в конфигурации «Конвертация данных , редакция 2.0». Это отдельная база, в которой и живут правила.
Общая последовательность:
- Обновите структуры метаданных обеих баз. В источнике и в приёмнике запустите обработку выгрузки структуры метаданных из комплекта КД — она сформирует XML с описанием всех объектов конфигурации (документы, справочники, реквизиты).
- Загрузите эти структуры в КД как конфигурацию-источник и конфигурацию-приёмник. Без актуальной структуры КД не увидит новые реквизиты, появившиеся после обновления.
- Откройте нужную конвертацию и внесите правки: добавьте правило для нового объекта, поправьте соответствие полей, допишите обработчик.
- Выгрузите правила обмена в XML. Этот файл и загружают потом в рабочую базу через универсальную обработку (раздел выше).
Ключевой момент, который часто пропускают, — шаг 1 и 2. Без свежей выгрузки структуры метаданных вы будете править правила вслепую: КД покажет старый состав реквизитов, а в бою правило упадёт на поле, которого «нет».
Обработчики пишут прямо в КД, в свойствах правил конвертации, выгрузки и загрузки. Там же, в глобальных параметрах конвертации, задают алгоритмы, которые вызываются из нескольких правил. Весь этот код уезжает в выгружаемый XML и исполняется при обмене.
Правила конвертации объектов — основа всего файла. Для каждой пары «объект источника → объект приёмника» задают соответствие реквизитов и, главное, поля поиска: по какому значению приёмник находит уже существующий объект. Для справочников это обычно код, ИНН или уникальный идентификатор; для документов — номер и дата. Ошибка именно здесь приводит к задвоению данных чаще всего.
Правила выгрузки отвечают за отбор: какие объекты и по какому условию уходят из источника. Через них же навешивают фильтры по периоду и организации, чтобы не гонять лишнее.
Обработчики событий: как их отлаживать
Обработчики — это процедуры на встроенном языке, зашитые в правила. Они срабатывают в конкретные моменты: перед выгрузкой объекта, после загрузки, при конвертации свойства. Типичные задачи — пересчитать сумму, подставить значение по умолчанию, пропустить объект по условию, дописать реквизит, которого нет в источнике.
Отдельно «устанавливать» или «подключать» обработчики не нужно: они встроены в XML-файл правил и исполняются автоматически при обмене. Это и есть тот самый механизм, из-за которого обмен работает «сам», без дописывания кода в конфигурацию.
Проблема в том, что ошибку внутри обработчика в обычном режиме не видно — обмен просто падает с сообщением «не определена переменная» или «поле объекта не обнаружено». Чтобы пройти код по шагам, в универсальной обработке включают режим отладки обработчиков:
- В обработке отметьте отладку выгрузки или загрузки — смотря где сбой.
- Обработка выгрузит весь код обработчиков во внешнюю обработку -«отладчик».
- Откройте этот файл в Конфигураторе и запустите обмен повторно.
- Платформа остановится на точке останова внутри обработчика — дальше проходите код как обычно, с просмотром значений переменных.
Если менять правила нельзя, а объект упрямо не выгружается, временный обработчик с Сообщить(...) в нужной точке быстрее покажет, что происходит, чем долгий разбор XML вручную.
После того как причина найдена, код правят в КД, а не в выгруженном файле отладки: файл отладки — временный, при следующей выгрузке правил он перезапишется.
Разбор ошибок при загрузке правил
Большинство сбоев при обновлении правил сводится к нескольким типовым. Вот как их отличить.
Если загрузка останавливается без внятного текста, включите в обработке вывод в окно сообщений и протокол обмена — в нём видно, на каком объекте произошёл сбой.
Что ломается после обновления конфигурации
Самая частая причина «вчера работало, сегодня нет» — обновление релиза одной из баз. Платформа добавляет и переименовывает реквизиты, а старые правила продолжают ссылаться на прежнюю структуру.
Признаки, что правила отстали от конфигурации:
- 🔸 обмен падает с «не найдено свойство» сразу после обновления релиза;
- 🔸 часть данных перестала переноситься, хотя раньше шла;
- 🔸 в протоколе обмена появились предупреждения по конкретным реквизитам.
Чтобы обновление конфигурации не ломало обмен, держите правила в актуальном состоянии по простому регламенту.
Отдельно про произвольные обмены: храните исходную конвертацию в КД под рукой и фиксируйте, под какой релиз баз она сделана. Тогда после обновления не придётся восстанавливать логику с нуля — достаточно перевыгрузить структуру и пройтись по изменившимся объектам.
Для типовых синхронизаций профилактика короче: обновляйте парные базы согласованно и не затягивайте с релизами. Чем больше разрыв в версиях, тем выше шанс поймать несовместимость формата.