К статье
Практический материал

Разработка и Конфигурация · 12 мин

XML в 1С: что это такое и как с ним работать

Что такое XML в 1С, где применяется формат: обмен данными, выгрузка отчетности, ЭДО, механизмы XDTO и сериализация. Примеры чтения и записи XML в 1С.

XML (eXtensible Markup Language, расширяемый язык разметки) — это текстовый формат для структурированного хранения и передачи данных. В экосистеме 1С XML встречается повсеместно: конфигурация целиком может быть выгружена в XML-файлы, обмены между базами строятся на XML-пакетах, электронные документы для ЭДО и отчетность для ФНС передаются именно в этом формате.

Для пользователя XML чаще всего выглядит как файл выгрузки: например, декларация для налоговой, каталог товаров для сайта или файл обмена между «1С:Бухгалтерией» и «1С:Зарплата и управление персоналом». Для разработчика XML — это рабочий инструмент: в платформу встроены объекты чтения и записи XML, механизм XDTO и сериализация объектов.

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

Что такое XML и как устроен файл

XML-документ — это обычный текстовый файл, который можно открыть в любом редакторе. Данные в нем организованы в виде дерева: корневой элемент содержит дочерние элементы, те — свои вложенные элементы, и так далее. Каждый элемент ограничен открывающим и закрывающим тегом, например <Товар>...</Товар>, а дополнительные свойства хранятся в атрибутках — <Товар Код="001">.

В начале файла обычно стоит объявление <?xml version="1.0" encoding="UTF-8"?>, указывающее версию формата и кодировку. Кодировка важна практически: если файл сохранен не в той кодировке, кириллица при открытии превратится в нечитаемые символы, а при загрузке в 1С возникнет ошибка разбора.

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

Где XML используется в 1С

Формат настолько глубоко встроен в платформу, что перечислить все применения сложно. Основные направления, с которыми сталкиваются пользователи и разработчики:

  • Выгрузка и загрузка конфигурации. Конфигуратор позволяет выгрузить конфигурацию целиком или отдельные объекты в XML-файлы — это используется для хранения в системах контроля версий и для анализа структуры метаданных.
  • Обмен данными между базами. Типовые планы обмена (например, между УТ и Бухгалтерией) формируют XML-пакеты по правилам конвертации данных.
  • Отчетность в госорганы. Декларации, расчеты и сведения для ФНС, ПФР и других ведомств выгружаются в XML по утвержденным форматам.
  • Электронный документооборот (ЭДО). Счета-фактуры, УПД, акты и накладные передаются контрагентам в виде XML-документов утвержденного формата.
  • Интеграции с сайтами и сторонними системами. Выгрузка каталога товаров, цен, заказов часто строится на XML (например, формат CommerceML для обмена с интернет-магазинами).
  • Перенос данных. Обработки загрузки из табличных документов и универсальные обмены используют XML как промежуточный формат.
Расширение файла.xml

Откройте файл в блокноте: если видите теги и объявление <?xml — это XML

Первые строкиОбъявление и корневой элемент

Имена корневых элементов вроде Файл, КоммерческаяИнформация, V8Exch указывают на назначение файла

ИсточникКнопка «Выгрузить» или обмен

Файлы из обменов 1С часто содержат служебные блоки с описанием конфигурации-источника

Механизмы работы с XML в платформе 1С

Платформа предлагает несколько уровней инструментов — от низкоуровневого посимвольного чтения до полной автоматической сериализации объектов. Выбор зависит от задачи: насколько сложна структура файла и известна ли она заранее.

Потоковые объекты ЧтениеXML и ЗаписьXML

Объекты ЧтениеXML и ЗаписьXML работают последовательно: файл читается узел за узлом в цикле, и разработчик сам решает, что делать с каждым элементом. Этот подход экономит память на больших файлах и подходит для разбора незнакомых структур, но требует больше кода.

