Файлы XML из 1С и для 1С: просмотр, правка, кодировка и сверка со схемой XSD

· 10 мин

Содержание

Открыть XML -файл из 1С можно любым текстовым редактором: для просмотра хватит браузера или Блокнота, для правки удобнее Notepad++ с плагином XML Tools или VS Code с расширением для XML. Сама 1С читает такие файлы не «двойным щелчком», а через обработку обмена, загрузку конфигурации или код на встроенном языке.

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

Откуда берутся XML-файлы в 1С и чем каждый удобнее открыть

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

Источник файлаПример имениЧем смотретьМожно ли править руками
Обмен через «Универсальный обмен данными в формате XML»Message_*.xml, произвольное имяNotepad++, VS CodeДа, осторожно, с копией
Обмен по формату EnterpriseDataMessage_*.xmlVS Code, Notepad++Да, если понимаете схему
Обмен с сайтом (CommerceML)import.xml, offers.xmlБраузер, Notepad++Да
Выгрузка конфигурации в файлыConfiguration.xml и сотни другихEDT, VS CodeТолько разработчику
Электронные документы и отчётность по формату ФНСON_NSCHFDOPPR_…xml, NO_…xmlБраузер, Notepad++Подписанные — нет
Правила обмена «Конвертации данных»произвольноеКонвертация данных, VS CodeЧерез Конвертацию

Подписанный электронной подписью XML не редактируйте. Любое изменение, даже лишний пробел, делает подпись недействительной. Контрагент или налоговая отклонят такой документ.

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

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

Для быстрого взгляда хватит того, что уже есть в Windows.

📌 Браузер. Перетащите файл в окно Chrome, Edge или Firefox. Браузер покажет дерево элементов и сразу сообщит, если файл синтаксически битый: укажет строку и позицию ошибки. Это самый быстрый способ понять, «целый» ли файл.

📌 Блокнот. Правой кнопкой по файлу → Открыть с помощью → Блокнот. Современный Блокнот Windows 10 и 11 понимает UTF-8 и показывает кодировку в строке состояния справа внизу. Минус — нет подсветки и форматирования: выгрузка 1С часто записана одной длинной строкой.

📌 Excel. Подходит для плоских файлов вроде offers.xml с ценами. Подробнее — в разделе про конвертацию.

💡 Если файл записан в одну строку, браузер всё равно покажет его в виде дерева. Это удобнее, чем листать Блокнот вправо.

Редакторы для правки XML: Notepad++ и VS Code

Когда файл надо не только посмотреть, но и исправить, нужен нормальный редактор с подсветкой.

Notepad++ с XML Tools

Бесплатный, лёгкий, привычен многим 1С-никам.

  1. Установите Notepad++.
  2. Откройте Плагины → Управление плагинами, найдите XML Tools и установите.
  3. Откройте XML-файл. Чтобы разбить длинную строку на читаемые уровни, выберите в меню плагина команду Pretty print.
  4. Проверку синтаксиса запускают командой Check XML syntax now того же плагина.
  5. Кодировку смотрите и меняйте в меню Кодировки.

VS Code с расширением XML

Удобен для больших и сложных файлов, особенно для выгрузки конфигурации.

  1. Установите VS Code.
  2. На вкладке расширений найдите XML от Red Hat и установите.
  3. Откройте файл или целую папку. Форматирование — Shift+Alt+F.
  4. Ошибки разметки редактор подчёркивает сразу, список — на панели «Проблемы».
РедакторСильные стороныОграничения
БлокнотЕсть вездеНет подсветки и проверки
Notepad++ + XML ToolsБыстрый, проверка по XSDТормозит на очень больших файлах
VS Code + XMLПапки, поиск по проекту, подсказки по схемеТяжелее, нужен плагин
XML Notepad (Microsoft)Дерево элементов, правка узлов мышьюТолько Windows

Перед правкой файла обмена сделайте его копию рядом: Message_old.xml. Если загрузка после правки сломается, будет с чем сравнить.

Инструменты разработчика 1С для работы с XML

Здесь XML — не «файл, который пришёл», а рабочий формат самой платформы.

Выгрузка конфигурации в файлы

В Конфигураторе: Конфигурация → Выгрузить конфигурацию в файлы. Платформа сохранит каждый объект метаданных в отдельный XML, модули — в текстовые файлы .bsl. Обратная операция — Конфигурация → Загрузить конфигурацию из файлов.

То же из командной строки, для скриптов и хранения в Git:

