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

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

Как отредактировать XML файл в 1С

Способы редактирования XML в 1С: внешние редакторы, конфигуратор, встроенный язык. Проверка структуры, типовые ошибки и безопасная работа с данными.

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

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

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

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

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

  • Файл обмена данными (Exchange XML) — обычно содержит корневой узел ФайлОбмена с блоками ПравилаОбмена и ДанныеПоОбмену. Структура жёстко задана, свободно править можно только значения внутри узлов объектов.
  • Электронный документ для ЭДО (счёт-фактура, УПД, акт) — корневой узел вида Файл с атрибутами версии формата. Правки ограничены утверждённым форматом ФНС, произвольные изменения приведут к отказу при приёме.
  • Выгрузка конфигурации или отчётность — структура определяется конкретной конфигурацией или форматом выгрузки в контролирующие органы.
  • Произвольный XML — например, файл интеграции с сайтом или сторонней системой. Здесь допустимые изменения определяются схемой (XSD) или договорённостью с принимающей стороной.
Корневой узелТип документа

По имени корневого элемента определите, обмен это, ЭДО или произвольный формат

Кодировка в объявленииUTF-8 или windows-1251

Сохранять файл нужно в той же кодировке, иначе кириллица испортится

Размер файлаКБ или сотни МБ

Большие файлы не открываются в простых редакторах — нужен потоковый инструмент

Наличие XSD-схемыЕсть или нет

При наличии схемы правки должны ей соответствовать

Редактирование XML во внешнем редакторе

Самый простой способ разовой правки — открыть файл в редакторе с подсветкой синтаксиса XML. Подойдут Notepad++, Visual Studio Code, XML Notepad или любой аналог. Блокнот Windows использовать не стоит: он не показывает структуру, легко ломает кодировку и не проверяет парность тегов.

Откройте файл через меню редактора (а не двойным щелчком — так вы контролируете программу открытия). Убедитесь, что редактор определил кодировку правильно: кириллические значения должны читаться. Если видите «кракозябры», смените кодировку отображения на UTF-8 или windows-1251 — в зависимости от того, что указано в объявлении <?xml version="1.0" encoding="..."?>.

Порядок правки во внешнем редакторе
  1. 1
    Сделайте копию исходного файла в отдельную папку
  2. 2
    Откройте файл в редакторе с поддержкой XML и проверьте кодировку
  3. 3
    Найдите нужный узел через поиск по имени тега или значению
  4. 4
    Внесите правку, не нарушая структуру: теги, атрибуты, вложенность
  5. 5
    Выполните проверку синтаксиса (в Notepad++ — плагин XML Tools, команда Check XML well-formedness)
  6. 6
    Сохраните файл в исходной кодировке
  7. 7
    Загрузите файл в тестовую копию базы 1С и проверьте результат

После сохранения обязательно проверьте валидность файла. В Notepad++ это делает плагин XML Tools, в VS Code — встроенная диагностика или расширения XML. Невалидный файл (незакрытый тег, лишний символ) 1С просто не прочитает — вы получите ошибку разбора при загрузке.

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

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

Для типовых задач удобнее использовать готовые внешние обработки: универсальные загрузчики/выгрузчики XML, консоли для просмотра структуры файла обмена. Во многих конфигурациях есть встроенные механизмы выгрузки и загрузки данных («Выгрузка и загрузка данных XML» в типовых решениях), которые позволяют сформировать файл, а после правки — загрузить его обратно с контролем ошибок.

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

Программное редактирование на встроенном языке

Когда правок много или они регулярны, XML редактируют кодом. Встроенный язык 1С предоставляет два подхода: потоковый (ЧтениеXML/ЗаписьXML) и объектная модель документа (ДокументDOM через ПостроительDOM).

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

1c
Чтение = Новый ЧтениеXML;
Чтение.ОткрытьФайл("C:\Обмен\input.xml");
Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл("C:\Обмен\output.xml");
Пока Чтение.Прочитать() Цикл
    Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
        Запись.ЗаписатьНачалоЭлемента(Чтение.Имя);
    ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.Текст Тогда
        Значение = Чтение.Значение;
        Если Значение = "СтароеЗначение" Тогда
            Значение = "НовоеЗначение";
        КонецЕсли;
        Запись.ЗаписатьТекст(Значение);
    ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда
        Запись.ЗаписатьКонецЭлемента();
    КонецЕсли;
КонецЦикла;
Чтение.Закрыть();
Запись.Закрыть();

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

Для файлов обмена данными есть специализированный объект ОбменДанными и обработки конвертации — они обеспечивают корректную работу с правилами обмена. Прямое редактирование таких файлов кодом без учёта правил часто приводит к рассинхронизации ссылок между базами.

