В практике разработчиков 1С часто возникает задача оперативного изменения правил обмена данными, созданных в конфигурации «1С:Конвертация данных 2.1» (КД 2.1). Иногда ради экономии времени программисты принимают решение не открывать специализированную базу КД, а отредактировать XML-файл правил напрямую в текстовом редакторе (например, в Notepad++ или VS Code). При этом возникает закономерный вопрос: как ведет себя платформа при ручном добавлении новых тегов, за что отвечает тег Код внутри свойств и обязательно ли соблюдать строгую последовательность нумерации?
В этой статье мы подробно разберем структуру XML-правил обмена, выясним роль идентификаторов свойств, разоблачим популярный миф о «волшебной галочке» автонумерации и определим наиболее безопасные и эффективные сценарии работы.
Для начала проанализируем, как описывается типичное свойство (реквизит) в XML-файле правил обмена. Каждое Правило Конвертации Свойства (ПКС) описывается отдельным XML-узлом Свойство, который находится внутри родительского узла Свойства конкретного Правила Конвертации Объекта (ПКО). Рассмотрим пример структуры такого узла:
<Свойство>
<Код>44</Код>
<Наименование>СуммаНДС --> СуммаНДС</Наименование>
<Порядок>550</Порядок>
<Источник Имя="СуммаНДС" Вид="Реквизит" Тип="Число"/>
<Приемник Имя="СуммаНДС" Вид="Реквизит" Тип="Число"/>
</Свойство>
Давайте подробно разберем назначение ключевых тегов внутри этого блока:
Код — уникальный идентификатор конкретного ПКС в рамках текущего правила конвертации объекта (ПКО). Он служит для однозначного сопоставления свойств и вывода информационных сообщений при отладке.Наименование — текстовое представление правила конвертации, обычно отражающее направление обмена реквизитов (например, Сумма --> Сумма).Порядок — числовое значение, определяющее последовательность, в которой обработка «Универсальный обмен данными в формате XML» будет выгружать и загружать данные свойства.Источник и Приемник — метаданные, описывающие тип, имя и вид реквизита в базах источника и приемника.Представим ситуацию: нам необходимо вручную добавить новое свойство в существующее ПКО. Рядом находятся свойства с кодами 43 и 44. Мы хотим вставить новое свойство. Обязательно ли сдвигать всю последующую нумерацию свойств или можно задать произвольный код, например, 446?
Ответ: перенумеровывать всю структуру правил не нужно. Вы можете совершенно спокойно использовать произвольный код (например, 446), если он удовлетворяет двум простым условиям:
Для успешного выполнения обмена обработке выгрузки не требуется сквозная последовательная нумерация кодов. Она считывает XML-файл последовательно. Тег Код используется в первую очередь для логирования. Если во время выполнения обработчиков событий (например, «Перед выгрузкой» или «При загрузке») произойдет ошибка, система выведет в журнал регистрации именно этот код, чтобы разработчик мог быстро найти проблемное место (например: Ошибка в ПКС № 446 (Реквизит --> Реквизит)).
Важное примечание: за фактический порядок выгрузки свойств отвечает тег Порядок, а не тег Код. Если вам критически важно, чтобы новое свойство выгружалось строго после или перед определенными реквизитами, настройте значение в теге Порядок.
Некоторые разработчики ошибочно полагают, что в настройках ПКО существует флаг, который автоматически генерирует и исправляет коды ПКС в самом XML-файле правил обмена при ручной правке. Это опасное заблуждение.
Упомянутый флаг «Автоматически генерировать код или номер, если он не задан» в свойствах ПКО выполняет совершенно иную задачу:
Несмотря на то, что технически ручная правка XML-файла вполне допустима и работоспособна, она таит в себе скрытые риски. Рассмотрим два альтернативных сценария работы.
Если вам нужно срочно добавить простое свойство без сложных обработчиков и связей, выполним следующие шаги:
<Свойства>.1044).Порядок так, чтобы он вписывался в нужную нам последовательность выполнения.Пример корректно добавленного вручную свойства:
<Свойство>
<Код>1044</Код>
<Наименование>СуммаНДС --> СуммаНДС</Наименование>
<Порядок>550</Порядок>
<Источник Имя="СуммаНДС" Вид="Реквизит" Тип="Число"/>
<Приемник Имя="СуммаНДС" Вид="Реквизит" Тип="Число"/>
</Свойство>
Ручные изменения легко затереть при последующих автоматических выгрузках правил из КД. Кроме того, ручная правка может привести к ошибкам формата, из-за которых правила откажутся загружаться обратно в информационную базу Конвертации. Чтобы избежать этого, выполним процесс по шагам в штатном режиме:
Этот способ гарантирует 100% валидность структуры XML, корректность типов данных и сохранение целостности ваших доработок для последующих обновлений.