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

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

Как открыть XML-документ в 1С

Как открыть XML-документ в 1С: чтение через объект ЧтениеXML, загрузка файлов обмена, обработка ошибок и проверка результата. Практические примеры кода.

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

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

Ниже разобраны все основные сценарии: просмотр XML, загрузка через типовые обработки, чтение программным кодом, работа с кодировками и разбор типичных ошибок.

Как определить, что за XML-файл перед вами

Прежде чем открывать файл, полезно понять его назначение, потому что от этого зависит способ обработки. XML — это текстовый формат с тегами, поэтому первые строки файла многое расскажут. Откройте файл любым текстовым редактором (подойдёт даже Блокнот, но удобнее Notepad++ или аналог) и посмотрите на первые строки.

Обратите внимание на объявление формата <?xml version="1.0" encoding="UTF-8"?> — здесь указана кодировка, и её нужно учитывать при чтении. Далее идёт корневой элемент, который часто указывает на назначение файла. Например, файлы обмена между базами 1С обычно начинаются с элемента <ФайлОбмена> или содержат пространства имён v8.1c.ru, электронные документы по формату ФНС содержат элемент <Файл> с атрибутом ИдФайл, а банковские выписки могут иметь собственную структуру.

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

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

Кодировка и тип документа видны сразу при открытии в редакторе

Размер файлаОт килобайт до сотен мегабайт

Большие файлы лучше не открывать в Блокноте — редактор зависнет

ИсточникБанк, контрагент, другая база 1С

От источника зависит, есть ли типовая обработка загрузки

Как открыть XML для просмотра без загрузки в базу

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

Для работы с большими файлами браузер неудобен: он может надолго зависнуть при открытии документа размером в десятки мегабайт. В этом случае используйте текстовые редакторы с поддержкой подсветки синтаксиса, например Notepad++. Он показывает структуру тегов, позволяет искать по содержимому и корректно работает с разными кодировками.

Также XML можно открыть прямо в 1С через меню «Файл — Открыть» в режиме тонкого или толстого клиента. Платформа отобразит файл в текстовом виде. Это удобно, когда 1С уже запущена и нужно быстро проверить содержимое выгрузки, не переключаясь между программами.

Как загрузить XML через типовые обработки 1С

Большинство XML-файлов, с которыми сталкивается пользователь, предназначены для загрузки в учётную систему, и для этого в типовых конфигурациях есть готовые инструменты. Искать собственные механизмы стоит только после того, как вы убедились, что типовой обработки для вашего формата нет.

Универсальный обмен данными в формате XML

Для файлов обмена между базами 1С используется обработка «Универсальный обмен данными в формате XML». В типовых конфигурациях она доступна через раздел администрирования или обслуживания, а также поставляется в виде внешнего файла, который открывается через «Файл — Открыть». В обработке перейдите на закладку «Загрузка данных», укажите путь к XML-файлу и нажмите кнопку загрузки.

Важное условие: такая загрузка работает корректно, только если файл сформирован по правилам обмена, совместимым с вашей конфигурацией. Файл, выгруженный из «1С:Бухгалтерии», не загрузится в «1С:Управление торговлей» без соответствующих правил конвертации. О несовместимости обработка сообщит ошибкой ещё на этапе чтения заголовка файла.

Загрузка электронных документов и банковских выписок

Для электронных документов от контрагентов (счетов-фактур, УПД, актов) в конфигурациях с подсистемой ЭДО есть функция загрузки документа из файла. Обычно она находится в разделе обмена электронными документами. Банковские выписки в формате XML загружаются через обработку «Обмен с банком» или «Клиент банка» в разделе банковских операций.

Загрузка файла обмена в типовую базу
  1. 1
    Сделайте резервную копию базы перед загрузкой данных
  2. 2
    Откройте обработку «Универсальный обмен данными в формате XML»
  3. 3
    Перейдите на закладку «Загрузка данных» и укажите файл
  4. 4
    Оставьте флаги проверки и безопасного режима включёнными
  5. 5
    Запустите загрузку и дождитесь отчёта об ошибках
  6. 6
    Проверьте, что объекты появились в базе и проводятся корректно

Как открыть XML программно: объект ЧтениеXML

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

Базовый шаблон чтения выглядит так:

Чтение = Новый ЧтениеXML;

Чтение.ОткрытьФайл("C:\Обмен\document.xml");

Пока Чтение.Прочитать() Цикл

Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда

ИмяУзла = Чтение.Имя;

