Разработка и Конфигурация · 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
Имена корневых элементов вроде Файл, КоммерческаяИнформация, 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 и затем прочитать его обратно. Такой код запускается во внешней обработке или в общем модуле.
// Запись файла
Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл("C:\Обмен\Товары.xml", "UTF-8");
Запись.ЗаписатьОбъявлениеXML();
Запись.ЗаписатьНачалоЭлемента("Товары");
Запись.ЗаписатьНачалоЭлемента("Товар");
Запись.ЗаписатьАтрибут("Код", "001");
Запись.ЗаписатьТекст("Номенклатура А");
Запись.ЗаписатьКонецЭлемента();
Запись.ЗаписатьКонецЭлемента();
Запись.Закрыть();Чтение выполняется зеркально: открывается файл, в цикле проверяются типы узлов ТипУзлаXML.НачалоЭлемента и ТипУзлаXML.Текст, значения атрибутов извлекаются через ЧтениеXML.ПолучитьАтрибут("Код"). Результат разбора обычно складывается в массив структур или таблицу значений для дальнейшей загрузки в базу.
- 1Определите состав данных: какие объекты и реквизиты должны попасть в файл
- 2Согласуйте структуру: имена элементов, вложенность, обязательные атрибуты — по формату приемника
- 3Напишите код записи через ЗаписьXML или XDTO, соблюдая порядок открытия и закрытия элементов
- 4Откройте полученный файл в текстовом редакторе и проверьте структуру и кодировку
- 5Выполните тестовую загрузку в базу-приемник на копии и сверьте итоговые данные с источником
Проверка результата и типичные ошибки
После формирования или получения XML-файла его нужно проверить до загрузки. Минимальный набор контрольных точек: файл открывается в редакторе без «кракозябр», структура тегов выглядит сбалансированной, обязательные по формату элементы присутствуют, значения дат и чисел соответствуют ожидаемому виду.
Как проверить XML-файл перед загрузкой
Текст читаем, русские буквы отображаются корректно
Нечитаемые символы — несовпадение кодировки
Каждый элемент открыт и закрыт, вложенность не пересекается
Ошибка разбора XML при загрузке в 1С
Все поля, требуемые форматом приемника, заполнены
Файл загружается, но часть данных отсутствует
Количество и суммы загруженных объектов совпадают с источником
Расхождения в итогах или дубли объектов
Самые частые проблемы при работе с XML в 1С связаны не с самим форматом, а с невнимательностью к деталям.
Ручная правка 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С.