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

Справочники и Данные · 11 мин

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

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

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

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

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

Какие способы сохранения в XML есть в 1С

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

  • Универсальный обмен данными в формате XML — перенос справочников и документов между базами по правилам конвертации. Подходит для миграций и синхронизаций.
  • Выгрузка/загрузка данных XML — перенос данных между идентичными конфигурациями (например, копирование справочников из рабочей базы в тестовую).
  • Типовые форматы обмена — CommerceML (обмен с сайтом), EnterpriseData, обмен с банками и ЭДО. Файл формируется по строгой схеме.
  • Планы обмена — регулярная автоматическая синхронизация между базами, XML-файл создаётся как транспорт.
  • Программная запись — объект ЗаписьXML в коде для произвольной структуры файла.

Сравнение способов выгрузки

Универсальный обмен данными

Подходит для переноса между разными конфигурациями по правилам; требует настройки правил конвертации

Выгрузка/загрузка данных XML

Быстро и просто, но базы должны иметь идентичную структуру конфигурации

Типовой обмен (CommerceML, ЭДО)

Готовый формат для сайта или контрагента; структуру файла изменить нельзя

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

Полная свобода структуры; требует навыков программирования на встроенном языке

Как сохранить данные через «Универсальный обмен данными в формате XML»

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

Порядок выгрузки
  1. 1
    Откройте обработку «Универсальный обмен данными в формате XML»
  2. 2
    На закладке «Выгружаемые данные» загрузите правила обмена (файл правил конвертации для вашей пары конфигураций)
  3. 3
    Отметьте галочками нужные объекты: справочники, документы, регистры
  4. 4
    Установите отбор по периоду и при необходимости по организации
  5. 5
    Укажите путь и имя файла выгрузки, например C:\Обмен\выгрузка.xml
  6. 6
    Нажмите «Выгрузить данные» и дождитесь сообщения о завершении

Обратите внимание на поле «Имя файла правил обмена». Без корректных правил конвертации выгрузка либо не запустится, либо создаст файл, который приёмная база не поймёт. Правила для типовых пар конфигураций поставляются в комплекте обновлений или создаются в «1С:Конвертация данных».

Признак успешной выгрузки — в окне сообщений нет ошибок, а в конце журнала указано количество выгруженных объектов. Если объектов выгружено ноль, проверьте отборы: чаще всего «съедает» данные ограничение по дате или по организации.

Как выгрузить данные между идентичными базами

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

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

Как сохранить данные для обмена с сайтом или контрагентом

Выгрузка номенклатуры в CommerceML

Для интернет-магазинов в «1С:Управление торговлей» и «1С:Комплексная автоматизация» есть типовой обмен с сайтом: раздел «CRM и маркетинг» или «Администрирование» → «Обмен с сайтами». При настройке узла обмена укажите вариант «Выгрузка в каталог на диске» вместо прямого подключения к сайту — тогда 1С сформирует XML-файлы (обычно import.xml с товарами и offers.xml с ценами и остатками) в указанной папке.

Документы для ЭДО и контрагентов

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

Как сохранить XML программно

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

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

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

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

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

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

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

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

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

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

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

КонецЦикла;

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

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

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

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

Если файл формируется на сервере 1С, путь C:\Обмен\ указывает на диск сервера, а не вашего компьютера. В клиент-серверном режиме сохраняйте файл во временный каталог и передавайте на клиент через хранилище значений или временное хранилище.
ПЗ
Практическое замечание

Как проверить, что XML-файл корректен

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

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

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

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

Отображается древовидная структура тегов без сообщений об ошибке разбора

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

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

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

Русские буквы читаемы, в объявлении XML указано encoding="UTF-8"

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

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

Содержимое
Норма

В файле присутствуют ожидаемые объекты и их количество соответствует отбору

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

Файл почти пустой или содержит только заголовок — сработал слишком узкий отбор

Загрузка в приёмник
Норма

Тестовая загрузка в копию базы проходит без ошибок

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

Ошибки формата или «объект не найден» — несовпадение версий конфигураций или правил

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

Типичные ошибки и ограничения

Типичные ошибки
01
Выгрузка без правил конвертации или с правилами от другой версии конфигурации — файл создаётся, но не загружается в приёмник
02
Забытый отбор по периоду — выгружаются все документы за всё время, файл раздувается до сотен мегабайт и обмен занимает часы
03
Выгрузка только документов без связанных справочников — в базе-приёмнике появляются битые ссылки «Объект не найден»
04
Ручное редактирование регламентированных файлов (УПД, ЭДО) — документ отклоняется форматным контролем
05
Запись файла в кодировке по умолчанию — внешняя система получает нечитаемые символы
06
Попытка загрузить файл в базу с другой версией конфигурации — ошибки несоответствия структуры метаданных

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

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

Как выбрать действие

Нужно перенести данные между разными конфигурациямиИспользуйте «Универсальный обмен данными в формате XML» с правилами конвертации для вашей пары конфигураций
Базы идентичны, нужно быстро скопировать справочники или документыВозьмите обработку «Выгрузка и загрузка данных XML» с включённой выгрузкой по ссылкам
Нужен файл для сайта, банка или контрагентаИспользуйте типовой обмен соответствующего формата — CommerceML, банковский обмен или ЭДО
Внешняя система требует собственную структуру XMLПишите выгрузку программно через ЗаписьXML с кодировкой UTF-8
Нужен регулярный автоматический обмен между базамиНастройте план обмена вместо ручных выгрузок

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

Чем открыть XML-файл, выгруженный из 1С?

Любым браузером (Chrome, Edge, Firefox) — он покажет древовидную структуру, либо текстовым редактором вроде Notepad++. Для просмотра больших файлов браузер удобнее, для поиска и правок — редактор. Специальных программ не требуется.

Почему выгруженный файл пустой или почти пустой?

Чаще всего сработали отборы: неверный период, отбор по организации или по складу. Также проверьте, что в правилах обмена отмечены галочками нужные объекты. Откройте обработку заново и снимите все отборы для теста — если данные появились, сужайте отбор постепенно.

Можно ли из XML загрузить данные обратно в 1С?

Да, но только той же обработкой, которой файл создавался, и в базу с совместимой конфигурацией. Файл универсального обмена загружается через ту же обработку на закладке «Загрузка». Файлы CommerceML и регламентированных документов в 1С назад не загружаются — они предназначены для внешних систем.

Какой размер файла считается нормальным?

Зависит от объёма данных: тысяча элементов справочника — обычно единицы мегабайт, документы за год в активной базе — десятки или сотни мегабайт. Если файл подозрительно велик, разбейте выгрузку по периодам; если подозрительно мал — проверьте отборы.

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

Файл .dt — это полная копия всей информационной базы, которую можно развернуть только как новую базу целиком. XML содержит отдельные выбранные данные и загружается внутрь существующей базы без её замены. Для резервного копирования используют .dt, для обмена данными — XML.

Итог

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

Способ сохранения в XML выбирается под задачу: универсальный обмен — для миграций между конфигурациями, выгрузка/загрузка XML — для идентичных баз, типовые форматы — для сайта и ЭДО, ЗаписьXML — для произвольной структуры. Всегда проверяйте отборы, кодировку UTF-8 и тестируйте загрузку на копии базы, сделав перед этим резервную копию.