Как при записи XML-файла из 1С получить форматированный вид с переносами строк?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Разбираемся с параметрами записи

Основным инструментом для управления выводом является объект ПараметрыЗаписиXML. Именно его конструктор определяет, будет ли 1С автоматически расставлять отступы и переносы строк (так называемый «pretty-print»).

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

ПараметрыЗаписиXML(Кодировка, ПорядокСимволов, ИспользоватьОтступы, СимволыПереносаСтрок)

Ключевым для нашей задачи является третий параметр — ИспользоватьОтступы. Если вы установите его в значение Истина, платформа 1С добавит структурные отступы и переносы строк, делая файл читаемым для человека.

Реализация форматированного сохранения

Посмотрим на пример кода, который позволит нам добиться желаемого результата. В данном сценарии мы создаем ДокументDOM, инициализируем ПараметрыЗаписиXML с включенными отступами и записываем содержимое в файл:


// Создаем параметры записи с включенными отступами
// Третий параметр (Истина) отвечает за форматирование
ПараметрыЗаписи = Новый ПараметрыЗаписиXML("UTF-8", , Истина, Истина);

ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл(ИмяФайла, ПараметрыЗаписи);

ЗаписьDOM = Новый ЗаписьDOM;
ЗаписьDOM.Записать(ДокументDOM, ЗаписьXML);

ЗаписьXML.Закрыть();

Если вы ранее использовали значение Ложь в третьем параметре, просто замените его на Истина, и структура XML-файла автоматически примет «красивый» вид с древовидной структурой элементов.

Альтернативный вариант: работа со строкой

Иногда возникает необходимость отформатировать данные не в файле напрямую, а в строковой переменной, например, для вывода на экран или передачи в текстовое поле формы. В этом случае удобно использовать УстановитьСтроку:


// Форматирование внутри строковой переменной
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.УстановитьСтроку(Новый ПараметрыЗаписиXML(, , Истина, Истина));

ЗаписьDOM = Новый ЗаписьDOM;
ЗаписьDOM.Записать(ДокументDOM, ЗаписьXML);

// Получаем отформатированную строку
ОтформатированныйТекстXML = ЗаписьXML.Закрыть();

Почему это важно

Рассмотрим, зачем нам вообще нужно такое форматирование:

  1. Читаемость для отладки: Когда разработчику нужно быстро проанализировать структуру XML-сообщения, визуальное разделение тегов на строки значительно сокращает время поиска ошибок.
  2. Системы контроля версий: Если вы используете Git для хранения конфигураций или файлов интеграции, «длинная строка» приведет к тому, что любое изменение в файле будет отображаться как изменение всего файла целиком. Форматированный XML позволяет корректно отслеживать историю изменений (diff).

Важные рекомендации

Разберем еще несколько нюансов, которые помогут вам избежать проблем при работе с XML:

Таким образом, для получения чистого и структурированного XML-документа достаточно грамотно настроить ПараметрыЗаписиXML, указав платформе необходимость использования отступов при записи объекта.

← На главную