К статье
Практический материал

Администрирование · 10 мин

Как сохранить данные в формате XML в 1С

Как сохранить данные в формате XML в 1С: выгрузка через обработку, выгрузку/загрузку базы, сохранение печатных форм и программный код. Пошаговые инструкции и ошибки.

Формат XML в 1С используется для нескольких разных задач: перенос данных между базами, обмен с банками и контрагентами, выгрузка отчётности в контролирующие органы, резервное копирование конфигурации и обмен между идентичными конфигурациями. Способ сохранения зависит от того, что именно нужно получить: копию всей базы, конкретный документ, справочник или файл по строгому формату обмена.

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

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

Выгрузка всей базы через конфигуратор

Самый радикальный способ — выгрузка информационной базы целиком. В конфигураторе откройте меню «Администрирование» → «Выгрузить информационную базу» и укажите файл с расширением .dt. Это не «чистый» XML, а архив, внутри которого данные и структура базы сохранены в XML-подобном формате платформы. Такой файл подходит для резервной копии и переноса базы на другой сервер, но его нельзя открыть сторонней программой как обычный XML-документ.

Для выгрузки нужны права администратора и монопольный доступ к базе: все пользователи должны завершить работу. В клиент-серверном варианте выгрузка выполняется без монопольного режима, но занимает заметное время на больших базах. Перед выгрузкой убедитесь, что на диске достаточно свободного места — файл .dt может быть сопоставим по размеру с самой базой.

Перенос данных между идентичными конфигурациями

Если нужно перенести документы, справочники или регистры из одной базы в другую с той же конфигурацией, используется типовая обработка «Выгрузка и загрузка данных XML». Она входит в состав диска ИТС и часто встроена в типовые решения (раздел «Администрирование» → «Обмен данными» или подключается как внешняя обработка через «Файл» → «Открыть»).

Порядок работы: откройте обработку, на закладке «Выгрузка» отметьте галочками нужные объекты метаданных (например, справочник «Номенклатура» и документы за период), при необходимости задайте отбор по периоду, укажите имя файла и нажмите «Выгрузить данные». Обработка сформирует XML-файл, который затем загружается в базу-приёмник на закладке «Загрузка».

Порядок действий
  1. 1
    Откройте обработку «Выгрузка и загрузка данных XML» в базе-источнике
  2. 2
    Отметьте объекты для выгрузки и задайте отбор по периоду при необходимости
  3. 3
    Укажите путь и имя XML-файла, запустите выгрузку
  4. 4
    В базе-приёмнике откройте ту же обработку, перейдите на закладку «Загрузка»
  5. 5
    Выберите файл и выполните загрузку, затем проверьте количество объектов

Ключевое ограничение: конфигурации источника и приёмника должны совпадать по структуре объектов, иначе часть данных не загрузится или загрузится с ошибками. Перед загрузкой в рабочую базу обязательно сделайте копию — операция необратима.

Обмен через планы обмена и универсальный формат

Для регулярного обмена между разными конфигурациями (например, между «Управлением торговлей» и «Бухгалтерией») ручная выгрузка не подходит — используются планы обмена. В типовых конфигурациях настройка находится в разделе «Администрирование» → «Синхронизация данных». При настройке выбирается формат обмена: типовой формат конфигурации или универсальный EnterpriseData.

После настройки синхронизации программа сама формирует XML-файл сообщения обмена при выгрузке и помещает его в указанный каталог, на FTP или передаёт напрямую. Файл можно открыть и посмотреть: внутри — структурированное описание объектов в соответствии с форматом. Если файл нужно сохранить вручную, в настройках синхронизации выберите вариант обмена «через каталог» и заберите файл из папки.

Преимущество плана обмена — регистрация изменений: выгружаются только новые и изменённые объекты, а не вся база. Это снижает объём файлов и время обмена. Недостаток — первичная настройка требует аккуратности: ошибки в правилах регистрации приводят к потере части данных при обмене.

Сохранение отчётности и документов в XML

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

Электронные документы (счета-фактуры, УПД, акты) выгружаются в XML через механизм электронного документооборота: в карточке документа есть команды «Выгрузить» или «Сохранить файл». Формат файла соответствует утверждённым форматам электронных документов, и его можно передать контрагенту или загрузить в оператора ЭДО.

