IT-КУБиК-Сервис • Форум 1С
Абстрактный тёмно-синий фон с мягкими геометрическими линиями и оранжевыми акцентами, создающий технологичную атмосферу

Агрегатор публикаций с Инфостарта по 1С:Предприятие — обработки, расширения, конфигурации, интеграции и администрирование. Сообщество специалистов 1С.

Работа с XML в 1С: чтение, запись и преобразование через XSLT

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

Платформа 1С:Предприятие предоставляет несколько встроенных объектов для работы с XML. Базовые приёмы чтения и записи реализуются через ЧтениеXML и ЗаписьXML, а для более сложных сценариев применяются ФабрикаXDTO и XSLT-шаблоны. Каждый из них имеет свою область применения, и грамотное сочетание инструментов позволяет писать компактный и читаемый код.

Особое место занимает технология XSLT — язык преобразований, входящий в семейство XSL. С его помощью можно описать правила трансформации одного XML в другой, не прибегая к императивному коду. Это особенно ценно при больших и сложных схемах, а также при обмене с внешними системами, формат которых жёстко зафиксирован.

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

Чтение XML-документов средствами платформы

Самый простой способ прочитать XML — воспользоваться ЧтениеXML. Объект позволяет последовательно обойти узлы документа, получить значения атрибутов и текстовых элементов, прочитать вложенные структуры. Такой подход подходит для небольших файлов с предсказуемой структурой, например прайс-листов поставщиков или конфигурационных файлов.

Для сложных схем удобнее применять ФабрикаXDTO. Она работает с заранее описанной моделью, что снимает с разработчика часть рутинных операций по валидации и разбору типов. Достаточно один раз загрузить XSD-схему, и платформа сама выполнит проверку соответствия и предоставит удобный объектный интерфейс. Минусом является необходимость поддерживать актуальность схемы при изменении формата со стороны контрагента.

При чтении важно контролировать кодировку файла и корректно обрабатывать пространства имён. Частая ошибка — попытка прочитать файл в Windows-1251 как UTF-8, что приводит к искажению кириллических символов и невозможности дальнейшей обработки. Использование метода УстановитьКодировку и предварительный анализ BOM помогают избежать подобных ситуаций.

Формирование и сериализация XML

Запись XML в 1С выполняется через объект ЗаписьXML. Разработчик управляет процессом построения дерева вручную, что даёт полную свободу в оформлении результата. Это удобно при подготовке ответов для внешних API, формировании SOAP-конвертов и выгрузке данных в форматах, не описанных XSD-схемой.

Альтернативный путь — сериализация средствами XDTO. Если в конфигурации определены соответствующие пакеты XDTO, платформа способна сформировать корректный XML-документ автоматически на основании значения любого типа. Так формируются сообщения ЕГАИС, обмен с системами маркировки и другие стандартизированные потоки.

При формировании больших файлов важно помнить о потоковой записи: вместо построения всего дерева в памяти и однократного сохранения рекомендуется записывать данные порциями. Это критично при выгрузке документов за несколько лет, когда объём данных измеряется гигабайтами. Платформа поддерживает такие сценарии через методы ЗаписатьНачалоЭлемента, ЗаписатьТекст и ЗаписатьКонецЭлемента, вызываемые в цикле.

XSLT-преобразования как универсальный инструмент

Когда требуется преобразовать XML из одного формата в другой, наиболее элегантным способом становится применение XSLT. Платформа 1С поддерживает выполнение XSLT-шаблонов через объект XSLTПреобразование, доступный начиная с версий 8.3.14. Шаблон описывается отдельным файлом или строкой и применяется к исходному документу.

Главное преимущество XSLT — декларативность. Один и тот же шаблон может многократно использоваться в разных конфигурациях, передаваться партнёрам, версионироваться отдельно от кода 1С. При изменении формата обмена достаточно скорректировать только XSL-файл, не перевыпуская конфигурацию.

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

Диагностика и устранение ошибок при работе с XML

На практике работа с XML редко обходится без ошибок. Среди типичных проблем — несоответствие схеме, наличие недопустимых символов, неверная кодировка, ошибки в пространствах имён. Платформа 1С в большинстве случаев сообщает о проблеме достаточно информативно, указывая позицию в документе.

При использовании XSLT ошибки чаще всего связаны с несоответствием XPath-выражений структуре исходного документа. Полезно иметь возможность выполнять отладку шаблона на тестовых данных вне платформы — например, в браузере или специализированных редакторах вроде Oxygen или Altova. Это ускоряет поиск ошибок и снижает время на итерации.

При работе с большими документами следует учитывать ограничения по памяти. Чтение всего файла в объект XDTO может привести к существенному потреблению оперативной памяти и замедлению обработки. В таких случаях предпочтительнее использовать потоковое чтение или разбивать исходный документ на фрагменты ещё до загрузки в платформу.

Практические сценарии и выбор подхода

Выбор конкретного инструмента зависит от задачи. Ниже приведено краткое сопоставление подходов, помогающее определить оптимальный вариант.

Сценарий Рекомендуемый инструмент Преимущества Ограничения
Произвольный документ без схемы ЧтениеXML / ЗаписьXML Простота, минимум подготовки Высокая трудоёмкость при сложной структуре
Файл по известной XSD-схеме ФабрикаXDTO Автоматический контроль типов Требуется актуальная схема
Преобразование формата на лету XSLT-шаблоны Декларативность, повторное применение Сложность отладки без специализированных средств
Обработка больших объёмов Потоковые ЧтениеXML и ЗаписьXML Низкое потребление памяти Больше ручного кода

Грамотное сочетание перечисленных инструментов позволяет решать задачи любой сложности — от простых выгрузок справочников до интеграции с федеральными системами электронного документооборота. Присоединяйтесь к обсуждениям в сообществе, делитесь своим опытом и подписывайтесь на новые материалы, чтобы первыми узнавать об эффективных подходах и обновлениях платформы.