Справочники и Данные · 10 мин
Как сохранить файл XML в 1С
Как сохранить файл XML в 1С: выгрузка документов и данных через обработки, запись XML программно в 1С 8.3, проверка результата и типичные ошибки.
Файл XML в 1С сохраняют в двух типовых ситуациях: когда нужно выгрузить данные (документы, справочники, отчёты) в файл для передачи в другую систему или контролирующий орган, и когда программист записывает XML программно из встроенного языка. В обоих случаях результат — текстовый файл в формате XML, который можно открыть в блокноте, браузере или загрузить в другую базу.
Для пользователя типовой конфигурации (1С:Бухгалтерия, 1С:Управление торговлей, 1С:ЗУП) чаще всего достаточно штатной обработки выгрузки: она сама формирует XML и предлагает указать папку для сохранения. Разработчику доступны объекты «ЗаписьXML», «ЧтениеXML» и универсальные механизмы сериализации, позволяющие записать в файл практически любые данные информационной базы.
Ниже разобраны оба подхода: сохранение XML через стандартные обработки без программирования и запись файла программным кодом, а также проверка результата и типичные ошибки, из-за которых файл не создаётся или оказывается повреждённым.
Когда в 1С требуется сохранить XML-файл
XML (eXtensible Markup Language) — основной формат обмена данными в экосистеме 1С. Через него выгружаются отчёты в ФНС и фонды, электронные документы для операторов ЭДО, данные для обмена между базами (например, между «Управлением торговлей» и «Бухгалтерией»), а также выгрузки для сайтов и сторонних учётных систем.
Практические сценарии, с которыми сталкиваются пользователи:
- выгрузка декларации или отчёта в XML для отправки через оператора связи или личный кабинет;
- сохранение документа (счёта-фактуры, УПД, акта) в XML для передачи контрагенту;
- выгрузка справочника номенклатуры или контрагентов для загрузки в другую базу;
- формирование файла обмена по правилам конвертации данных;
- программная запись произвольных данных в XML из собственной обработки.
От сценария зависит и способ сохранения: для регламентированной отчётности и ЭДО используются встроенные механизмы конфигурации, для обмена между базами — обработка «Универсальный обмен данными в формате XML», для произвольных данных — программный код.
Как сохранить XML через штатную выгрузку отчёта или документа
В типовых конфигурациях выгрузка регламентированной отчётности выполняется из формы отчёта. Откройте нужный отчёт (например, декларацию по НДС в 1С:Бухгалтерии), заполните его и нажмите кнопку «Выгрузить» — обычно она находится в верхней командной панели формы или в меню «Ещё». Программа сформирует XML по утверждённому формату и предложит выбрать папку для сохранения.
После выгрузки 1С, как правило, показывает окно с результатом: имя файла, путь сохранения и статус проверки по формату. Имя файла для регламентированной отчётности формируется автоматически по правилам приёмника (ФНС, ПФР) — переименовывать его вручную не следует, иначе файл могут не принять.
Для электронных документов (УПД, счета-фактуры, акты) в конфигурациях с подсистемой ЭДО выгрузка XML выполняется из карточки документа: команда «ЭДО» → «Выгрузить в файл» или аналогичная. Файл сохраняется в формате, согласованном с оператором ЭДО.
- 1Откройте нужный регламентированный отчёт и заполните его
- 2Нажмите кнопку «Выгрузить» в командной панели формы
- 3Дождитесь формирования файла и проверки по формату
- 4В диалоге укажите папку для сохранения и подтвердите
- 5Откройте папку и убедитесь, что XML-файл создан и имеет ненулевой размер
Как выгрузить данные в XML через универсальную обработку
Для переноса справочников и документов между базами используется обработка «Универсальный обмен данными в формате XML». В типовых конфигурациях она доступна в разделе администрирования или через меню «Файл» → «Открыть» (файл обработки поставляется в комплекте конфигурации и на диске ИТС).
Порядок работы: на закладке «Выгружаемые данные» выберите правила обмена (файл правил формируется в «Конвертации данных» или поставляется для типового обмена), отметьте объекты для выгрузки, задайте период и отборы. В поле «Имя файла данных» укажите путь и имя XML-файла — например, C:\Обмен\vygruzka.xml. Нажмите «Выполнить выгрузку».
По завершении обработка покажет количество выгруженных объектов. Если это число равно нулю — проверьте отборы и период: вероятно, под условия не попал ни один объект. Если выгрузка завершилась ошибкой, текст ошибки отобразится в окне сообщений; чаще всего причины — отсутствие прав на запись в папку или некорректные правила обмена.
Как сохранить XML программно: объект «ЗаписьXML»
Для произвольной записи XML из встроенного языка 1С используется объект «ЗаписьXML». Типовой шаблон кода выглядит так: создаётся объект, открывается файл, последовательно записываются элементы и их содержимое, затем файл закрывается.
Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл("C:\Обмен\данные.xml");
Запись.ЗаписатьОбъявлениеXML();
Запись.ЗаписатьНачалоЭлемента("Номенклатура");
Для Каждого Строка Из ТаблицаТоваров Цикл
Запись.ЗаписатьНачалоЭлемента("Товар");
Запись.ЗаписатьАтрибут("Код", Строка.Код);
Запись.ЗаписатьТекст(Строка.Наименование);
Запись.ЗаписатьКонецЭлемента();
КонецЦикла;
Запись.ЗаписатьКонецЭлемента();
Запись.Закрыть();
Ключевые правила: каждому «ЗаписатьНачалоЭлемента» должен соответствовать «ЗаписатьКонецЭлемента», иначе файл будет некорректным. Метод «Закрыть()» обязателен — без него данные могут остаться в буфере и не попасть в файл. Кодировка по умолчанию — UTF-8; если нужна другая, укажите её вторым параметром метода «ОткрытьФайл».
Для сериализации объектов конфигурации (документов, элементов справочников) в XML в типовом виде используется глобальный контекст «ЗаписатьXML» (объект XDTO/сериализатор), однако для обмена между разными конфигурациями надёжнее правила конвертации — структура объектов в разных конфигурациях не совпадает.
Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл("C:\Обмен\файл.xml", "UTF-8");
Запись.ЗаписатьОбъявлениеXML();
Запись.ЗаписатьНачалоЭлемента("Данные");
Запись.ЗаписатьТекст("Пример");
Запись.ЗаписатьКонецЭлемента();
Запись.Закрыть();Как проверить, что XML-файл сохранён корректно
После сохранения откройте папку и убедитесь, что файл существует и его размер больше нуля. Затем откройте файл двойным щелчком — по умолчанию XML открывается в браузере. Если структура корректна, браузер отобразит дерево элементов; если в файле синтаксическая ошибка (незакрытый тег, недопустимый символ), браузер покажет сообщение об ошибке с указанием строки.
Дополнительная проверка — открыть файл в «Блокноте» или Notepad++ и посмотреть первую строку: должно быть объявление вида <?xml version="1.0" encoding="UTF-8"?>. Если вместо русских букв видны «кракозябры» — проблема в кодировке: файл записан в одной кодировке, а открывается в другой.
Для регламентированной отчётности финальная проверка — загрузка файла в программу приёмника (например, тестовый сервис ФНС или программу оператора ЭДО). Только так можно убедиться, что файл соответствует утверждённому формату, а не просто синтаксически валиден.
Как проверить результат
Файл существует, размер больше нуля
Файла нет или размер 0 байт — запись не выполнена
Отображается дерево элементов
Сообщение об ошибке синтаксиса с номером строки
Русский текст читается нормально
Нечитаемые символы — несовпадение кодировки
Файл принят без ошибок формата
Отказ при загрузке — нарушен формат или версия формата
Типичные ошибки и ограничения
Наиболее частая проблема — ошибка «Недостаточно прав» или «Ошибка доступа к файлу» при сохранении. Причины: нет прав на запись в выбранную папку (особенно на сетевых дисках и в системных каталогах вроде C:\Windows), папка не существует, либо файл открыт другой программой. Решение — сохранять в профиль пользователя (например, «Документы») и закрыть файл в других приложениях.
В клиент-серверном режиме важно помнить: код, выполняемый на сервере, сохраняет файл на диске сервера, а не на компьютере пользователя. Если обработка работает на сервере, а путь указан как «C:\...», файл окажется на сервере приложений. Для передачи файла пользователю используют временное хранилище и метод «ПолучитьФайл» либо диалог сохранения на клиенте.
Ещё одна группа ошибок связана с содержимым: специальные символы (&, <, >, кавычки) в данных должны экранироваться — «ЗаписьXML» делает это автоматически, но при ручной сборке XML строкой конкатенацией файл легко сделать невалидным. Поэтому собирать XML «руками» через строковые операции не рекомендуется.
Часто задаваемые вопросы
Можно ли сохранить в XML табличный документ (печатную форму)?
Да. У табличного документа есть метод «Записать», который поддерживает формат MXL и, в новых версиях платформы, другие форматы. Однако это не тот XML, который принимают внешние системы: для обмена данными используйте выгрузку через обработки или «ЗаписьXML», а не сохранение печатной формы.
В какой кодировке сохранять XML для передачи в ФНС?
Регламентированная выгрузка в типовых конфигурациях формирует файл в кодировке, предусмотренной форматом (обычно windows-1251 с указанием в объявлении). Менять кодировку вручную не нужно — используйте штатную кнопку «Выгрузить», и конфигурация сама сформирует корректный файл.
Почему файл сохранился, но при загрузке в другую базу данные не появляются?
Чаще всего причина в несовпадении форматов: файл выгружен по одним правилам, а загружается по другим, либо структуры конфигураций различаются. Проверьте, что для выгрузки и загрузки используются согласованные правила обмена, и посмотрите протокол загрузки — в нём указываются отклонённые объекты и причины.
Как сохранить XML, если кнопка «Выгрузить» недоступна?
Недоступность команды обычно означает нехватку прав или то, что отчёт не записан/не проверен. Сохраните отчёт в базе, убедитесь, что у пользователя есть права на выгрузку (роль, связанная с отчётностью), и повторите попытку. Если прав не хватает — обратитесь к администратору базы.
Можно ли автоматизировать сохранение XML по расписанию?
Да, через регламентное задание на сервере или внешнюю обработку, запускаемую планировщиком. Учтите, что регламентное задание выполняется на сервере, поэтому путь сохранения должен быть доступен серверу 1С, а не локальному компьютеру пользователя.
Что важно запомнить
XML в 1С сохраняется штатной выгрузкой (отчёты, ЭДО, универсальный обмен) или программно через «ЗаписьXML». После сохранения обязательно проверьте файл: существование, открытие в браузере, кодировку и загрузку в систему-приёмник. Перед массовым обменом делайте резервную копию базы.