Как правильно читать значения XML-элементов в 1С, когда они находятся между тегами?

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

При работе с файлами формата XML в среде 1С:Предприятие часто возникают ситуации, когда данные хранятся не в атрибутах открывающего тега, а непосредственно в текстовом узле между открывающим и закрывающим тегом, например: <date_received_request>2022-07-06</date_received_request>. Разберем, как эффективно извлекать такие данные, не допуская типичных ошибок.

Понимание структуры XML и объекта ЧтениеXML

Когда вы используете объект ЧтениеXML, вы последовательно перемещаетесь по узлам документа. Одной из самых частых ошибок является попытка вызвать метод ЗначениеАтрибута() для элемента, который не имеет атрибутов. Важно помнить: метод ЗначениеАтрибута() предназначен строго для работы с данными, записанными внутри тега (например, <Блюдо Название="Щи"/>).

Для того чтобы считать значение, расположенное между тегами, необходимо выполнить следующие действия:

  1. Позиционироваться на нужном элементе с помощью метода Прочитать().
  2. Если тип узла соответствует началу элемента, вызвать Прочитать() еще раз для перехода к содержимому.
  3. Обратиться к свойству Значение объекта ЧтениеXML, которое в этот момент будет содержать текст, заключенный между тегами.

Пример реализации чтения текста

Давайте рассмотрим, как это выглядит в программном коде. Чтобы корректно считать данные, мы должны убедиться, что находимся на узле типа Текст.


Чтение = Новый ЧтениеXML;
Чтение.ОткрытьФайл("путь_к_файлу.xml");

Пока Чтение.Прочитать() Цикл
    Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента И Чтение.Имя = "date_received_request" Тогда
        // Переходим к содержимому тега
        Чтение.Прочитать();
        Если Чтение.ТипУзла = ТипУзлаXML.Текст Тогда
            ЗначениеТекста = Чтение.Значение;
            // Теперь в переменной ЗначениеТекста хранится "2022-07-06"
        КонецЕсли;
    КонецЕсли;
КонецЦикла;
Чтение.Закрыть();

Использование Фабрики XDTO для автоматизации

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

Преимущество ФабрикиXDTO заключается в том, что она берет на себя всю работу по парсингу структуры. Вам достаточно иметь описание схемы (XSD) или позволить платформе автоматически определить структуру объекта. При использовании этого метода вам не нужно беспокоиться о типах узлов или последовательности вызова метода Прочитать().

Важные рекомендации при работе с XML

При написании собственного парсера всегда учитывайте следующие нюансы:

Подводя итог, можно сказать, что чтение данных между тегами — это стандартная задача. Для простых задач используйте ЧтениеXML, аккуратно работая с методами чтения и свойствами текущего узла. Для корпоративного обмена данными и сложных структур всегда отдавайте предпочтение ФабрикеXDTO, так как это значительно сокращает объем написанного кода и минимизирует вероятность ошибок при изменении формата данных.

← На главную