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

Важно понимать, что механизмы работы с XML в 1С 8.3 и 1С 8.2 имеют как общие черты, так и ключевые различия. Например, в новых версиях платформы появилась поддержка XDTO (XML Data Transfer Objects), что упрощает работу с сложными структурами данных. А в старых релизах приходится полагаться на ЗаписьXML или внешние обработки. Мы рассмотрим оба подхода, чтобы вы могли выбрать оптимальный вариант для своей задачи.

Если вам нужно сохранить XML для:

  • 📤 Обмена с банками (выписки, платежки)
  • 📊 Отчетности в госорганы (ФНС, ПФР, Росстат)
  • 🔄 Интеграции с сайтом или CRM
  • 💾 Резервного копирования конфигурации или данных

— то эта инструкция поможет избежать типичных ошибок и сэкономить часы на поиск решений.

📊 Для чего вам чаще всего нужен XML в 1С?
Обмен с банками
Отчетность в госорганы
Интеграция с сайтом/CRM
Резервное копирование
Другое

1. Сохранение XML через стандартный экспорт данных

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

Чтобы сохранить данные в XML через стандартный экспорт:

  1. Откройте нужный справочник или документ (например, Справочник.Номенклатура).
  2. Выделите элементы, которые нужно экспортировать (или оставьте все, если требуется полная выгрузка).
  3. Нажмите Файл → Сохранить как... или Ещё → Выгрузить данные (в зависимости от версии платформы).
  4. В диалоговом окне выберите формат XML и укажите путь для сохранения.

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

💡

Если при экспорте 1С выдает ошибку "Неверный формат файла", проверьте кодировку. Для XML рекомендуется использовать UTF-8 — ее можно задать в настройках выгрузки.

2. Использование обработки «Выгрузка данных в XML»

Для более гибкой настройки выгрузки в предусмотрены специализированные обработки. Одна из самых универсальных — ВыгрузкаДанныхВXML.epf, которая идет в комплекте с типовыми конфигурациями (например, 1С:Бухгалтерия 3.0 или 1С:Управление торговлей 11).

