Правка XML-файлов из 1С: вручную, через Конфигуратор и кодом

· 9 мин

Содержание

Выгрузили отчёт или файл обмена, а загрузка падает: в одном поле лишний пробел, в другом старая дата. Чтобы отредактировать XML в 1С, не нужно ничего перевыгружать. Файл открывается в текстовом редакторе, правится и загружается обратно. Условие одно: после правки он должен остаться корректным XML в нужной кодировке.

Если правок много или их надо повторять каждый день, редактирование автоматизируют: читают файл встроенными объектами 1С или прогоняют через XSLT. Ниже все способы по порядку, от самого простого до самого мощного.

Когда XML в 1С приходится править

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

  • 📄 Файлы обмена данными между базами (универсальный формат обмена, обмен с «Бухгалтерией предприятия» и другими конфигурациями).
  • 📊 Регламентированная отчётность: выгрузка из 1С в формате, который принимает контролирующий орган.
  • 🧾 Электронные документы : счета-фактуры, УПД, акты. Здесь правка чаще всего ломает подпись.
  • 🛠 Выгрузка конфигурации в файлы: разработчики правят XML метаданных, чтобы массово поменять свойства объектов.
  • ⚙️ Настройки: отдельные настройки и схемы компоновки данных тоже хранятся как XML.

Если файл подписан электронной подписью, любая правка делает подпись недействительной. Подписанный документ не правят, а формируют заново.

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

Какой способ выбрать

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

СпособКогда подходитРиски
Текстовый редакторОдин файл, одна-две правкиСломать кодировку или структуру
Редактор с проверкой XMLФайл большой, нужна подсветка и валидацияНужно ставить отдельную программу
КонфигураторФайлы конфигурации, макеты, файлы выгрузки метаданныхМожно испортить объекты конфигурации
Встроенный язык 1СМного файлов, правка по правиламНужен разработчик
XSLT или XDTOПреобразование структуры целикомСамый высокий порог входа

Правило простое: начинайте с самого лёгкого способа и переходите к следующему, только если он не справляется.

Ручная правка XML: по шагам

Так правят одиночный файл. Подойдёт любой редактор, который не портит кодировку.

  1. Сделайте копию файла. Оригинал положите рядом с пометкой «исходный».
  2. Откройте файл в редакторе. Не используйте «Блокнот» для файлов с BOM, если не уверены в его поведении. Надёжнее Notepad++ или другой редактор, который показывает кодировку внизу окна.
  3. Посмотрите первую строку. В ней указана кодировка, например <?xml version="1.0" encoding="UTF-8"?>. Сохранять файл надо в той же кодировке.
  4. Найдите нужный элемент поиском. Правьте только значение, не трогайте угловые скобки и названия тегов.
  5. Проверьте, что у каждого открытого тега есть закрывающий.
  6. Сохраните и загрузите файл в 1С.

Что нельзя писать в значениях

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

СимволКак записать
&&amp;
<&lt;
>&gt;
"&quot;
'&apos;

Например, организация Рога & Копыта должна выглядеть в файле как Рога &amp; Копыта.

Проверка, что файл остался корректным

Самый быстрый тест: откройте файл в браузере. Если структура сломана, браузер покажет ошибку и номер строки. Исправный файл отобразится деревом.

Если в редакторе есть режим «Проверить синтаксис XML», пользуйтесь им после каждой серии правок, а не в конце.

Редактирование XML через Конфигуратор

В Конфигураторе правят XML в двух ситуациях: работают с файлами выгрузки конфигурации и открывают произвольный текстовый файл.

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

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

Порядок такой:

  1. Выгрузите конфигурацию в пустой каталог.
  2. Правьте нужные файлы в текстовом редакторе или в среде разработки.
  3. Загрузите конфигурацию из файлов обратно в Конфигуратор.
  4. Сравните с исходной конфигурацией и посмотрите список отличий.
  5. Обновите конфигурацию базы данных только после проверки.

Работайте на копии информационной базы. Загрузка из файлов заменяет объекты конфигурации. Ошибка в 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 по схеме и возвращает объект с типизированными свойствами. Вы меняете свойства, как у обычного объекта, и записываете обратно.

DOMXDTO
Работа с файломкак с деревом узловкак с объектом
Проверка по схеменетесть
Нужна схема XSDнетда
Типы значенийстрокичисла, даты, булево

XDTO стоит выбирать, если у формата есть схема и важно, чтобы результат ей соответствовал. Для разовой правки это избыточно.

Типичные ошибки при правке XML

Большинство отказов загрузки связано не с логикой, а с мелочами формата.

  • 🔤 Сменилась кодировка. Файл был в UTF-8, а редактор сохранил в Windows-1251. Русские буквы превращаются в «крякозябры», загрузка падает.
  • 🧱 Не закрыт тег. Удалили закрывающий тег вместе с лишним текстом.
  • 🚫 Необработанный амперсанд в наименовании контрагента.
  • 📏 Правка вслепую в одну строку. Часть выгрузок хранится без переносов; поиск в такой «простыне» легко привести к удалению лишнего.
  • 🔢 Формат даты и числа. В XML они записаны по правилам формата, а не так, как показываются в интерфейсе. Дату переписывают в виде 2026-10-07T00:00:00, а не 07.10.2026.
  • 🔐 Правка подписанного файла. Подпись становится недействительной, получатель отклоняет документ.

Если загрузка падает, 1С обычно называет строку и позицию ошибки. Перейдите на эту строку в редакторе и посмотрите на символы рядом, причина почти всегда там.

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

Безопасность и резервное копирование

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

Перед загрузкой исправленного XML
Выполнено: 0 / 5

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

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

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

Если не помогло

Бывает, что файл правильный, а загрузка всё равно не проходит. Тогда причина не в синтаксисе, а в данных.

  • Проверьте, что в справочниках приёмника есть значения, на которые ссылается файл: организация, склад, номенклатура.
  • Сравните свой файл с рабочим образцом, который 1С выгружала сама. Отличия в структуре видны сразу.
  • Выгрузите свежий файл из той же базы и подставьте в него только нужные значения, а не правьте старый.
  • Если формат строгий (отчётность, ЭДО), обновите конфигурацию: описание формата меняется с релизами, и старая структура может перестать приниматься.

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

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

Чем открыть XML-файл из 1С, если «Блокнот» ломает текст?
Используйте редактор, который показывает и сохраняет кодировку: Notepad++, VS Code или аналоги. Главное правило: сохранять в той же кодировке, в какой файл был выгружен.
Можно ли править XML, выгруженный из отчётности?
Технически можно, но делать это стоит только для исправления точечной ошибки перед отправкой. После правки проверьте файл программой проверки, которую предлагает принимающая сторона, а не только загрузкой в 1С.
Как найти нужный элемент в огромном XML?
Поиском по имени тега или по значению, которое вы знаете. Если файл в одну строку, сначала отформатируйте его командой «красивая печать» (pretty print) в редакторе: структура станет читаемой.
Что лучше для массовой правки: DOM или XSLT?
Если надо заменить значения по условию, хватит DOM. Если нужно поменять саму структуру файла, берите XSLT: правила хранятся отдельно, и их легко менять.
Нужно ли останавливать пользователей при загрузке исправленного файла?
Для небольшой загрузки нет. Для большого обмена с изменением множества документов лучше выбрать время без активной работы и сделать копию базы заранее.
Что делать, если не уверен в правке?
Проверьте результат на копии базы. Если на копии всё прошло без ошибок и данные совпали с ожидаемыми, переносите правку в рабочую базу.