Типичный цикл чтения выглядит так: открыть файл через ЧтениеXML.ОткрытьФайл(), затем в цикле Пока ЧтениеXML.Прочитать() Цикл проверять ЧтениеXML.ТипУзла и имя узла, извлекая значения атрибутов и текст элементов.

ПостроительDOM — разбор всего дерева

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

XDTO — работа по схеме

Механизм XDTO (XML Data Transfer Objects) позволяет описать структуру данных схемой (пакетом XDTO) и затем читать и писать XML как обычные объекты 1С с типизированными свойствами. Именно на XDTO построены типовые обмены и EnterpriseData-форматы. Схема гарантирует соответствие файла формату, но требует ее предварительного создания или импорта из XSD.

Сериализация объектов

Объекты СериализаторXDTO и функции ЗначениеВСтрокуXML() позволяют превратить объект базы (например, элемент справочника) в XML-представление и обратно буквально одной строкой кода. Это удобно для переноса отдельных объектов между идентичными конфигурациями, но не подходит для обмена с внешними системами, где формат жестко регламентирован.

Какой механизм выбрать

ЧтениеXML / ЗаписьXML

Подходит для больших файлов и ручного контроля разбора; минус — много рутинного кода

ПостроительDOM

Удобен для навигации по сложному дереву умеренного размера; ограничение — весь файл в памяти

XDTO

Оптимален для обменов по известному формату с валидацией; требует наличия или создания схемы

СериализаторXDTO

Быстрое решение для переноса объектов между одинаковыми конфигурациями; не подходит для внешних форматов

Как прочитать и записать XML-файл: практический пример

Рассмотрим минимальный сценарий: требуется записать список товаров в XML и затем прочитать его обратно. Такой код запускается во внешней обработке или в общем модуле.

bsl
// Запись файла
Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл("C:\Обмен\Товары.xml", "UTF-8");
Запись.ЗаписатьОбъявлениеXML();
Запись.ЗаписатьНачалоЭлемента("Товары");
Запись.ЗаписатьНачалоЭлемента("Товар");
Запись.ЗаписатьАтрибут("Код", "001");
Запись.ЗаписатьТекст("Номенклатура А");
Запись.ЗаписатьКонецЭлемента();
Запись.ЗаписатьКонецЭлемента();
Запись.Закрыть();

Чтение выполняется зеркально: открывается файл, в цикле проверяются типы узлов ТипУзлаXML.НачалоЭлемента и ТипУзлаXML.Текст, значения атрибутов извлекаются через ЧтениеXML.ПолучитьАтрибут("Код"). Результат разбора обычно складывается в массив структур или таблицу значений для дальнейшей загрузки в базу.

Порядок создания выгрузки в XML
  1. 1
    Определите состав данных: какие объекты и реквизиты должны попасть в файл
  2. 2
    Согласуйте структуру: имена элементов, вложенность, обязательные атрибуты — по формату приемника
  3. 3
    Напишите код записи через ЗаписьXML или XDTO, соблюдая порядок открытия и закрытия элементов
  4. 4
    Откройте полученный файл в текстовом редакторе и проверьте структуру и кодировку
  5. 5
    Выполните тестовую загрузку в базу-приемник на копии и сверьте итоговые данные с источником

Проверка результата и типичные ошибки

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

Контрольные точки

Как проверить XML-файл перед загрузкой

Открытие в редакторе
Норма

Текст читаем, русские буквы отображаются корректно

Тревожный признак

Нечитаемые символы — несовпадение кодировки

Структура тегов
Норма

Каждый элемент открыт и закрыт, вложенность не пересекается

Тревожный признак

Ошибка разбора XML при загрузке в 1С

Обязательные элементы
Норма

Все поля, требуемые форматом приемника, заполнены

Тревожный признак

Файл загружается, но часть данных отсутствует

Тестовая загрузка на копии
Норма

Количество и суммы загруженных объектов совпадают с источником

Тревожный признак

Расхождения в итогах или дубли объектов

Самые частые проблемы при работе с XML в 1С связаны не с самим форматом, а с невнимательностью к деталям.