Как ею воспользоваться:

  1. Откройте конфигуратор (Файл → Конфигуратор или нажмите Ctrl+Shift+F12).
  2. Перейдите в Файл → Открыть... и выберите обработку ВыгрузкаДанныхВXML.epf (обычно она лежит в каталоге шаблонов).
  3. В открывшейся форме укажите:
    • 📌 Источник данных (справочник, документ, регистр)
    • 📌 Поля для выгрузки (можно выбрать только нужные)
    • 📌 Имя корневого элемента (например, <КаталогТоваров>)
    • 📌 Кодировку (рекомендуется UTF-8)
  • Нажмите Выгрузить и сохраните файл.
  • ⚠️ Внимание: если обработка отсутствует в вашей конфигурации, ее можно скачать с портала 1С:ИТС или из репозитория 1С-Рарус. Убедитесь, что версия обработки совместима с вашей платформой (8.2 или 8.3).

    ☑️ Подготовка к выгрузке через обработку

    Выполнено: 0 / 4

    3. Программное сохранение XML через ЗаписьXML

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

    Пример кода для сохранения справочника Номенклатура в XML:

    Процедура ВыгрузитьВXML()
    

    // Создаем объект для записи XML

    ЗаписьXML = Новый ЗаписьXML;

    ЗаписьXML.ОткрытьФайл("C:\Export\Номенклатура.xml", "UTF-8");

    // Начинаем документ

    ЗаписьXML.ЗаписатьОбъявлениеXML();

    ЗаписьXML.ЗаписатьНачалоЭлемента("Каталог");

    // Выгружаем данные из справочника

    Выборка = Справочники.Номенклатура.Выбрать();

    Пока Выборка.Следующий() Цикл

    ЗаписьXML.ЗаписатьНачалоЭлемента("Товар");

    ЗаписьXML.ЗаписатьАтрибут("Код", Выборка.Код);

    ЗаписьXML.ЗаписатьАтрибут("Наименование", Выборка.Наименование);

    ЗаписьXML.ЗаписатьКонецЭлемента(); // Закрываем тег </Товар>

    КонецЦикла;

    // Закрываем корневой элемент и завершаем запись

    ЗаписьXML.ЗаписатьКонецЭлемента(); // Закрываем </Каталог>

    ЗаписьXML.Закрыть();

    КонецПроцедуры

    🔹 Ключевые моменты:

    • 🔹 Используйте ЗаписатьОбъявлениеXML(), чтобы добавить строку <?xml version="1.0" encoding="UTF-8"?>.
    • 🔹 Для вложенных элементов вызывайте ЗаписатьНачалоЭлемента и ЗаписатьКонецЭлемента парно.
    • 🔹 Атрибуты добавляются через ЗаписатьАтрибут после открытия элемента, но до записи его содержимого.
    Как обработать специальные символы в XML?

    В XML некоторые символы (например, &, <, >) нужно экранировать. Объект ЗаписьXML делает это автоматически. Но если вы формируете XML вручную (например, через СтрокаXML), замените их на сущности: &amp;, &lt;, &gt;.

    4. Выгрузка через XDTO (для 1С 8.3 и новее)

    Механизм XDTO (XML Data Transfer Objects) — это современный способ работы с XML в 1С 8.3, который обеспечивает валидацию структуры по XSD-схемам и упрощает интеграцию с веб-сервисами. Если вам нужно обмениваться данными с системами, требующими строгого соответствия схеме (например, Диадок, СБИС, или госуслуги), XDTO станет лучшим выбором.

    Алгоритм выгрузки через XDTO:

    1. Создайте пакет XDTO в конфигураторе (Файл → Новый → Пакет XDTO).
    2. Импортируйте XSD-схему (если она есть) или опишите структуру вручную.
    3. Напишите код для заполнения объекта XDTO данными из 1С:
    // Пример заполнения XDTO и сохранения в XML
    

    ФабрикаXDTO = Новый ФабрикаXDTO();

    Пакет = ФабрикаXDTO.Пакет("http://example.com/schema");

    ТипОбъекта = Пакет.Тип("CatalogItem");

    ОбъектXDTO = ФабрикаXDTO.Sоздать(ТипОбъекта);

    ОбъектXDTO.Код = "00001";

    ОбъектXDTO.Наименование = "Пример товара";

    ЗаписьXML = Новый ЗаписьXML;

    ЗаписьXML.ОткрытьФайл("C:\Export\Catalog_XDTO.xml");

    ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, ОбъектXDTO);

    ЗаписьXML.Закрыть();

    ⚠️ Внимание: если вы работаете с госсистемами (например, выгрузка деклараций в ФНС), используйте типовые пакеты XDTO от 1С. Они уже содержат актуальные схемы и обработчики для проверки данных перед отправкой.

    Метод выгрузки Сложность Гибкость Когда использовать
    Стандартный экспорт ❌ Минимальная Простые задачи, типовые обмены
    Обработка ВыгрузкаДанныхВXML ⭐⭐ ⚠️ Средняя Выгрузка справочников с фильтрацией полей
    ЗаписьXML ⭐⭐⭐ ✅ Высокая Кастомизированные форматы, интеграции
    XDTO ⭐⭐⭐⭐ ✅ Максимальная Обмен с веб-сервисами, госотчетность

    5. Сохранение конфигурации или базы в XML

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

    • 🔄 Переноса изменений между базами
    • 🛠️ Отката конфигурации после неудачного обновления
    • 📦 Архивирования перед массовыми изменениями

    Чтобы сохранить конфигурацию в XML:

    1. Откройте конфигуратор и перейдите в Конфигурация → Сохранить конфигурацию в файл....
    2. Выберите формат XML (или CF для бинарного формата).
    3. Укажите путь и подтвердите сохранение.

    🔹 Важно: файл конфигурации в XML может занимать в несколько раз больше места, чем бинарный .cf. Используйте этот формат только если нужно редактировать конфигурацию вручную (например, для массовой замены реквизитов).

    💡

    Для резервного копирования базы лучше использовать формат .dt (или .zip при архивировании). XML подходит только для конфигураций и небольших выгрузок данных.

    6. Автоматизация выгрузки XML через регламентные задания

    Если XML-файлы нужно формировать регулярно (например, ежедневная выгрузка прайс-листа на сайт), удобно настроить регламентное задание. Это избавит от рутинных операций и снизит риск ошибок.

    Как настроить автоматическую выгрузку:

    1. Создайте обработку (или используйте существующую), которая сохраняет данные в XML.
    2. В конфигураторе перейдите в Администрирование → Регламентные задания.
    3. Добавьте новое задание, укажите:
      • 📅 Расписание (ежедневно, еженедельно и т.д.)
      • 🖥️ Исполняемую обработку
      • 📁 Путь для сохранения файла
  • Активируйте задание и проверьте лог выполнения.
  • ⚠️ Внимание: при настройке автоматической выгрузки убедитесь, что:

    • 🔹 У пользователя, под которым запускается задание, есть права на запись в указанную папку.
    • 🔹 Папка не находится на сетевом диске, который может быть временно недоступен.
    • 🔹 В обработке предусмотрена обработка ошибок (например, отправка уведомления администратору при сбое).

    Типичные ошибки и как их избежать

    Даже опытные пользователи сталкиваются с проблемами при работе с XML. Вот самые распространенные ошибки и способы их решения:

    1. Ошибка: "Неверный формат файла" при открытии XML

      🔹 Причина: неверная кодировка (например, Windows-1251 вместо UTF-8).

      🔹 Решение: явным образом укажите кодировку при сохранении:

      ЗаписьXML.ОткрытьФайл("путь\к\файлу.xml", "UTF-8");

    2. Ошибка: "Несоответствие схеме XSD"

      🔹 Причина: структура XML не соответствует ожидаемой (например, отсутствует обязательный элемент).

      🔹 Решение: используйте XDTO с импортированной схемой или валидируйте XML перед отправкой через сервис XML Validator.

    3. Ошибка: "Файл не найден" при автоматической выгрузке

      🔹 Причина: регламентное задание запускается под пользователем без прав на папку.

      🔹 Решение: проверьте права доступа или сохраняйте файл в %TEMP% с последующим перемещением.

    💡

    Если XML-файл нужно отправить по email или загрузить на FTP, используйте обработку ПомощникОтправкиФайловПоFTP (доступна на ИТС). Она поддерживает шифрование и логирование.

    FAQ: Частые вопросы по сохранению XML в 1С

    Можно ли сохранить отчет (например, оборотно-сальдовую ведомость) в XML?

    Да, но не напрямую. Сначала экспортируйте отчет в Табличный документ, а затем конвертируйте его в XML с помощью обработки ВыгрузкаТабличногоДокументаВXML (доступна на Инфостарт). Альтернативно — используйте ЗаписьXML для ручного формирования структуры.

    Как сохранить XML с кириллическими тегами (например, <Товар> вместо <Item>)?

    В ЗаписьXML можно использовать любые имена тегов, включая кириллицу. Пример:

    ЗаписьXML.ЗаписатьНачалоЭлемента("Товар"); // Тег на русском

    Однако учтите, что некоторые внешние системы могут не поддерживать кириллицу в тегах. В этом случае используйте транслитерацию или латиницу.

    Чем отличается выгрузка в XML и JSON в 1С?

    XML лучше подходит для документооборота и госотчетности (например, СБИС, Контур.Диадок), так как поддерживает схемы XSD и пространства имен. JSON компактнее и чаще используется для интеграции с веб-приложениями. В 1С 8.3.20+ появилась встроенная поддержка JSON через объект ЗаписьJSON.

    Как сохранить XML с цифровой подписью?

    Для подписи XML в 1С используйте криптографические библиотеки (например, КриптоПро) и обработку ПодписаниеXML. Алгоритм:

    1. Сформируйте XML без подписи.
    2. Добавьте блок <Signature> с помощью ПодписаниеXML.ПодписатьФайл().
    3. Сохраните результат в новый файл.

    Готовые обработки для ЭЦП можно найти на Инфостарт или 1С-Галэкс.

    Почему при выгрузке в XML теряются русские буквы (вместо них знаки вопроса)?

    Это проблема кодировки. Решения:

    • 🔹 Явно укажите UTF-8 при открытии файла: ЗаписьXML.ОткрытьФайл(..., "UTF-8").
    • 🔹 Если файл открывается в блокноте, используйте Notepad++ или VS Code — они корректно отображают UTF-8.
    • 🔹 Проверьте настройки региональных стандартов в Windows (должна быть включена поддержка Unicode).