"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /F"D:\Bases\Buh" /N"Администратор" /P"" /DumpConfigToFiles "D:\Dump\Buh"

Номер версии в пути подставьте свой: он совпадает с названием папки в C:\Program Files\1cv8.

1C:Enterprise Development Tools (EDT)

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

XDTO-пакеты и схемы

Когда внешняя система присылает XML по своей схеме, её подключают в конфигурацию через XDTO. В дереве Конфигуратора Общие → XDTO-пакеты есть команда импорта XML-схемы: в неё указывают файл .xsd, и платформа создаёт пакет с типами. После этого файл можно читать как объекты, а не разбирать текст вручную.

Обработки обмена

Для переноса данных между базами используют обработку «Универсальный обмен данными в формате XML» с правилами из «Конвертации данных». Файл, который она выгружает, — обычный XML: его можно открыть в Notepad++ и найти нужный объект по наименованию или коду.

Онлайн-сервисы для просмотра XML: когда они уместны

В интернете полно сервисов форматирования и проверки XML: вставляете текст — получаете красивое дерево или список ошибок. Для учебного примера или открытой выгрузки каталога с сайта это удобно.

Для данных из рабочей базы — нет:

  • 🔒 в файле обмена лежат ФИО, ИНН, паспортные данные сотрудников, суммы по контрагентам;
  • 🔒 загрузка таких данных на чужой сервер — передача персональных данных третьему лицу;
  • 🔒 у бесплатных сервисов ограничение по размеру, выгрузка базы в него обычно не влезет.

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

Кодировка XML-файла: кракозябры и ошибки чтения в 1С

Кодировка — самая частая причина, по которой XML «не открывается» или загружается с мусором вместо русских букв.

Кодировку файла объявляет первая строка:

<?xml version="1.0" encoding="UTF-8"?>

Проблема возникает, когда объявление и реальные байты расходятся. Например, строка говорит UTF-8, а файл сохранён в Windows-1251. Тогда 1С и браузер либо показывают «РџСЂРёРІРµС‚» вместо «Привет», либо падают с ошибкой разбора.

Что обычно встречается:

  • 🔤 выгрузки обменов 1С 8.3 — UTF-8;
  • 🔤 файлы по форматам ФНС (отчётность, электронные счета-фактуры, УПД) — windows-1251, это заложено в сами форматы;
  • 🔤 файлы от самописных систем — что угодно, в том числе UTF-8 с BOM или без объявления вообще.

Как исправить

  1. Откройте файл в Notepad++ и посмотрите меню Кодировки: отмечена текущая.
  2. Если русский текст читается нормально, а первая строка указывает другую кодировку — исправьте значение encoding в первой строке под фактическую.
  3. Если нужен именно UTF-8, выберите Кодировки → Преобразовать в UTF-8 и затем поправьте encoding="UTF-8".
  4. Сохраните и снова откройте файл в браузере: он подтвердит, что разметка цела.

Не «перекодируйте» файлы по формату ФНС в UTF-8 перед отправкой. Формат требует windows-1251, и файл с другой кодировкой не пройдёт проверку.

Отдельный случай — невидимые символы перед <?xml: BOM или пробел. Объявление XML обязано стоять в самом начале файла, иначе часть программ считает файл некорректным. В Notepad++ такой файл пересохраняют через Кодировки → Преобразовать в UTF-8 (без BOM).

Диагностика: выберите симптом

Проверка XML по схеме XSD

Синтаксически правильный XML ещё не значит правильный по смыслу. Схема XSD описывает, какие элементы обязательны, в каком порядке идут и какого они типа. Проверка по схеме ловит то, что браузер пропустит: пустой обязательный ИНН, дату не в том формате, лишний элемент.

Где взять схему

  • 📄 для форматов ФНС — на сайте налоговой, вместе с описанием формата. Версия формата указана в имени файла и в атрибутах корневого элемента: схема должна совпадать именно с ней;
  • 📄 для EnterpriseData — в составе конфигурации; разработчик выгружает её из XDTO-пакета;
  • 📄 для внешних систем — у их разработчика, это часть документации на интеграцию.

Чем проверить

Notepad++. Откройте XML, в меню XML Tools выберите проверку по схеме (Validate now) и укажите файл .xsd. Плагин перечислит нарушения с номерами строк.

VS Code. Если в корневом элементе указан атрибут xsi:noNamespaceSchemaLocation или xsi:schemaLocation с путём к схеме, расширение XML проверяет файл на лету и подсказывает допустимые элементы.

