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

· 10 мин

Содержание

Готового пункта «Сохранить как XML» в карточке документа 1С нет. Выгрузку делают либо типовой обработкой Выгрузка и загрузка данных XML, либо через синхронизацию данных в формате EnterpriseData, либо коротким кодом на встроенном языке через СериализаторXDTO. Какой вариант выбрать — зависит от того, куда поедет файл: в такую же базу, в чужую программу или в руки программисту для разбора.

Ниже — все три способа с точными путями и проверенным примером кода, разбор массовой выгрузки нескольких документов сразу, типичные ошибки платформы и способ проверить, что XML получился корректным. Ориентируемся на 1С 8.3, интерфейс «Такси», типовые конфигурации (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) — но сам механизм XML один для всех конфигураций на управляемых формах.

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

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

  • 📤 перенос в другую базу 1С — когда данные нужно забрать из одной базы и загрузить в такую же или родственную конфигурацию;
  • 🔗 интеграция со сторонней системой — сайтом, складской программой, банковским сервисом, которые принимают данные тегами;
  • 🗄️ архив или выгрузка для аудитора — отдать документ в формате, не привязанном к конкретной версии 1С;
  • 🛠️ разбор проблемного документа — программист смотрит в тегах, какие именно значения реквизитов записаны в базе.

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

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

Какими способами выгрузить документ в XML

Прямой кнопки в документе нет, зато есть три рабочих механизма. Они решают разные задачи, поэтому выбор способа важнее, чем кажется.

СпособКогда применятьЧто нужно
Обработка Выгрузка и загрузка данных XMLПеренос в такую же или близкую конфигурациюФайл обработки с диска ИТС
Синхронизация в формате EnterpriseDataРегулярный обмен между типовыми конфигурациямиНастроенная синхронизация данных
Код на СериализаторXDTOРазовая или автоматизированная выгрузка под свою задачуДоступ к Конфигуратору или внешняя обработка

Если документ едет в чужую программу (не 1С), договаривайтесь о структуре заранее: универсальной выгрузки «понятной всем» не бывает, принимающая сторона должна знать, какие теги ждать. Для обмена между двумя базами 1С проще всего обработка Выгрузка и загрузка данных XML — она сама тянет за документом все связанные объекты (контрагента, номенклатуру, организацию), чтобы ссылки не «повисли».

Выгрузка документа типовой обработкой

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

Порядок действий:

  1. Включите команду «Все функции», если её не видно: Главное меню → Настройки → Параметры и поставьте галку Отображать команду "Все функции".
  2. Откройте файл обработки: Главное меню → Файл → Открыть и укажите ВыгрузкаЗагрузкаДанныхXML.epf.
  3. На закладке выгрузки в дереве метаданных найдите нужный документ (например, Документы → РеализацияТоваровУслуг).
  4. Отберите конкретные документы — по периоду или галками в списке, чтобы не выгружать всё подряд.
  5. Проверьте, что включена выгрузка по ссылкам — иначе в другой базе документ загрузится с пустыми реквизитами.
  6. Укажите имя файла, нажмите кнопку выгрузки. На выходе — один .xml со всеми отобранными объектами.

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

Открытие внешних обработок может быть запрещено настройками безопасности базы. Если Файл → Открыть не даёт запустить .epf, обратитесь к администратору — право на внешние обработки выдаётся в профилях безопасности, самостоятельно его обходить не нужно.

Выгрузка через синхронизацию и формат EnterpriseData

Когда обмен документами между базами нужен не разово, а постоянно, ручная обработка неудобна. Для этого в типовых конфигурациях есть синхронизация данных в универсальном формате EnterpriseData.

Путь к настройке: Администрирование → Синхронизация данных. Здесь создаётся настройка обмена, в которой вы указываете состав выгружаемых данных и расписание. Файлы выгрузки — это те же XML, но построенные по опубликованной схеме EnterpriseData, одинаковой для разных типовых конфигураций.

Чем EnterpriseData удобнее ручной обработки:

  • 🔄 выгружает только изменённые документы, а не всё заново;
  • 🧩 формат общий для Бухгалтерии, ЗУП, УТ и ERP — приёмник понимает отправителя без правил конвертации;
  • 📅 работает по расписанию через регламентное задание, без участия пользователя.

Минус — настройка сложнее: нужно задать правила отбора и сопоставить организации в обеих базах. Для единичной выгрузки одного документа это избыточно; EnterpriseData оправдан там, где документы идут потоком каждый день.

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

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

Массовая выгрузка нескольких документов за раз

Выгрузить сразу партию документов можно теми же механизмами — важно правильно задать отбор.

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

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

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

Чек-лист перед массовой выгрузкой:

Перед выгрузкой партии документов
Выполнено: 0 / 5

