Как преобразовать структуру данных в XML в 1С?

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

При разработке интеграционных решений на платформе 1С часто возникает задача передачи данных во внешние системы в формате XML. Если исходные данные представлены в виде Структура, возникает вопрос: как эффективно и правильно превратить эту коллекцию ключей и значений в валидный XML-файл или строку? В этой статье мы разберем основные подходы к решению этой задачи.

Метод 1: Использование объекта ЗаписьXML для ручного формирования

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

Рассмотрим, как это реализовать по шагам:

  1. Создаем объект ЗаписьXML.
  2. Инициализируем его для вывода в строку или файл.
  3. Последовательно открываем корневой элемент и добавляем вложенные теги, соответствующие ключам нашей Структура.

Для автоматизации записи большого количества полей используйте цикл Для Каждого, который перебирает структуру и записывает каждый элемент как отдельный тег:


// Пример формирования XML через цикл
Запись = Новый ЗаписьXML;
Запись.УстановитьСтроку();
Запись.ЗаписатьОбъявлениеXML();
Запись.ЗаписатьНачалоЭлемента("response");

Для Каждого ТекЭлемент Из ВашаСтруктура Цикл
    Запись.ЗаписатьНачалоЭлемента(ТекЭлемент.Ключ);
    Запись.ЗаписатьТекст(Строка(ТекЭлемент.Значение));
    Запись.ЗаписатьКонецЭлемента();
КонецЦикла;

Запись.ЗаписатьКонецЭлемента();
Результат = Запись.Закрыть();

Этот подход гарантирует, что даже при наличии сложных имен ключей мы получим валидный XML, а все специальные символы (например, & или <) будут автоматически экранированы встроенными средствами платформы.

Метод 2: Сериализация через XDTO

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


// Использование сериализатора
Запись = Новый ЗаписьXML;
Запись.УстановитьСтроку();
СериализаторXDTO.ЗаписатьXML(Запись, ВашаСтруктура);
Результат = Запись.Закрыть();

Важное замечание: при использовании СериализаторXDTO следует помнить, что платформа может добавлять дополнительные атрибуты xsi:type или пространства имен, которые могут быть не понятны стороннему сервису. Используйте этот метод только в том случае, если принимающая система поддерживает стандартную сериализацию 1С или если вы заранее подготовили XDTO-пакет.

На что обратить внимание при разработке

Работая с XML, важно учитывать несколько технических нюансов:

Выбор метода зависит от ваших задач. Если XML-структура должна быть максимально простой и «чистой», используйте первый метод с циклом. Если же вы строите сложную систему обмена данными с использованием схем, XDTO станет вашим лучшим помощником. Для освоения базовых механизмов технологии подойдёт руководство по основам работы с XDTO.

← На главную