Администрирование · 13 мин
Как редактировать XML в 1С: практическое руководство
Как редактировать XML в 1С: способы выгрузки и загрузки, работа с файлами обмена, правка в редакторе, типовые ошибки и проверка результата.
XML — основной формат обмена данными в экосистеме 1С: через него выгружаются конфигурации, переносятся справочники и документы между базами, работают планы обмена и механизмы EnterpriseData. Редактировать XML приходится, когда нужно исправить выгрузку, перенести данные между нетиповыми базами, изменить пакет перед загрузкой или разобраться, почему обмен завершился ошибкой.
Работать с XML можно двумя путями: штатными средствами платформы (обработки выгрузки и загрузки, объекты «ЧтениеXML» и «ЗаписьXML») или внешними редакторами — от «Блокнота» до Notepad++ и специализированных XML-редакторов. Выбор зависит от задачи: точечную правку проще сделать в текстовом редакторе, а массовую трансформацию — кодом на встроенном языке.
Главный риск при ручном редактировании — нарушение структуры файла или несоответствие данных формату, который ожидает загружающая сторона. Один незакрытый тег или неверное значение ссылки приведёт к ошибке загрузки, а в худшем случае — к частично загруженным данным, которые придётся вычищать вручную. Поэтому перед правкой всегда делайте копию файла, а перед загрузкой в рабочую базу — резервную копию самой базы.
Где в 1С используется XML и когда нужна правка
XML-файлы встречаются в нескольких типовых сценариях. Первый — выгрузка и загрузка данных между информационными базами через обработку «Выгрузка и загрузка данных XML» (она входит в поставку многих конфигураций и доступна на диске ИТС). Второй — планы обмена и формат EnterpriseData, которым обмениваются, например, «Управление торговлей» и «Бухгалтерия». Третий — выгрузка конфигурации в файлы XML через конфигуратор, что используется для хранения кода в системах контроля версий.
Ручная правка оправдана в ограниченном числе случаев: нужно заменить значение реквизита во всём пакете, удалить проблемный объект из выгрузки, исправить ссылку на несуществующий элемент или адаптировать файл под другую версию формата. Массовые изменения данных внутри базы правильнее делать штатными средствами — групповой обработкой или кодом, — а не редактированием XML с последующей загрузкой.
Как выгрузить данные в XML штатными средствами
Стандартный инструмент — обработка «Выгрузка и загрузка данных XML». Она работает в режиме предприятия и переносит данные между базами с идентичной конфигурацией. Порядок действий: откройте обработку через «Файл — Открыть», укажите имя файла выгрузки, отметьте в дереве метаданных нужные объекты (справочники, документы, регистры) и нажмите «Выгрузить данные». Результат — один XML-файл, содержащий сериализованные объекты.
Для обмена между разными конфигурациями используется «Универсальный обмен данными в формате XML» вместе с правилами конвертации, подготовленными в «Конвертации данных». Здесь XML формируется по правилам, и ручная правка такого файла требует понимания структуры правил — иначе загрузка просто не найдёт ожидаемые узлы.
Отдельный сценарий — выгрузка конфигурации в файлы: в конфигураторе «Конфигурация — Выгрузить конфигурацию в файлы». Получается дерево XML-файлов, описывающих метаданные, модули и формы. Такие файлы редактируют при работе с внешними хранилищами версий, но править их нужно аккуратно: платформа при загрузке строго проверяет структуру.
- 1Сделайте резервную копию базы, если выгрузка — часть переноса данных
- 2Откройте обработку «Выгрузка и загрузка данных XML» в режиме предприятия
- 3Укажите путь и имя файла выгрузки
- 4Отметьте в дереве метаданных объекты для выгрузки
- 5Нажмите «Выгрузить данные» и дождитесь сообщения о завершении
- 6Откройте файл в редакторе и убедитесь, что он содержит ожидаемые объекты
Как открыть и отредактировать XML во внешнем редакторе
Для просмотра и точечной правки подойдёт Notepad++: он подсвечивает синтаксис XML, сворачивает блоки и умеет проверять корректность структуры через плагин XML Tools. Откройте файл, убедитесь, что кодировка определилась правильно — файлы 1С обычно в UTF-8, иногда с BOM. Если вместо русского текста видны кракозябры, вручную переключите кодировку на UTF-8 и только потом редактируйте.
Типовые правки: замена значения реквизита через поиск и замену, удаление целого блока объекта (от открывающего тега до закрывающего), исправление ИНН, дат, наименований. При замене учитывайте контекст: одна и та же строка может встречаться в разных объектах, и бездумная замена «по всему файлу» способна изменить больше, чем планировалось. Используйте замену с подтверждением каждого вхождения.
После правки проверьте файл на валидность: в Notepad++ это «Плагины — XML Tools — Check XML syntax». Редактор укажет строку с ошибкой — незакрытый тег, лишний символ, недопустимый знак. Только после успешной проверки файл имеет смысл загружать в базу.
Программное редактирование XML на встроенном языке
Когда правок много или они повторяются регулярно, рациональнее написать обработку. Платформа предоставляет объекты «ЧтениеXML» и «ЗаписьXML» для потоковой работы, а также «XDTO-пакеты» для работы с типизированными данными. Потоковый вариант удобен для больших файлов: документ читается последовательно, узел за узлом, и не загружается в память целиком.
Типовой шаблон обработки: открыть файл через «ЧтениеXML», в цикле читать узлы, при нахождении нужного узла сформировать изменённый фрагмент и записать его в новый файл через «ЗаписьXML». Узлы, не требующие правки, копируются без изменений. Такой подход безопаснее текстовой замены, потому что работает на уровне структуры, а не строк.
Чтение = Новый ЧтениеXML;
Чтение.ОткрытьФайл("C:\Обмен\выгрузка.xml");
Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл("C:\Обмен\выгрузка_new.xml");
Пока Чтение.Прочитать() Цикл
Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента
И Чтение.Имя = "Код" Тогда
Запись.ЗаписатьНачалоЭлемента("Код");
Чтение.Прочитать();
Запись.ЗаписатьТекст("НовоеЗначение");
Запись.ЗаписатьКонецЭлемента();
Иначе
// копирование узла без изменений
КонецЕсли;
КонецЦикла;
Чтение.Закрыть();
Запись.Закрыть();
Для обменов в формате EnterpriseData предпочтительнее XDTO: объекты описаны схемой, и платформа сама контролирует типы значений. Попытка править такие пакеты текстом часто заканчивается ошибками вида «Ошибка проверки данных XDTO», поэтому массовые изменения пакетов EnterpriseData лучше выполнять кодом или настройкой правил обмена.
Загрузка отредактированного XML обратно в базу
Загрузка выполняется той же обработкой «Выгрузка и загрузка данных XML»: укажите файл и нажмите «Загрузить данные». Обработка проверит соответствие конфигурации выгрузки текущей базе — при несовпадении версий конфигураций загрузка будет отклонена или пройдёт с ошибками. Перед загрузкой включите режим «Загружать данные в режиме обмена», если он предусмотрен: объекты запишутся без части контрольных проверок, что снижает риск блокировки бизнес-логикой, но требует понимания последствий.
Контролируйте результат по протоколу: обработка показывает количество загруженных объектов и ошибки по каждому проблемному. После загрузки откройте несколько объектов в базе и сверьте ключевые реквизиты с исходными данными. Для документов дополнительно проверьте проведение и движения по регистрам — документ может загрузиться, но не провестись из-за отсутствующих связанных данных.
Как проверить результат загрузки
Все объекты загружены, ошибок нет или перечислены ожидаемые пропуски
Ошибки записи, несовпадение количества объектов с выгрузкой
Реквизиты совпадают с источником, ссылки разрешаются
Пустые реквизиты, битые ссылки вида «Объект не найден»
Проводятся без ошибок, движения корректны
Документ записан, но не проводится из-за отсутствующих данных
Типичные ошибки при редактировании XML
Самая частая ошибка — повреждение структуры: удалён закрывающий тег, лишний перенос строки внутри значения, спецсимволы (&, <, >) вставлены без экранирования. XML требует записывать амперсанд как &, угловые скобки — как < и >. Редактор с проверкой синтаксиса выявит такие проблемы до загрузки.
Вторая группа ошибок — смысловые: файл синтаксически корректен, но данные не соответствуют ожиданиям базы. Например, в выгрузке ссылка на элемент справочника, которого нет в целевой базе, или значение перечисления, отсутствующее в конфигурации. Такие ошибки проявляются только при загрузке, поэтому тестовый прогон обязателен.
Третья группа — ошибки кодировки. Файл, сохранённый в ANSI вместо UTF-8, при загрузке даст искажённые строки или ошибку чтения. Всегда проверяйте кодировку при сохранении из редактора.
Как выбрать способ редактирования под задачу
Выбор инструмента зависит от объёма и повторяемости правок. Единичное изменение в одном файле быстрее сделать в Notepad++. Регулярные однотипные трансформации — повод написать обработку на встроенном языке. Изменение состава передаваемых данных между конфигурациями — задача для правил конвертации, а не для ручной правки каждого пакета.
Сравнение способов редактирования
Подходит для разовых точечных правок небольших файлов. Ограничение: нет контроля смысла данных, легко повредить структуру при большом объёме изменений
Подходит для массовых и повторяющихся трансформаций. Требует навыка программирования, но исключает случайное повреждение структуры
Подходит для регулярных обменов между разными конфигурациями. Сложная начальная настройка, но дальше правки не нужны вовсе
Подходит для пакетов EnterpriseData. Платформа контролирует типы, но требуется понимание модели данных формата
Если файл выгрузки очень большой и редактор открывает его медленно, не пытайтесь править его целиком: выгрузите данные порциями по видам объектов или перейдите на программную обработку — потоковое чтение справляется с файлами любого размера без загрузки в память.
Часто задаваемые вопросы
Чем открыть XML-файл выгрузки 1С, если он очень большой?
Стандартный «Блокнот» и даже Notepad++ могут зависать на файлах в сотни мегабайт. Используйте редакторы с потоковым открытием (например, EmEditor) или просматривайте файл через браузер, если нужен только просмотр. Для правки больших файлов надёжнее написать обработку на встроенном языке с объектами ЧтениеXML и ЗаписьXML — они читают файл последовательно и не требуют загрузки в память.
Можно ли редактировать XML обмена между УТ и Бухгалтерией?
Технически можно, но это пакеты формата EnterpriseData, проверяемые по схеме XDTO. Любое нарушение структуры или типов приведёт к отклонению всего пакета. Если нужно изменить состав или значения передаваемых данных, правильнее настроить правила обмена или доработать подписки на события, а текстовую правку использовать только для диагностики.
Почему при загрузке XML возникает ошибка «Ошибка формата потока»?
Чаще всего причина — повреждённая структура файла: незакрытый тег, обрезанный конец файла (выгрузка прервана), неверная кодировка или лишние символы в начале файла. Проверьте файл валидатором XML в редакторе, убедитесь, что он заканчивается закрывающим корневым тегом, и при необходимости повторите выгрузку.
Как изменить один реквизит у тысячи объектов в выгрузке?
Ручная замена в редакторе рискованна из-за совпадений строк в разных объектах. Напишите обработку: читайте файл через ЧтениеXML, находите нужные узлы по имени и контексту родительского элемента, записывайте изменённое значение через ЗаписьXML. Это занимает больше времени на подготовку, но гарантирует, что изменятся только целевые значения.
Безопасно ли загружать XML в режиме обмена данными?
Режим обмена отключает часть проверок и обработчиков записи, поэтому объекты записываются быстрее и без ошибок бизнес-логики. Но это же означает, что не сработают контрольные механизмы: можно записать данные, нарушающие внутренние ограничения конфигурации. Используйте режим осознанно и проверяйте результат, особенно для документов и регистров.
Что делать, если после загрузки появились битые ссылки?
Битые ссылки («Объект не найден») означают, что в выгрузке были ссылки на объекты, не попавшие в пакет и отсутствующие в целевой базе. Довыгрузите недостающие объекты и загрузите их повторно — ссылки восстановятся автоматически, так как платформа хранит их по уникальным идентификаторам. На будущее включайте в выгрузку связанные объекты или используйте опцию выгрузки «по ссылкам», если обработка её поддерживает.
Что важно запомнить
Редактирование XML в 1С сводится к трём шагам: выгрузить данные штатной обработкой, внести правки в редакторе или кодом с проверкой структуры, загрузить результат сначала в тестовую копию. Копия файла перед правкой и резервная копия базы перед загрузкой — обязательный минимум защиты от потери данных.