Правка XML-файлов из 1С: вручную, через Конфигуратор и кодом
Содержание
Выгрузили отчёт или файл обмена, а загрузка падает: в одном поле лишний пробел, в другом старая дата. Чтобы отредактировать XML в 1С, не нужно ничего перевыгружать. Файл открывается в текстовом редакторе, правится и загружается обратно. Условие одно: после правки он должен остаться корректным XML в нужной кодировке.
Если правок много или их надо повторять каждый день, редактирование автоматизируют: читают файл встроенными объектами 1С или прогоняют через XSLT. Ниже все способы по порядку, от самого простого до самого мощного.
Когда XML в 1С приходится править
XML в 1С встречается в нескольких местах, и подход к правке зависит от того, откуда файл.
- 📄 Файлы обмена данными между базами (универсальный формат обмена, обмен с «Бухгалтерией предприятия» и другими конфигурациями).
- 📊 Регламентированная отчётность: выгрузка из 1С в формате, который принимает контролирующий орган.
- 🧾 Электронные документы : счета-фактуры, УПД, акты. Здесь правка чаще всего ломает подпись.
- 🛠 Выгрузка конфигурации в файлы: разработчики правят XML метаданных, чтобы массово поменять свойства объектов.
- ⚙️ Настройки: отдельные настройки и схемы компоновки данных тоже хранятся как XML.
Если файл подписан электронной подписью, любая правка делает подпись недействительной. Подписанный документ не правят, а формируют заново.
Правка уместна, когда ошибка точечная и понятная: неверный реквизит, лишний элемент, неподходящее значение перечисления. Если файл «не тот» целиком, быстрее и надёжнее перевыгрузить его из базы после исправления причины.
Какой способ выбрать
Способов пять. Они различаются трудоёмкостью и тем, сколько файлов можно обработать за раз.
| Способ | Когда подходит | Риски |
|---|---|---|
| Текстовый редактор | Один файл, одна-две правки | Сломать кодировку или структуру |
| Редактор с проверкой XML | Файл большой, нужна подсветка и валидация | Нужно ставить отдельную программу |
| Конфигуратор | Файлы конфигурации, макеты, файлы выгрузки метаданных | Можно испортить объекты конфигурации |
| Встроенный язык 1С | Много файлов, правка по правилам | Нужен разработчик |
| XSLT или XDTO | Преобразование структуры целиком | Самый высокий порог входа |
Правило простое: начинайте с самого лёгкого способа и переходите к следующему, только если он не справляется.
Ручная правка XML: по шагам
Так правят одиночный файл. Подойдёт любой редактор, который не портит кодировку.
- Сделайте копию файла. Оригинал положите рядом с пометкой «исходный».
- Откройте файл в редакторе. Не используйте «Блокнот» для файлов с BOM, если не уверены в его поведении. Надёжнее Notepad++ или другой редактор, который показывает кодировку внизу окна.
- Посмотрите первую строку. В ней указана кодировка, например
<?xml version="1.0" encoding="UTF-8"?>. Сохранять файл надо в той же кодировке. - Найдите нужный элемент поиском. Правьте только значение, не трогайте угловые скобки и названия тегов.
- Проверьте, что у каждого открытого тега есть закрывающий.
- Сохраните и загрузите файл в 1С.
Что нельзя писать в значениях
В тексте XML есть пять символов, которые нужно экранировать. Если в наименовании есть кавычки или амперсанд, без замены файл не прочитается.
| Символ | Как записать |
|---|---|
& | & |
< | < |
> | > |
" | " |
' | ' |
Например, организация Рога & Копыта должна выглядеть в файле как Рога & Копыта.
Проверка, что файл остался корректным
Самый быстрый тест: откройте файл в браузере. Если структура сломана, браузер покажет ошибку и номер строки. Исправный файл отобразится деревом.
Если в редакторе есть режим «Проверить синтаксис XML», пользуйтесь им после каждой серии правок, а не в конце.
Редактирование XML через Конфигуратор
В Конфигураторе правят XML в двух ситуациях: работают с файлами выгрузки конфигурации и открывают произвольный текстовый файл.
Выгрузка конфигурации в файлы
Конфигуратор умеет выгружать конфигурацию в набор XML-файлов и загружать обратно. Пункты находятся в меню Конфигурация, подпункт про выгрузку и загрузку конфигурации в файлы (точное название зависит от версии платформы, ищите по словам «в файлы»).
Порядок такой:
- Выгрузите конфигурацию в пустой каталог.
- Правьте нужные файлы в текстовом редакторе или в среде разработки.
- Загрузите конфигурацию из файлов обратно в Конфигуратор.
- Сравните с исходной конфигурацией и посмотрите список отличий.
- Обновите конфигурацию базы данных только после проверки.
Работайте на копии информационной базы. Загрузка из файлов заменяет объекты конфигурации. Ошибка в XML приведёт либо к отказу загрузки с сообщением, либо к тому, что объект поведёт себя иначе, чем вы ожидали.
Открыть текстовый файл в Конфигураторе
Конфигуратор открывает текстовые файлы через меню Файл и пункт открытия. Для коротких правок этого достаточно, но подсветки структуры XML и проверки валидности там нет. Для серьёзной работы лучше внешний редактор.
Автоматизация: чтение и запись XML встроенным языком
Когда файлов десятки, правку пишут кодом. В 1С для этого есть три основных объекта.
- 📖
ЧтениеXMLчитает файл последовательно, узел за узлом. Расходует мало памяти, подходит для больших файлов. - ✍️
ЗаписьXMLпишет файл потоком. Она сама ставит правильное экранирование символов. - 🌳
ПостроительDOMиЗаписьDOMзагружают документ в память целиком. Удобны, когда нужно найти узел в произвольном месте и поменять.
Схема правки через DOM выглядит так: прочитать файл, найти узел, изменить значение, записать результат в другой файл.
Чтение = Новый ЧтениеXML;
Чтение.ОткрытьФайл("C:\Обмен\входящий.xml");
Построитель = Новый ПостроительDOM;
Документ = Построитель.Прочитать(Чтение);
Чтение.Закрыть();
Узлы = Документ.ПолучитьЭлементыПоИмени("НаименованиеОрганизации");
Для Каждого Узел Из Узлы Цикл
Узел.ТекстовоеСодержимое = "ООО Ромашка";
КонецЦикла;
Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл("C:\Обмен\исправленный.xml", "UTF-8");
ЗаписьDOM = Новый ЗаписьDOM;
ЗаписьDOM.Записать(Документ, Запись);
Запись.Закрыть();
Имя элемента НаименованиеОрганизации здесь условное. Подставьте то, которое реально есть в вашем файле.
Три правила для такого кода:
- 💾 пишите результат в новый файл, а исходный не затирайте;
- 🔤 кодировку при открытии на запись указывайте явно;
- 🔍 после записи прочитайте файл заново и проверьте, что он открывается.
Для файлов от 50-100 МБ DOM не подходит: документ целиком занимает память, и сеанс может упасть. Используйте связку ЧтениеXML и ЗаписьXML, копируя узлы по одному и меняя нужные на лету.
Для правки в обработке без программирования
Если код писать некому, часто спасает обычный текстовый поиск и замена: файл читают как текст и заменяют фрагмент. Это грубо, но для одной замены подходит. Опасность в том, что замена не знает про структуру: она может задеть такое же слово в другом теге. Подстраховывайтесь, включая в шаблон поиска имя тега целиком.
Продвинутые методы: XSLT и XDTO
Когда нужно не поменять значение, а перестроить структуру, одних замен мало.
XSLT
XSLT описывает правила преобразования одного XML в другой: какие узлы взять, как переименовать, что отбросить. В 1С есть объект ПреобразованиеXSL. Он загружает таблицу стилей и применяет её к документу.
Подходит для случаев:
- 🔁 исходный файл в одном формате, а принимающая сторона ждёт другой;
- 🧹 надо убрать из файла служебные элементы;
- 📚 одно и то же преобразование повторяется для многих файлов.
Таблицу стилей пишут один раз и хранят в макете обработки или отдельным файлом. Менять правила тогда можно без перепрограммирования.
XDTO
XDTO работает иначе: файл не правят как текст, а превращают в объекты 1С. Объект ФабрикаXDTO читает XML по схеме и возвращает объект с типизированными свойствами. Вы меняете свойства, как у обычного объекта, и записываете обратно.
| DOM | XDTO | |
|---|---|---|
| Работа с файлом | как с деревом узлов | как с объектом |
| Проверка по схеме | нет | есть |
| Нужна схема XSD | нет | да |
| Типы значений | строки | числа, даты, булево |
XDTO стоит выбирать, если у формата есть схема и важно, чтобы результат ей соответствовал. Для разовой правки это избыточно.
Типичные ошибки при правке XML
Большинство отказов загрузки связано не с логикой, а с мелочами формата.
- 🔤 Сменилась кодировка. Файл был в UTF-8, а редактор сохранил в Windows-1251. Русские буквы превращаются в «крякозябры», загрузка падает.
- 🧱 Не закрыт тег. Удалили закрывающий тег вместе с лишним текстом.
- 🚫 Необработанный амперсанд в наименовании контрагента.
- 📏 Правка вслепую в одну строку. Часть выгрузок хранится без переносов; поиск в такой «простыне» легко привести к удалению лишнего.
- 🔢 Формат даты и числа. В XML они записаны по правилам формата, а не так, как показываются в интерфейсе. Дату переписывают в виде
2026-10-07T00:00:00, а не07.10.2026. - 🔐 Правка подписанного файла. Подпись становится недействительной, получатель отклоняет документ.
Если загрузка падает, 1С обычно называет строку и позицию ошибки. Перейдите на эту строку в редакторе и посмотрите на символы рядом, причина почти всегда там.
encoding.&. Перейдите на указанную строку и сравните с исходной копией.Безопасность и резервное копирование
Правка файла выгрузки редко опасна для базы, а вот загрузка исправленного файла уже меняет данные. Поэтому порядок действий важен.
Особенно строго действуйте с файлами обмена между рабочими базами. Загрузка в рабочую базу создаёт или изменяет реальные документы и справочники. Откатить её удобнее всего восстановлением из копии, поэтому пробуйте на копии и сверяйте результат.
Не правьте XML, который лежит в рабочем каталоге обмена, пока идёт обмен. Файл, который в это время читает регламентное задание, может быть прочитан наполовину, и 1С загрузит неполные данные. Остановите обмен или работайте с копией файла в другой папке.
Если правки в файлах конфигурации делает несколько человек, храните каталог выгрузки в системе контроля версий. Тогда любое изменение видно построчно, и вернуться к прежнему состоянию можно за минуту.
Если не помогло
Бывает, что файл правильный, а загрузка всё равно не проходит. Тогда причина не в синтаксисе, а в данных.
- Проверьте, что в справочниках приёмника есть значения, на которые ссылается файл: организация, склад, номенклатура.
- Сравните свой файл с рабочим образцом, который 1С выгружала сама. Отличия в структуре видны сразу.
- Выгрузите свежий файл из той же базы и подставьте в него только нужные значения, а не правьте старый.
- Если формат строгий (отчётность, ЭДО), обновите конфигурацию: описание формата меняется с релизами, и старая структура может перестать приниматься.
Последний совет работает чаще остальных: исправленный старый файл часто менее надёжен, чем свежая выгрузка с правкой одного реквизита.