Файлы XML из 1С и для 1С: просмотр, правка, кодировка и сверка со схемой XSD
Содержание
Открыть XML -файл из 1С можно любым текстовым редактором: для просмотра хватит браузера или Блокнота, для правки удобнее Notepad++ с плагином XML Tools или VS Code с расширением для XML. Сама 1С читает такие файлы не «двойным щелчком», а через обработку обмена, загрузку конфигурации или код на встроенном языке.
Типичная ситуация: бухгалтер выгрузил данные из одной базы, а другая база при загрузке пишет Ошибка разбора XML. Или пришёл файл УПД от контрагента, и нужно понять, что внутри. В обоих случаях сначала смотрят файл глазами, потом проверяют кодировку и структуру, и только затем правят.
Откуда берутся XML-файлы в 1С и чем каждый удобнее открыть
XML в 1С — это не один формат, а десяток разных. От типа файла зависит, можно ли его править вручную.
| Источник файла | Пример имени | Чем смотреть | Можно ли править руками |
|---|---|---|---|
| Обмен через «Универсальный обмен данными в формате XML» | Message_*.xml, произвольное имя | Notepad++, VS Code | Да, осторожно, с копией |
| Обмен по формату EnterpriseData | Message_*.xml | VS 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С-никам.
- Установите Notepad++.
- Откройте
Плагины → Управление плагинами, найдите XML Tools и установите. - Откройте XML-файл. Чтобы разбить длинную строку на читаемые уровни, выберите в меню плагина команду Pretty print.
- Проверку синтаксиса запускают командой Check XML syntax now того же плагина.
- Кодировку смотрите и меняйте в меню
Кодировки.
VS Code с расширением XML
Удобен для больших и сложных файлов, особенно для выгрузки конфигурации.
- Установите VS Code.
- На вкладке расширений найдите XML от Red Hat и установите.
- Откройте файл или целую папку. Форматирование —
Shift+Alt+F. - Ошибки разметки редактор подчёркивает сразу, список — на панели «Проблемы».
| Редактор | Сильные стороны | Ограничения |
|---|---|---|
| Блокнот | Есть везде | Нет подсветки и проверки |
| 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 или без объявления вообще.
Как исправить
- Откройте файл в Notepad++ и посмотрите меню
Кодировки: отмечена текущая. - Если русский текст читается нормально, а первая строка указывает другую кодировку — исправьте значение
encodingв первой строке под фактическую. - Если нужен именно UTF-8, выберите
Кодировки → Преобразовать в UTF-8и затем поправьтеencoding="UTF-8". - Сохраните и снова откройте файл в браузере: он подтвердит, что разметка цела.
Не «перекодируйте» файлы по формату ФНС в 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
Плоские файлы — прайсы, остатки, выгрузки с сайта — удобно смотреть таблицей:
- В Excel откройте
Данные → Получить данные → Из файла → Из XML. - Выберите файл, в окне навигатора укажите нужный узел.
- Нажмите «Преобразовать данные», если надо развернуть вложенные элементы в столбцы.
Для глубоко вложенных структур вроде файла обмена 1С это неудобно: получится множество связанных таблиц. Такие данные лучше загрузить в базу и построить отчёт уже в 1С.