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