Программная выгрузка документа в XML

Когда выгрузку нужно встроить в свой алгоритм — по кнопке, по расписанию или с нестандартной структурой — пишут код на встроенном языке. Базовый инструмент сериализации объекта 1С в XML — глобальный объект СериализаторXDTO.

Минимальный рабочий пример — выгрузка одного документа по ссылке в файл:

// ДокументСсылка — ссылка на выгружаемый документ
ОбъектДокумента = ДокументСсылка.ПолучитьОбъект();

Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл("C:\Выгрузка\Документ.xml", "UTF-8");
СериализаторXDTO.ЗаписатьXML(Запись, ОбъектДокумента);
Запись.Закрыть();

Что здесь происходит по шагам:

  1. ПолучитьОбъект() читает из базы весь документ целиком — шапку и табличные части.
  2. ЗаписьXML открывает файл на диске в кодировке UTF-8.
  3. СериализаторXDTO.ЗаписатьXML превращает объект в набор тегов и пишет в файл.
  4. Закрыть() сбрасывает буфер на диск — без него файл останется пустым или обрежется.

Чтобы выгрузить несколько документов в один файл, оберните сериализацию в цикл по выборке, открыв запись один раз до цикла и закрыв после:

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ Ссылка ИЗ Документ.РеализацияТоваровУслуг
|ГДЕ Дата МЕЖДУ &Нач И &Кон";
Запрос.УстановитьПараметр("Нач", НачалоДня(ДатаНачала));
Запрос.УстановитьПараметр("Кон", КонецДня(ДатаКонца));
Выборка = Запрос.Выполнить().Выбрать();

Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл("C:\Выгрузка\Реализации.xml", "UTF-8");
Пока Выборка.Следующий() Цикл
    СериализаторXDTO.ЗаписатьXML(Запись, Выборка.Ссылка.ПолучитьОбъект());
КонецЦикла;
Запись.Закрыть();

Если нужна не запись в файл, а строка XML для отправки в веб-сервис, замените ЗаписьXML с файлом на ЗаписьXML, открытую в строку (Запись.УстановитьСтроку()), и после цикла заберите результат через Запись.Закрыть().

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

Такой код можно разместить во внешней обработке — тогда Конфигуратор не нужен, обработка открывается через Файл → Открыть как обычная. Для разовой выгрузки это быстрее, чем настраивать обмен.

Типичные ошибки при выгрузке XML и их решение

Чаще всего спотыкаются не на самой выгрузке, а на доступе к обработке и на кодировке файла.

Диагностика: выберите симптом

Отдельно про монопольный доступ: для выгрузки документов в XML он не нужен. Монопольный режим требуется только для обновления структуры базы, загрузки .dt и тестирования — обычная выгрузка данных идёт при работающих пользователях.

Как проверить, что XML получился корректным

Файл выгрузился — это ещё не гарантия, что он правильный. Быструю проверку делают в три приёма:

  1. Откройте XML в браузере. Любой браузер показывает дерево тегов. Если файл открылся без ошибки и видна структура с данными документа — XML синтаксически валиден. Если браузер пишет об ошибке разбора, файл битый (обрыв записи, лишние символы).
  2. Сверьте ключевые реквизиты. Найдите в тегах номер документа, дату, сумму, контрагента — убедитесь, что значения совпадают с тем, что в базе. Пустые теги по важным реквизитам означают, что данные не выгрузились.
  3. Выполните пробную загрузку. Для файлов межбазового обмена лучший тест — загрузить XML в тестовую копию приёмника той же обработкой. Прошло без ошибок ссылок — выгрузка полная.

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

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

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

Есть ли в карточке документа кнопка «Сохранить как XML»?
Нет. Отдельной команды экспорта в XML в форме документа не предусмотрено. Выгрузка делается типовой обработкой, синхронизацией данных или программно.
Можно ли выгрузить XML без Конфигуратора и программиста?
Да. Обработка Выгрузка и загрузка данных XML и синхронизация в формате EnterpriseData работают в режиме 1С:Предприятие, код писать не нужно.
Откроется ли XML из 1С в чужой программе автоматически?
Нет, если программа не настроена на этот формат. XML из типовой обработки понимает только 1С. Для сторонней системы нужна согласованная структура тегов или правила конвертации.
Нужны ли полные права для выгрузки в XML?
Для чтения и выгрузки документов нужны права на эти объекты и разрешение на открытие внешних обработок. Монопольный доступ к базе не требуется.
Чем отличается выгрузка в XML от сохранения в Excel?
XML сохраняет данные документа тегами для машинной загрузки в другую систему. Excel и PDF — это представление для человека: таблица или печатная форма, обратно в базу их загрузить нельзя.