xmllint — для пакетной проверки многих файлов:

xmllint --noout --schema ON_NSCHFDOPPR.xsd ON_NSCHFDOPPR_001.xml

Ключ --noout убирает вывод самого файла, остаются только ошибки. При успехе утилита пишет, что файл прошёл проверку.

Для отчётности в ФНС, кроме проверки по XSD, есть контрольные соотношения. Их XSD не ловит: это проверяет бесплатная программа налоговой или сервис оператора отчётности.

Обработка XML кодом 1С и перевод в другие форматы

Когда XML приходит регулярно, править его руками нет смысла. Разбор пишут на встроенном языке.

Чтение через DOM

Подходит для файлов средних размеров, когда нужно найти конкретные элементы:

Чтение = Новый ЧтениеXML;
Чтение.ОткрытьФайл("D:\Exchange\offers.xml");

Построитель = Новый ПостроительDOM;
Документ = Построитель.Прочитать(Чтение);
Чтение.Закрыть();

Предложения = Документ.ПолучитьЭлементыПоИмени("Предложение");
Для Каждого Узел Из Предложения Цикл
    Ид = Узел.ПолучитьЭлементыПоИмени("Ид");
    Если Ид.Количество() > 0 Тогда
        Сообщить(Ид[0].ТекстовоеСодержимое);
    КонецЕсли;
КонецЦикла;

DOM загружает файл в память целиком. Для выгрузки на сотни мегабайт это плохо: сеанс упрётся в память.

Потоковое чтение

Для больших файлов читайте узел за узлом через ЧтениеXML без построителя:

Чтение = Новый ЧтениеXML;
Чтение.ОткрытьФайл("D:\Exchange\import.xml");

Пока Чтение.Прочитать() Цикл
    Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента
        И Чтение.Имя = "Наименование" Тогда
        Чтение.Прочитать();
        Если Чтение.ТипУзла = ТипУзлаXML.Текст Тогда
            Сообщить(Чтение.Значение);
        КонецЕсли;
    КонецЕсли;
КонецЦикла;

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

Расход памяти не зависит от размера файла.

Запись XML в нужной кодировке

Если внешняя система ждёт windows-1251, укажите кодировку при открытии файла:

Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл("D:\Out\report.xml", "windows-1251");
Запись.ЗаписатьОбъявлениеXML();
Запись.ЗаписатьНачалоЭлемента("Отчет");
Запись.ЗаписатьАтрибут("Дата", Формат(ТекущаяДата(), "ДФ=yyyy-MM-dd"));
Запись.ЗаписатьКонецЭлемента();
Запись.Закрыть();

Объявление с правильным encoding платформа запишет сама.

XML в Excel

Плоские файлы — прайсы, остатки, выгрузки с сайта — удобно смотреть таблицей:

  1. В Excel откройте Данные → Получить данные → Из файла → Из XML.
  2. Выберите файл, в окне навигатора укажите нужный узел.
  3. Нажмите «Преобразовать данные», если надо развернуть вложенные элементы в столбцы.

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

Перед тем как править XML вручную
Выполнено: 0 / 5

Частые вопросы

Почему двойной щелчок по XML открывает браузер, а не 1С?
Windows связывает расширение .xml с браузером или редактором. Платформа 1С не регистрирует себя как программу для XML: файлы обмена загружают через обработку обмена в самой базе.
Можно ли уменьшить большой файл обмена, удалив часть объектов?
Технически да, если удалять элементы целиком, от открывающего до закрывающего тега. Но в файле обмена объекты ссылаются друг на друга, и загрузка может создать «битые» ссылки. Надёжнее выгрузить меньший период или отбор.
Чем отличается ошибка синтаксиса от ошибки схемы?
Ошибка синтаксиса — нарушена сама разметка: незакрытый тег, лишний символ. Файл не прочитает никто. Ошибка схемы — разметка правильная, но не тот набор или формат данных: файл читается, но получатель его отклонит.
Почему XML из 1С записан одной строкой?
Платформа по умолчанию не добавляет отступы, так файл меньше. Читаемый вид даёт форматирование в редакторе: Pretty print в Notepad++ или Shift+Alt+F в VS Code. На данные это не влияет.
Как найти нужный документ в огромном файле обмена?
Ищите не по наименованию, а по уникальному признаку: номеру документа, ИНН, коду. В VS Code и Notepad++ поиск работает и по файлам в сотни мегабайт, хоть и медленнее.