Документы и Печать · 10 мин
Как вывести XML из 1С: способы выгрузки данных
Как вывести XML из 1С: выгрузка документов, справочников и базы через встроенные обработки, обмен данными и код. Разбор ошибок и проверка результата.
XML — основной формат обмена данными в экосистеме 1С: через него переносят документы между базами, отправляют отчётность в контролирующие органы, обмениваются каталогами с сайтами и маркетплейсами. Вывести XML из 1С можно несколькими способами: штатной кнопкой в документе, типовой обработкой выгрузки, механизмом обмена между конфигурациями или программно через встроенный язык.
Выбор способа зависит от задачи. Если нужен один файл по конкретному документу — достаточно кнопки «Выгрузить» в форме. Если требуется перенести массив данных между двумя базами 1С — используют универсальный обмен данными в формате XML (обработка с диска ИТС или встроенную). Для интеграции с внешними системами пишут собственную выгрузку средствами XDTO или последовательной записи XML.
Перед любой массовой выгрузкой сделайте резервную копию базы и проверьте результат на небольшой выборке: ошибка в настройках может привести к неполным или повреждённым файлам, которые примут за эталон при последующей загрузке.
Какие данные можно вывести в XML и зачем это нужно
Из 1С в XML выгружают практически всё: документы (реализации, счета-фактуры, заказы), справочники (номенклатура, контрагенты), регистры сведений, планы обмена и даже всю базу целиком в виде образа для переноса. Типовые сценарии — отправка электронных документов контрагентам, выгрузка товарного каталога на сайт, передача отчётности, миграция между конфигурациями.
Важно понимать, что существует несколько разных «форматов XML» внутри 1С. Формат EnterpriseData используется для обмена между прикладными решениями 1С и внешними системами. Формат обмена данными (правила конвертации) применяется в универсальной выгрузке между базами. Отчётность выгружается в XML по форматам ФНС, которые описаны отдельными XSD-схемами. Файл, выгруженный одним способом, обычно не подходит для загрузки другим механизмом.
Выгрузка XML кнопкой из формы документа или отчёта
Самый быстрый способ — штатная выгрузка из интерфейса. Во многих документах и отчётах (например, счёт-фактура, декларация, карточка электронного документа) есть команда «Выгрузить» в меню «Ещё». Система сформирует XML-файл в нужном формате и предложит сохранить его на диск.
Для регламентированной отчётности порядок такой: откройте нужный отчёт в разделе «Отчётность, справки → 1С-Отчётность», заполните и проверьте его, затем нажмите «Выгрузить». Программа проверит файл по контрольным соотношениям и сохранит XML с именем, соответствующим требованиям ФНС. Переименовывать такой файл вручную нельзя — приёмная система может его отклонить.
- 1Откройте документ или отчёт, который нужно выгрузить
- 2Нажмите «Ещё» и найдите команду «Выгрузить» или «Выгрузить в XML»
- 3При необходимости укажите период, организацию и параметры формата
- 4Выберите папку сохранения и подтвердите
- 5Откройте файл в текстовом редакторе и убедитесь, что он начинается с объявления XML и содержит данные
Универсальный обмен данными в формате XML
Для переноса данных между двумя базами 1С используют обработку «Универсальный обмен данными в формате XML». В типовых конфигурациях она вызывается из раздела синхронизации данных, а также доступна как внешняя обработка с диска ИТС. Механизм работает по правилам конвертации: вы загружаете файл правил, выбираете объекты и период, указываете имя файла выгрузки.
Ключевые настройки: отбор по организации и периоду, список выгружаемых объектов (можно выгрузить только документы определённого вида), режим выгрузки ссылок. Если выгружать «всё со всеми ссылками», файл может получиться очень большим — выгрузка займёт заметное время, а файл в несколько гигабайт сложно передать и загрузить. Разумнее ограничивать состав данных реальной потребностью.
После выгрузки обработка показывает статистику: сколько объектов выгружено, были ли ошибки. Сохраните протокол — по нему удобно искать объекты, которые не выгрузились из-за отсутствия правил или ошибок в данных.
Выгрузка через планы обмена и EnterpriseData
Если обмен с внешней системой регулярный, разовые выгрузки неудобны. В типовых конфигурациях есть планы обмена: с сайтом (CommerceML), с другими программами 1С, с мобильными приложениями. При настройке узла обмена 1С автоматически регистрирует изменения и формирует XML-сообщения в формате EnterpriseData или CommerceML.
Настройка делается через «Администрирование → Синхронизация данных»: выбирается вид обмена, указывается каталог или способ передачи файлов, задаётся расписание. Дальше XML-файлы формируются автоматически при каждом сеансе обмена. Этот способ требует начальной настройки, но избавляет от ручных операций.
Программная выгрузка XML средствами встроенного языка
Когда типовые механизмы не подходят — нужен свой формат, особая структура тегов, интеграция с нестандартной системой — выгрузку пишут кодом. Есть два основных подхода: последовательная запись через объект ЗаписьXML и сериализация через XDTO.
Объект ЗаписьXML подходит для произвольной структуры: вы вручную открываете элементы, пишете атрибуты и значения. Это гибко, но требует аккуратности — незакрытый тег сделает файл невалидным. XDTO удобнее, когда есть схема (XSD): вы описываете пакет, заполняете объекты и сериализуете их в XML одной командой, а платформа сама следит за структурой.
Минимальный пример последовательной записи:
Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл("C:\Export\goods.xml");
Запись.ЗаписатьОбъявлениеXML();
Запись.ЗаписатьНачалоЭлемента("Товары");
Пока Выборка.Следующий() Цикл
Запись.ЗаписатьНачалоЭлемента("Товар");
Запись.ЗаписатьАтрибут("Код", Выборка.Код);
Запись.ЗаписатьТекст(Выборка.Наименование);
Запись.ЗаписатьКонецЭлемента();
КонецЦикла;
Запись.ЗаписатьКонецЭлемента();
Запись.Закрыть();Для разовой задачи такой код можно выполнить через внешнюю обработку или консоль кода, не изменяя конфигурацию. Для постоянной интеграции выгрузку оформляют как регламентное задание или HTTP-сервис.
Проверка результата и типичные ошибки
После выгрузки файл нужно проверить до передачи получателю. Минимальная проверка — открыть XML в браузере или редакторе: если структура нарушена, браузер покажет ошибку разбора с номером строки. Далее сверьте содержимое: совпадает ли количество документов, корректны ли даты, суммы и коды, нет ли обрезанных наименований.
Для файлов по официальным форматам (ФНС, CommerceML) используйте проверку по XSD-схеме — многие приёмные системы предоставляют такие валидаторы. В самой 1С загрузку файла можно проверить на копии базы: если данные загружаются без ошибок и свёртки сходятся по суммам, выгрузка корректна.
Как проверить результат
Структура отображается деревом без сообщений об ошибке разбора
Браузер показывает ошибку XML с указанием строки
Число записей в файле совпадает с количеством выгружаемых документов в базе
В файле заметно меньше записей, чем ожидалось
Русские наименования читаются корректно
Вместо текста знаки вопроса или нечитаемые символы
Файл загружается в тестовую базу без ошибок, суммы сходятся
Ошибки формата или дубли объектов при загрузке
Какой способ выбрать под вашу задачу
Единого «правильного» способа нет — ориентируйтесь на частоту обмена, формат получателя и объём данных. Разовая выгрузка одного документа не требует ничего, кроме кнопки в форме. Регулярный обмен между базами 1С надёжнее всего строить на планах обмена. Нестандартный формат для внешней системы почти всегда означает программную выгрузку.
Сравнение способов выгрузки
Подходит для разовой выгрузки документов и отчётности. Не требует настройки, но состав данных фиксирован типовым форматом.
Для переноса данных между базами 1С по правилам конвертации. Гибкие отборы, но нужны актуальные правила обмена.
Для регулярной автоматической синхронизации. Требует первоначальной настройки узлов обмена.
Для нестандартных форматов и интеграций. Полный контроль над структурой, но нужны навыки разработки и тестирование.
Что важно запомнить
Для разовой выгрузки используйте штатную кнопку «Выгрузить», для переноса между базами — универсальный обмен данными XML, для регулярных обменов — планы обмена, для нестандартных форматов — программную запись. Перед массовой выгрузкой делайте копию базы, а результат проверяйте на валидность, полноту и кодировку.
Частые вопросы
Можно ли выгрузить XML из 1С без прав администратора?
Да, если речь о штатной выгрузке документа или отчёта — достаточно прав на просмотр объекта и доступ к команде «Выгрузить». Для универсального обмена данными и настройки планов обмена обычно требуются права на администрирование обмена или полные права.
Чем открыть и посмотреть выгруженный XML-файл?
Любой современный браузер покажет структуру файла в виде дерева. Для редактирования удобнее редакторы с подсветкой синтаксиса, например Notepad++. Открывать XML в Excel можно, но он может изменить представление данных, поэтому для проверки лучше браузер.
Почему получатель не может загрузить мой XML-файл?
Чаще всего причины три: файл выгружен не в том формате (например, формат обмена 1С вместо ожидаемого CommerceML), нарушена кодировка или структура не соответствует XSD-схеме получателя. Уточните у получателя точный формат и версию схемы, затем сверьте свой файл валидатором.
Как выгрузить в XML весь справочник номенклатуры?
В типовых конфигурациях используйте обработку «Универсальный обмен данными в формате XML» с отбором по виду объекта «Справочник.Номенклатура». Альтернатива — типовая выгрузка каталога на сайт (CommerceML) через настройку обмена с сайтом, где можно выбрать нужные группы товаров.
XML-файл получился очень большим. Как уменьшить?
Ограничьте выгрузку периодом, организацией и списком объектов, отключите выгрузку связанных данных, которые уже есть у получателя. Готовый файл можно сжать в ZIP — большинство приёмных систем и обработок 1С принимают архивы, а XML сжимается очень эффективно.
Можно ли настроить автоматическую выгрузку XML по расписанию?
Да. В файловой базе используют план обмена с настройкой расписания синхронизации или внешнее регламентное задание через запуск 1С в пакетном режиме. В клиент-серверном варианте создают регламентное задание, которое формирует XML и сохраняет его в сетевой каталог или отправляет по API.