// обработка начала элемента

ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.Текст Тогда

ЗначениеУзла = Чтение.Значение;

// обработка текстового содержимого

КонецЕсли;

КонецЦикла;

Чтение.Закрыть();

Для чтения атрибутов текущего узла используется метод ЗначениеАтрибута("ИмяАтрибута") или обход атрибутов по индексу через КоличествоАтрибутов(). Если файл находится на клиенте, а код выполняется на сервере, файл сначала нужно передать на сервер — например, через помещение во временное хранилище с помощью НачатьПомещениеФайла().

Альтернатива последовательному чтению — построитель DOM через объект ЧтениеXML совместно с ПостроительDOM и ДокументDOM. Этот подход загружает весь документ в память как дерево объектов и удобен, когда нужен произвольный доступ к узлам по пути XPath. Для больших файлов он не подходит из-за расхода памяти.

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

Как загрузить XML в таблицу значений или объекты конфигурации

Чтение файла — только половина задачи: полученные значения нужно куда-то поместить. Два типовых варианта — таблица значений для промежуточной обработки и непосредственное создание объектов конфигурации (справочников, документов).

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

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

Проблемы с кодировкой и типичные ошибки чтения

Самая частая причина, по которой XML «не открывается», — несовпадение кодировки. Файлы из старых систем часто сохранены в windows-1251, тогда как объявление внутри файла указывает UTF-8, или наоборот. Признак проблемы — «кракозябры» вместо кириллицы при просмотре или ошибка разбора при программном чтении.

Объект ЧтениеXML обычно сам определяет кодировку по объявлению в заголовке файла. Если объявление не соответствует реальному содержимому, исправьте его в текстовом редакторе или пересохраните файл в нужной кодировке. В Notepad++ это делается через меню «Кодировки — Преобразовать в UTF-8».

Вторая группа ошибок — нарушение структуры XML: незакрытые теги, спецсимволы без экранирования (&, <, > в тексте), недопустимые символы. Метод Прочитать() в этом случае вызывает исключение с указанием строки и позиции. Откройте файл в редакторе с нумерацией строк и посмотрите указанное место — обычно ошибка видна сразу.

Типичные ошибки при работе с XML в 1С
01
Чтение файла без проверки его существования — исключение на первом же запуске обработки
02
Игнорирование пространств имён — узлы находятся, но сравнение имён не срабатывает
03
Загрузка без транзакции — при сбое в базе остаются частично записанные данные
04
Открытие огромного файла через DOM — нехватка памяти и аварийное завершение сеанса
05
Запись объектов без поиска дублей — задвоение справочников после повторной загрузки

Как проверить результат загрузки

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

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

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

Как проверить результат

Количество объектов в базе
Норма

Совпадает с числом записей в файле

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

Часть записей отсутствует без сообщений об ошибках

Проведение документов
Норма

Все документы проводятся, движения корректны

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

Документы записаны, но не проводятся из-за незаполненных реквизитов

Дубли справочников
Норма

Повторная загрузка не создаёт новых элементов

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

Каждая загрузка добавляет копии одних и тех же элементов

Частые вопросы об открытии XML в 1С

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

Да. Для просмотра файл открывается через меню «Файл — Открыть» как текст. Для загрузки стандартных форматов (обмен между базами, электронные документы, банковские выписки) в типовых конфигурациях есть готовые обработки, которые не требуют написания кода.

Почему при чтении XML возникает ошибка «Ошибка разбора XML»?

Чаще всего файл повреждён или не является валидным XML: незакрытые теги, неэкранированные спецсимволы, обрезанный конец файла при неполной выгрузке. В сообщении об ошибке указаны строка и позиция — откройте файл в редакторе с нумерацией строк и проверьте это место.

Как открыть большой XML-файл, если 1С зависает?

Зависание обычно означает, что файл загружается в память целиком — через DOM или открытие в редакторе. Используйте последовательное чтение через объект ЧтениеXML: оно обрабатывает документ по узлам и работает с файлами практически любого размера.

Чем отличается ЧтениеXML от XDTO?

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

Файл от контрагента не загружается в ЭДО. Что делать?

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

Безопасно ли открывать XML-файлы из неизвестных источников?

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

Итог

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

Способ открытия XML в 1С зависит от цели: для просмотра достаточно браузера или редактора, для загрузки стандартных форматов используйте типовые обработки, для нестандартных — программное чтение через ЧтениеXML. Перед любой загрузкой делайте резервную копию и проверяйте результат по количеству и качеству созданных объектов.