Табличные документы (печатные формы, произвольные отчёты) можно сохранить через «Файл» → «Сохранить как», выбрав тип файла. Прямого варианта «XML» в списке форматов табличного документа обычно нет — доступны MXL, Excel, PDF, HTML. Если нужен именно XML произвольной структуры, используется программный способ.

Программная запись XML встроенным языком

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

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

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

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

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

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

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

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

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

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

Запись.ЗаписатьКонецЭлемента(); // Товар

КонецЦикла;

Запись.ЗаписатьКонецЭлемента(); // Номенклатура

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

Три правила безопасного кода: всегда закрывайте запись методом Закрыть() (иначе файл останется пустым или обрезанным), явно указывайте кодировку (для обмена с внешними системами чаще всего нужна UTF-8) и преобразовывайте значения в строку явно, особенно даты и числа — формат по умолчанию может не совпасть с ожиданиями принимающей системы.

Для сериализации объектов «как есть» используется объект СериализаторXDTO: он записывает ссылочные объекты в XML по модели XDTO с сохранением всех реквизитов. Это удобно для технических выгрузок, но файл привязан к структуре конфигурации.

bsl
Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл("C:\data.xml", "UTF-8");
Запись.ЗаписатьОбъявлениеXML();
Запись.ЗаписатьНачалоЭлемента("Данные");
Запись.ЗаписатьТекст("значение");
Запись.ЗаписатьКонецЭлемента();
Запись.Закрыть();

Проверка результата и типичные ошибки

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

Контрольные точки

Как проверить результат

Файл открывается в браузере
Норма

Отображается дерево элементов

Тревожный признак

Ошибка разбора XML — файл повреждён или запись не закрыта

Кодировка
Норма

Кириллица читается корректно

Тревожный признак

Кракозябры — несовпадение кодировки записи и объявления

Количество объектов
Норма

Совпадает с отбором при выгрузке

Тревожный признак

Часть объектов отсутствует — проверьте отбор и права

Типичные ошибки
01
Загрузка XML в базу с другой структурой конфигурации — объекты не находятся, данные теряются
02
Незакрытый объект ЗаписьXML — файл пустой или обрезанный, потому что буфер не сброшен на диск
03
Выгрузка без резервной копии перед загрузкой — при ошибке откатить изменения невозможно
04
Неверная кодировка — принимающая система не читает русские символы
05
Выгрузка отчётности в устаревшем формате — файл отклоняется при приёме

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

Маршрут решения

Как выбрать способ

Нужна копия всей базы или перенос на другой серверВыгрузка информационной базы через конфигуратор (.dt)
Разовый перенос данных между одинаковыми конфигурациямиОбработка «Выгрузка и загрузка данных XML»
Регулярный обмен между разными конфигурациямиНастройка синхронизации данных через план обмена
Сдача отчётности или электронные документыКоманды «Выгрузить» в отчёте или документе
Нужна произвольная структура файла или выгрузка по расписаниюПрограммная запись через ЗаписьXML

Частые вопросы

Чем файл .dt отличается от XML-файла выгрузки?

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

Можно ли открыть XML-выгрузку 1С в Excel?

Технически Excel умеет открывать XML-файлы, но структура выгрузки 1С (сериализация объектов) плохо ложится на таблицу. Для анализа в Excel лучше выгружать данные через табличный документ (сохранение в формат Excel) или формировать CSV.

Почему после загрузки XML часть документов не появилась?

Частые причины: конфигурации источника и приёмника различаются, документы ссылаются на справочники, которые не были выгружены, или при загрузке возникли ошибки, которые видны в окне сообщений. Загружайте сначала справочники, затем документы, и проверяйте протокол загрузки.

Какую кодировку выбрать при записи XML?

Для обмена с внешними системами стандарт — UTF-8. Кодировка указывается при открытии файла в ЗаписьXML и должна совпадать с объявлением в заголовке документа. Если принимающая система требует windows-1251, укажите её явно.

Можно ли настроить автоматическую выгрузку в XML по расписанию?

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

Как выгрузить в XML только документы за конкретный период?

В обработке «Выгрузка и загрузка данных XML» при отметке объектов задайте отбор по периоду для документов. При программной выгрузке добавьте условие по дате в запрос или проверку внутри цикла выборки.

Итог

Что важно запомнить

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