Сравнение способов редактирования

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

Внешний текстовый редактор

Разовые точечные правки небольших файлов. Быстро, но вся ответственность за корректность структуры на вас

Конфигуратор и типовые обработки

Когда нужно выгрузить-изменить-загрузить с контролем ошибок штатными средствами. Ограничено возможностями конкретной конфигурации

Код на встроенном языке (потоковый)

Большие файлы и массовые однотипные замены. Требует навыков программирования, но масштабируется

Код на встроенном языке (DOM)

Сложные точечные правки с навигацией по дереву. Не подходит для очень больших файлов из-за расхода памяти

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

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

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

Проверку синтаксиса выполняет любой XML-редактор или онлайн-валидатор. Соответствие формату ФНС для электронных документов проверяется специализированными сервисами проверки или тестовой отправкой через оператора ЭДО. Загрузку в 1С всегда сначала выполняйте на копии базы.

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

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

Синтаксис XML
Норма

Валидатор не выдаёт ошибок, все теги закрыты

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

Ошибки разбора, непарные теги, недопустимые символы

Кодировка файла
Норма

Совпадает с объявлением в заголовке, кириллица читается

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

Кракозябры при открытии, ошибки чтения в 1С

Загрузка в 1С
Норма

Файл загружается без ошибок, данные корректны

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

Ошибка разбора или незаполненные реквизиты после загрузки

Целостность ссылок
Норма

Объекты ссылаются на существующие элементы

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

Битые ссылки, дубли объектов после загрузки

Типичные ошибки при редактировании XML из 1С

Типичные ошибки
01
Сохранение в другой кодировке — файл перестаёт читаться или кириллица превращается в мусор. Всегда сохраняйте в исходной кодировке
02
Правка файла обмена без понимания правил конвертации — после загрузки появляются дубли и битые ссылки
03
Удаление «лишних» с виду узлов — в файлах ЭДО и обмена каждый узел может быть обязательным по формату
04
Редактирование подписанного электронного документа — подпись становится недействительной, документ теряет юридическую силу
05
Отсутствие резервной копии — при ошибке восстановить исходник невозможно
06
Правка файла, который уже обрабатывается другой системой — конфликт версий и потеря данных

Отдельно стоит сказать про специальные символы. Значения, содержащие &, <, >, кавычки, в XML должны быть экранированы (&amp;, &lt; и т.д.). Если вы вручную вписываете значение с амперсандом (например, название организации «Рога & копыта»), неэкранированный символ сломает весь файл.

Когда ручная правка не подходит

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

Маршрут решения

Как выбрать действие

Данные можно исправить в базе-источникеИсправьте в 1С и повторите выгрузку — не правьте файл вручную
Файл подписан электронной подписьюНе редактируйте: сформируйте корректировочный документ штатно
Нужна разовая точечная правка небольшого файлаОтредактируйте в редакторе с проверкой валидности и загрузкой в тестовую базу
Правки массовые или регулярныеНапишите обработку на встроенном языке с потоковым чтением XML
Файл очень большой и не открывается в редакторахИспользуйте только программную потоковую обработку

Часто задаваемые вопросы

Можно ли открыть XML из 1С в Excel?

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

Файл весит несколько гигабайт и не открывается. Что делать?

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

После правки 1С выдаёт «Ошибка разбора XML». Где искать причину?

Чаще всего причины три: незакрытый или лишний тег, неэкранированный специальный символ (&, <, >) в значении, либо изменённая кодировка файла при сохранении. Прогоните файл через валидатор XML — он укажет строку с ошибкой. Сравнение с резервной копией через инструмент сравнения файлов тоже быстро покажет, что именно изменилось.

Можно ли редактировать файл обмена между двумя базами 1С?

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

Как изменить кодировку XML-файла?

В Notepad++ это делается через меню «Кодировки — Преобразовать в UTF-8» (или нужную), после чего файл сохраняется. Не забудьте исправить атрибут encoding в объявлении XML, если он не совпадает с новой кодировкой. Программно в 1С кодировка задаётся параметром при открытии файла через ЗаписьXML или ЗаписьТекста.

Нужно ли согласовывать правки XML с контрагентом при ЭДО?

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

Итог

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

Разовые правки делайте в редакторе с проверкой валидности, массовые — кодом через ЧтениеXML/ЗаписьXML. Всегда сохраняйте исходную кодировку, экранируйте спецсимволы и держите резервную копию. Подписанные документы ЭДО не редактируются — используйте корректировку. Результат проверяйте загрузкой в тестовую базу.