Типичные ошибки
01
Несовпадение кодировки: файл записан в UTF-8, а читается как ANSI — кириллица ломается, разбор падает
02
Незакрытые элементы при ручной записи: пропущенный ЗаписатьКонецЭлемента делает весь файл невалидным
03
Загрузка сразу в рабочую базу без теста на копии: ошибки формата приводят к дублям и частично загруженным данным
04
Правка файла обмена вручную в Word: редактор добавляет служебную разметку и портит структуру — править нужно только в простом текстовом редакторе
05
Игнорирование версии формата: приемник ожидает другую версию схемы, и файл отклоняется с малопонятной ошибкой

Ручная правка XML: когда допустимо и как делать безопасно

Иногда возникает соблазн быстро поправить файл выгрузки руками: изменить ИНН, дату или сумму. Для внутренних обменов между своими базами это допустимо при соблюдении правил: править только в простом текстовом редакторе (Блокнот, Notepad++), сохранять в исходной кодировке, не нарушать парность тегов. После правки файл следует заново проверить тестовой загрузкой.

Для файлов отчетности и ЭДО ручная правка — плохая практика. Корректнее исправить данные в самой 1С и сформировать файл заново: только так гарантируется соответствие документа в базе и отправленного файла. Если формат требует контрольных соотношений (например, сумма по строкам должна равняться итогу), ручная правка одного значения без пересчета остальных приведет к отказу приема файла.

FAQ: частые вопросы об XML в 1С

Чем открыть XML-файл из 1С, чтобы посмотреть содержимое?

Для просмотра подойдет любой текстовый редактор — Блокнот Windows, Notepad++ или встроенный текстовый редактор конфигуратора. Браузеры также открывают XML и показывают его в виде сворачиваемого дерева, что удобно для изучения структуры. Если символы отображаются нечитаемо, смените кодировку открытия на UTF-8.

Почему 1С пишет «Ошибка разбора XML» при загрузке файла?

Чаще всего структура файла нарушена: незакрытый тег, пересекающаяся вложенность, недопустимый символ в данных или неверная кодировка. Откройте файл в редакторе и проверьте позицию, указанную в тексте ошибки (обычно даются номер строки и позиция). Если файл пришел извне, запросите его повторную выгрузку у отправителя.

Чем XML в 1С отличается от JSON?

Оба формата служат для обмена данными, но XML строже: поддерживает атрибуты, пространства имен и валидацию по схеме, поэтому используется в регламентированных обменах (отчетность, ЭДО). JSON компактнее и проще для чтения, его чаще применяют в веб-интеграциях через HTTP-сервисы. Платформа 1С поддерживает оба формата.

Можно ли загрузить данные из XML без программирования?

Да, если данные можно предварительно преобразовать в табличный вид. Для этого используются типовые обработки загрузки данных из табличного документа: XML открывается, преобразуется в таблицу (например, через Excel при простой плоской структуре), и далее загружается сопоставлением колонок реквизитам. Сложные вложенные структуры без кода так не обработать.

Что такое схема XSD и зачем она нужна?

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

Почему после обмена XML в базе появились дубли контрагентов или товаров?

XML сам по себе дублей не создает — проблема в правилах сопоставления. Если при загрузке поиск объектов выполняется по наименованию, а не по уникальному идентификатору или ИНН, любое расхождение в написании порождает новый элемент. Настройте в правилах обмена поиск по ключевым реквизитам и выполните загрузку повторно на копии с проверкой.

Итог

Что важно запомнить

XML — универсальный текстовый формат обмена, глубоко встроенный в платформу 1С: от выгрузки конфигурации до отчетности и ЭДО. Для разработчика доступны ЧтениеXML/ЗаписьXML, DOM, XDTO и сериализация; выбор зависит от размера файла и наличия схемы. Перед загрузкой всегда проверяйте файл на копии базы, а регламентированные документы правьте только через повторное формирование из 1С.