Формат XML широко используется в 1С:Предприятие для обмена данными между системами, выгрузки отчетности, интеграции с веб-сервисами и резервного копирования конфигураций. Однако многие пользователи сталкиваются с трудностями при попытке сохранить данные в этом формате — особенно когда требуется не стандартный экспорт, а кастомизированный вывод с учетом специфики бизнес-процессов. В этой статье мы разберем все актуальные способы сохранения XML-файлов, от ручных операций в интерфейсе до программных решений для разработчиков.
Важно понимать, что механизмы работы с XML в 1С 8.3 и 1С 8.2 имеют как общие черты, так и ключевые различия. Например, в новых версиях платформы появилась поддержка XDTO (XML Data Transfer Objects), что упрощает работу с сложными структурами данных. А в старых релизах приходится полагаться на ЗаписьXML или внешние обработки. Мы рассмотрим оба подхода, чтобы вы могли выбрать оптимальный вариант для своей задачи.
Если вам нужно сохранить XML для:
- 📤 Обмена с банками (выписки, платежки)
- 📊 Отчетности в госорганы (ФНС, ПФР, Росстат)
- 🔄 Интеграции с сайтом или CRM
- 💾 Резервного копирования конфигурации или данных
— то эта инструкция поможет избежать типичных ошибок и сэкономить часы на поиск решений.
1. Сохранение XML через стандартный экспорт данных
Самый простой способ — использовать встроенные механизмы выгрузки. Он подходит для типовых задач, когда не требуется кастомизация структуры XML. Например, так можно выгрузить справочники, документы или регистры в формат, понятный другим системам.
Чтобы сохранить данные в XML через стандартный экспорт:
- Откройте нужный справочник или документ (например,
Справочник.Номенклатура). - Выделите элементы, которые нужно экспортировать (или оставьте все, если требуется полная выгрузка).
- Нажмите
Файл → Сохранить как...илиЕщё → Выгрузить данные(в зависимости от версии платформы). - В диалоговом окне выберите формат XML и укажите путь для сохранения.
🔹 Ограничения метода: стандартный экспорт не позволяет гибко настраивать структуру XML. Если получателю нужны данные в специфичном формате (например, с определенными тегами или атрибутами), этот способ не подойдет.
Если при экспорте 1С выдает ошибку "Неверный формат файла", проверьте кодировку. Для XML рекомендуется использовать UTF-8 — ее можно задать в настройках выгрузки.
2. Использование обработки «Выгрузка данных в XML»
Для более гибкой настройки выгрузки в 1С предусмотрены специализированные обработки. Одна из самых универсальных — ВыгрузкаДанныхВXML.epf, которая идет в комплекте с типовыми конфигурациями (например, 1С:Бухгалтерия 3.0 или 1С:Управление торговлей 11).
Как ею воспользоваться:
- Откройте конфигуратор (
Файл → Конфигураторили нажмитеCtrl+Shift+F12). - Перейдите в
Файл → Открыть...и выберите обработкуВыгрузкаДанныхВXML.epf(обычно она лежит в каталоге шаблонов). - В открывшейся форме укажите:
- 📌 Источник данных (справочник, документ, регистр)
- 📌 Поля для выгрузки (можно выбрать только нужные)
- 📌 Имя корневого элемента (например,
<КаталогТоваров>) - 📌 Кодировку (рекомендуется
UTF-8)
Выгрузить и сохраните файл.⚠️ Внимание: если обработка отсутствует в вашей конфигурации, ее можно скачать с портала 1С:ИТС или из репозитория 1С-Рарус. Убедитесь, что версия обработки совместима с вашей платформой (8.2 или 8.3).
☑️ Подготовка к выгрузке через обработку
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), замените их на сущности: &, <, >.
4. Выгрузка через XDTO (для 1С 8.3 и новее)
Механизм XDTO (XML Data Transfer Objects) — это современный способ работы с XML в 1С 8.3, который обеспечивает валидацию структуры по XSD-схемам и упрощает интеграцию с веб-сервисами. Если вам нужно обмениваться данными с системами, требующими строгого соответствия схеме (например, Диадок, СБИС, или госуслуги), XDTO станет лучшим выбором.
Алгоритм выгрузки через XDTO:
- Создайте пакет XDTO в конфигураторе (
Файл → Новый → Пакет XDTO). - Импортируйте XSD-схему (если она есть) или опишите структуру вручную.
- Напишите код для заполнения объекта 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
Помимо данных, в 1С можно сохранить в XML саму конфигурацию (для резервного копирования или переноса на другой компьютер) или информационную базу (в формате .dt, но с возможностью конвертации в XML). Это полезно для:
- 🔄 Переноса изменений между базами
- 🛠️ Отката конфигурации после неудачного обновления
- 📦 Архивирования перед массовыми изменениями
Чтобы сохранить конфигурацию в XML:
- Откройте конфигуратор и перейдите в
Конфигурация → Сохранить конфигурацию в файл.... - Выберите формат
XML(илиCFдля бинарного формата). - Укажите путь и подтвердите сохранение.
🔹 Важно: файл конфигурации в XML может занимать в несколько раз больше места, чем бинарный .cf. Используйте этот формат только если нужно редактировать конфигурацию вручную (например, для массовой замены реквизитов).
Для резервного копирования базы лучше использовать формат .dt (или .zip при архивировании). XML подходит только для конфигураций и небольших выгрузок данных.
6. Автоматизация выгрузки XML через регламентные задания
Если XML-файлы нужно формировать регулярно (например, ежедневная выгрузка прайс-листа на сайт), удобно настроить регламентное задание. Это избавит от рутинных операций и снизит риск ошибок.
Как настроить автоматическую выгрузку:
- Создайте обработку (или используйте существующую), которая сохраняет данные в XML.
- В конфигураторе перейдите в
Администрирование → Регламентные задания. - Добавьте новое задание, укажите:
- 📅 Расписание (ежедневно, еженедельно и т.д.)
- 🖥️ Исполняемую обработку
- 📁 Путь для сохранения файла
⚠️ Внимание: при настройке автоматической выгрузки убедитесь, что:
- 🔹 У пользователя, под которым запускается задание, есть права на запись в указанную папку.
- 🔹 Папка не находится на сетевом диске, который может быть временно недоступен.
- 🔹 В обработке предусмотрена обработка ошибок (например, отправка уведомления администратору при сбое).
Типичные ошибки и как их избежать
Даже опытные пользователи 1С сталкиваются с проблемами при работе с XML. Вот самые распространенные ошибки и способы их решения:
- Ошибка: "Неверный формат файла" при открытии XML
🔹 Причина: неверная кодировка (например,
Windows-1251вместоUTF-8).🔹 Решение: явным образом укажите кодировку при сохранении:
ЗаписьXML.ОткрытьФайл("путь\к\файлу.xml", "UTF-8"); - Ошибка: "Несоответствие схеме XSD"
🔹 Причина: структура XML не соответствует ожидаемой (например, отсутствует обязательный элемент).
🔹 Решение: используйте XDTO с импортированной схемой или валидируйте XML перед отправкой через сервис XML Validator.
- Ошибка: "Файл не найден" при автоматической выгрузке
🔹 Причина: регламентное задание запускается под пользователем без прав на папку.
🔹 Решение: проверьте права доступа или сохраняйте файл в
%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. Алгоритм:
- Сформируйте XML без подписи.
- Добавьте блок
<Signature>с помощьюПодписаниеXML.ПодписатьФайл(). - Сохраните результат в новый файл.
Готовые обработки для ЭЦП можно найти на Инфостарт или 1С-Галэкс.
Почему при выгрузке в XML теряются русские буквы (вместо них знаки вопроса)?
Это проблема кодировки. Решения:
- 🔹 Явно укажите
UTF-8при открытии файла:ЗаписьXML.ОткрытьФайл(..., "UTF-8"). - 🔹 Если файл открывается в блокноте, используйте Notepad++ или VS Code — они корректно отображают UTF-8.
- 🔹 Проверьте настройки региональных стандартов в Windows (должна быть включена поддержка Unicode).