Работа с правилами обмена в формате XML — это стандартная задача для разработчика 1С, когда необходимо настроить перенос данных между различными конфигурациями. Часто возникает вопрос: обязательно ли использовать специализированную конфигурацию «Конвертация данных 2.1» (КД 2.1) для внесения мелких правок, таких как добавление одного реквизита, или можно обойтись обычным текстовым редактором? В этой статье мы подробно разберем оба подхода, проанализируем структуру XML-правил и научимся настраивать сопоставление объектов по наименованию.
Несмотря на то что правила обмена — это текстовый файл, использование специализированного инструмента является наиболее надежным способом. Рассмотрим классический алгоритм внесения изменений:
ВыгрузкаОписанияСтруктурыМетаданных.epf.Склад или Характеристика. Это исключает возникновение неопределенностей, когда в правилах реквизит указан, а в базе его не существует или у него другой тип.ПКО (Правила конвертации объекта) мы просто добавляем новую строку, указывая источник и приемник. Программа автоматически сформирует правильный XML-код.xml.Этот метод гарантирует, что структура файла не будет нарушена, а кодировка останется корректной.
Если задача стоит максимально остро и нужно добавить простой реквизит «здесь и сейчас», можно прибегнуть к редактированию файла блокнотом (лучше использовать Notepad++ или VS Code). Проанализируем структуру типового узла свойства в файле правил. Каждый реквизит описывается тегом Свойство внутри блока ИнформацияОПКС.
Разберем пример добавления реквизита Склад. Вам нужно найти соответствующее ПКО (например, для документа «Реализация») и вставить по аналогии следующий блок:
<Свойство>
<Код>1</Код>
<Наименование>Склад --> Склад</Наименование>
<Порядок>50</Порядок>
<Источник Имя="Склад" Тип="СправочникСсылка.Склады"/>
<Приемник Имя="Склад" Тип="СправочникСсылка.Склады"/>
</Свойство>
Важный нюанс: при ручном добавлении убедитесь, что атрибуты Имя соответствуют именам объектов в метаданных (как они называются в Конфигураторе), а не их синонимам. Также следите за закрывающими тегами — любая лишняя скобка сделает файл нечитаемым для обработки УниверсальныйОбменДаннымиXML.
Часто возникает ситуация, когда объекты в разных базах имеют разные внутренние идентификаторы (GUID), и их нужно сопоставить по текстовому полю. Например, чтобы ХарактеристикаНоменклатуры искалась исключительно по названию.
Выясним, как это реализовано в XML-структуре правил. За поиск отвечает атрибут Поиск в правилах конвертации свойств (ПКС). Рассмотрим, как должен выглядеть узел для поиска по наименованию:
ПКО для нужного справочника.ПКО найдите свойство Наименование.Поиск="true".Ссылка или Код) атрибут Поиск должен быть либо false, либо отсутствовать.Пример XML-кода для поиска по наименованию:
<Свойство Поиск="true">
<Наименование>Наименование --> Наименование</Наименование>
<Источник Имя="Наименование" Тип="Строка"/>
<Приемник Имя="Наименование" Тип="Строка"/>
</Свойство>
Помните: поиск по наименованию в 1С чувствителен к регистру и лишним пробелам. Если в базе-источнике склад называется "Основной ", а в базе-приемнике "Основной", объект не будет найден и может создаться дубль.
Даже без использования интерфейса «Конвертации данных» вы можете внедрить программную логику прямо в XML. Код на языке 1С размещается в специальных секциях внутри правил. Например, если нам нужно программно установить склад в зависимости от условия, мы можем использовать обработчик ПередВыгрузкой.
Проанализируем пример использования секции CDATA для вставки кода:
<ПередВыгрузкой>
<![CDATA[
Если Объект.СуммаДокумента > 100000 Тогда
Значение = "ОптовыйСклад";
Иначе
Значение = "РозничныйСклад";
КонецЕсли;
]]>
</ПередВыгрузкой>
Этот код будет выполнен системой непосредственно в момент выгрузки данных. Использование <![CDATA[ ... ]]> необходимо для того, чтобы символы «больше» или «меньше» в коде 1С не воспринимались как начало или конец XML-тегов.
Разберем основные опасности ручного редактирования, о которых стоит знать каждому программисту:
UTF-8. Обычный «Блокнот» Windows может добавить в начало файла невидимый символ BOM, из-за которого загрузка правил в 1С выдаст ошибку. Рекомендуется использовать профессиональные редакторы кода.Если после ваших правок обмен работает некорректно, воспользуйтесь режимом отладки. В обработке Универсальный обмен данными в формате XML на вкладке «Дополнительные настройки» установите флаг «Режим отладки обработчиков выгрузки». Это позволит вам получить модуль отладки, загрузить его в конфигуратор и пошагово пройтись по коду, чтобы понять, почему тот или иной реквизит (например, наш новый Склад) не переносится или заполняется неправильно.
Таким образом, хотя ручное редактирование и экономит время на установку тяжелых конфигураций, оно требует глубокого понимания структуры XML и внимательности к деталям метаданных 1С.