Документ 1С в XML-файле: обработки обмена, электронные форматы и свой код

· 10 мин

Содержание

Чтобы выгрузить документ в формате XML из 1С 8.3, чаще всего хватает внешней обработки ВыгрузкаЗагрузкаДанныхXML83.epf: открываете её через Файл → Открыть, отмечаете вид документа и период, указываете имя файла и жмёте «Выгрузить данные». Получится XML, который загружается в базу с такой же конфигурацией.

Если файл нужен не для переноса между одинаковыми базами, а для налоговой, контрагента или другой программы, подходит иной путь: регламентированный отчёт, электронный документ в формате ФНС, обмен EnterpriseData или собственный код на ЗаписьXML. Ниже каждый способ разобран по шагам, с проверкой готового файла и разбором ошибок.

Какой способ выгрузки в XML выбрать

Один и тот же «документ в XML» означает четыре разные задачи. Сначала определите, кто будет читать файл.

Кто читает файлСпособФормат внутри
Другая база с той же конфигурациейВыгрузкаЗагрузкаДанныхXML83.epfСтандартная XML-сериализация платформы
База с другой конфигурациейСинхронизация через EnterpriseData или универсальный обмен по правиламEnterpriseData или формат правил конвертации
Налоговая, СФР, контрагент по ЭДОРегламентированный отчёт или электронный документУтверждённый XML-формат ФНС (XSD-схема)
Сайт, склад, самописная системаСвоя внешняя обработкаЛюбая структура, которую вы задали
Куда пойдёт ваш XML-файл?

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

Перед выгрузкой проверьте три вещи. Это займёт пару минут и снимет половину вопросов из раздела про ошибки.

Права пользователя. Внешние обработки открывает тот, у кого есть право на интерактивное открытие внешних обработок. В типовых конфигурациях на БСП оно входит в профиль «Администратор». Обычному бухгалтеру проще зарегистрировать обработку один раз как дополнительную, тогда права на открытие файлов не понадобятся.

Предупреждение безопасности. Платформа 8.3 при открытии внешнего файла показывает окно о возможной угрозе. Это штатная защита от опасных действий. Открывайте только обработки из известного источника и подтверждайте запуск.

Видимость команды «Все функции». Встроенные обработки БСП ищут через меню «Все функции». Включается оно так: Главное меню → Сервис → Параметры → Отображать команду "Все функции".

Порядок регистрации обработки в БП 3.0, ЗУП 3.1 и УТ 11 одинаковый:

  1. Откройте Администрирование → Печатные формы, отчеты и обработки.
  2. Включите флажок «Дополнительные отчеты и обработки» и перейдите по одноимённой ссылке.
  3. Нажмите «Добавить из файла» и выберите .epf.
  4. На вкладке размещения укажите разделы, где обработка появится, и пользователей с доступом.
  5. Нажмите «Записать и закрыть».

Обработка ВыгрузкаЗагрузкаДанныхXML83 создана для любых конфигураций и не содержит сведений о регистрации для БСП. Если «Добавить из файла» отказывается её принимать, открывайте её через Файл → Открыть под пользователем с правами администратора.

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

Обработка ВыгрузкаЗагрузкаДанныхXML83

Это служебная обработка фирмы 1С, она распространяется на диске ИТС и в составе материалов для разработчиков. Не путайте её с вариантом для 8.2: для 8.3 с управляемыми формами нужен файл с «83» в имени.

  1. Запустите базу в режиме «1С:Предприятие».
  2. Откройте Файл → Открыть и выберите ВыгрузкаЗагрузкаДанныхXML83.epf.
  3. На вкладке «Выгрузка» задайте период: дату начала и дату окончания.
  4. В дереве объектов раскройте ветку «Документы» и отметьте флажком нужный вид, например «Реализация (акт, накладная, УПД)».
  5. Нужен один конкретный документ? Сузьте период до его даты: в файл попадут только документы этого вида за выбранные дни.
  6. Укажите имя файла выгрузки, например D:\Obmen\realizaciya.xml.
  7. Нажмите «Выгрузить данные».

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

💡 На приёмной стороне та же обработка, вкладка «Загрузка». Перед загрузкой сделайте резервную копию: документы с теми же идентификаторами перезапишутся без вопросов.

Универсальный обмен по правилам конвертации

Когда конфигурации разные, нужна обработка «Универсальный обмен данными в формате XML». В типовых конфигурациях на БСП она встроена, найдите её через Все функции → Обработки. Отдельно она поставляется как V8Exchan83.epf вместе с конфигурацией «Конвертация данных » 2.x.

Работает она только с файлом правил обмена. Правила для пар типовых конфигураций есть в поставке, свои пишут в «Конвертации данных». В обработке на вкладке выгрузки указываете файл правил, период и имя XML-файла, затем выбираете, какие правила выгрузки включить.

Синхронизация в формате EnterpriseData

В БП 3.0, УТ 11, КА 2 и ERP обмен между разными программами идёт через формат EnterpriseData. Это XML с открытой схемой, его понимают типовые конфигурации и многие сторонние системы.

  1. Откройте Администрирование → Синхронизация данных.
  2. Включите флажок «Синхронизация данных».
  3. Создайте новую синхронизацию и выберите программу-приёмник из списка.
  4. В качестве транспорта укажите каталог на диске или FTP-ресурс.
  5. Настройте правила отправки: с какой даты и какие документы выгружать.
  6. Запустите синхронизацию. В каталоге появится XML-файл сообщения обмена, обычно в zip-архиве.

Выгрузка в XML из печатных форм и регламентированных отчётов

Почему печатная форма не сохраняется в XML

Печатная форма в 1С — табличный документ. В окне печати кнопка сохранения предлагает MXL, XLS, XLSX, ODS, PDF, DOCX, HTML и TXT. Отдельного формата XML среди них нет.

Если вам нужен XML «как в печатной форме», значит, на самом деле требуется электронный документ установленного формата или своя выгрузка. Переименовать HTML в .xml не получится: принимающая сторона ждёт конкретную структуру.

Электронные документы ФНС: УПД, счёт-фактура, акт

Счета-фактуры, УПД, товарные накладные и акты имеют утверждённые ФНС XML-форматы. В БП 3.0 и УТ 11 такой файл формирует подсистема ЭДО даже без подключённого оператора.

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

Файл открывается контрагентом в его учётной программе или загружается через «Загрузить из файла» в той же подсистеме.

Регламентированные отчёты

Декларации и расчёты выгружаются в XML прямо из формы отчёта.

  1. Откройте Отчеты → Регламентированные отчеты.
  2. Откройте нужный отчёт, например декларацию по НДС.
  3. Нажмите «Проверить», чтобы программа сверила контрольные соотношения и заполнение.
  4. Нажмите «Выгрузить» и выберите каталог.

Имя файла начинается с префикса формата, например NO_NDS. Кодировка — windows-1251, как требует ФНС. Пересохранять такой файл в другой кодировке нельзя.

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

Стандартная сериализация одной строкой кода

Платформа умеет записать объект целиком методом глобального контекста ЗаписатьXML. Получится тот же формат, что у обработки ВыгрузкаЗагрузкаДанныхXML83.

&НаСервереБезКонтекста
Процедура ВыгрузитьДокумент(Ссылка, ИмяФайла)
	Запись = Новый ЗаписьXML;
	Запись.ОткрытьФайл(ИмяФайла, "UTF-8");
	Запись.ЗаписатьОбъявлениеXML();
	ЗаписатьXML(Запись, Ссылка.ПолучитьОбъект());
	Запись.Закрыть();
КонецПроцедуры

Процедура выполняется на сервере. В клиент-серверной базе путь ИмяФайла указывает на диск сервера 1С, а не на компьютер пользователя.

Своя структура для сторонней программы

Обычно получателю нужен не служебный формат 1С, а простой и понятный файл: номер, дата, контрагент, строки товаров. Его собирают вручную методами ЗаписьXML.

&НаСервереБезКонтекста
Функция ДокументВСтрокуXML(Ссылка)
	Запись = Новый ЗаписьXML;
	Запись.УстановитьСтроку("UTF-8");
	Запись.ЗаписатьОбъявлениеXML();
	Запись.ЗаписатьНачалоЭлемента("Документ");
	Запись.ЗаписатьАтрибут("Номер", Ссылка.Номер);
	Запись.ЗаписатьАтрибут("Дата", XMLСтрока(Ссылка.Дата));
	Запись.ЗаписатьАтрибут("Контрагент", Строка(Ссылка.Контрагент));
	Запись.ЗаписатьНачалоЭлемента("Товары");
	Для Каждого СтрокаТЧ Из Ссылка.Товары Цикл
		Запись.ЗаписатьНачалоЭлемента("Строка");
		Запись.ЗаписатьАтрибут("Номенклатура", Строка(СтрокаТЧ.Номенклатура));
		Запись.ЗаписатьАтрибут("Количество", XMLСтрока(СтрокаТЧ.Количество));
		Запись.ЗаписатьАтрибут("Сумма", XMLСтрока(СтрокаТЧ.Сумма));
		Запись.ЗаписатьКонецЭлемента();
	КонецЦикла;
	Запись.ЗаписатьКонецЭлемента(); // Товары
	Запись.ЗаписатьКонецЭлемента(); // Документ
	Возврат Запись.Закрыть();
КонецФункции

Пример рассчитан на документ с табличной частью «Товары» и реквизитом «Контрагент», как у реализации в БП 3.0. Для другого документа поменяйте имена реквизитов на свои: их видно в конфигураторе в дереве метаданных.

Пояснения к коду:

  • 🔹 УстановитьСтроку пишет XML в память, а Закрыть() возвращает готовый текст. Его удобно передать на клиент и сохранить там, где выберет пользователь.
  • 🔹 XMLСтрока переводит дату и число в стандартный вид: дата станет 2026-10-07T00:00:00, дробная часть отделится точкой. Без неё в файл попадёт «1 250,50» с пробелом, и принимающая программа его не разберёт.
  • 🔹 Каждому ЗаписатьНачалоЭлемента нужен свой ЗаписатьКонецЭлемента. Пропуск даёт ошибку при закрытии или битый файл.

На клиенте текст сохраняют через ТекстовыйДокумент: создаёте объект, вызываете УстановитьТекст и записываете файл с кодировкой UTF-8.

Если получатель дал XSD-схему, загрузите её в «Пакеты XDTO» конфигурации или расширения и стройте объекты через ФабрикаXDTO. Тогда платформа сама не даст записать элемент, которого нет в схеме.

Где хранить свою выгрузку

Оформляйте код как внешнюю обработку или как расширение конфигурации . Правка типовой конфигурации ради выгрузки ломает автоматическое обновление . Расширение переживает обновления и подключается без снятия конфигурации с поддержки.

Как проверить сформированный XML-файл

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

  1. Откройте файл в браузере. Chrome, Firefox или Edge покажут дерево элементов. Если структура нарушена, браузер выведет ошибку разбора с номером строки.
  2. Посмотрите кодировку в первой строке: <?xml version="1.0" encoding="UTF-8"?> или windows-1251. Она должна совпадать с той, что ждёт получатель.
  3. Сверьте суммы и количество строк с документом в 1С. Пустой элемент «Товары» обычно значит, что выгружали непроведённый документ или неверное имя табличной части.
  4. Проверьте по XSD-схеме, если она есть. На Linux и в WSL это делает утилита xmllint:
xmllint --noout --schema schema.xsd document.xml

При успехе она напишет document.xml validates. Иначе покажет элемент, который не соответствует схеме.

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

Для отчётов ФНС достаточно кнопки «Проверить» в форме отчёта. Она проверяет и заполнение, и соответствие формату.

Ошибки при выгрузке документов в формат XML

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

Автоматическая выгрузка документов в XML по расписанию

Ручная выгрузка раз в месяц — нормально. Ежедневная — уже повод автоматизировать. Варианта три.

Расписание синхронизации. В настройке синхронизации данных включите автоматический запуск и задайте расписание, например каждые 30 минут в рабочее время. Это самый простой путь для обмена EnterpriseData или по правилам.

Регламентное задание в расширении. Добавьте в расширение регламентное задание и общий модуль с процедурой выгрузки. Расписание редактируется в Администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания. В клиент-серверной базе задания выполняет сервер 1С, пользователь может быть не в программе.

Пакетный запуск из Планировщика заданий Windows. Для файловой базы годится bat-файл, который открывает базу и сразу выполняет внешнюю обработку:

"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F"D:\Bases\Buh" /N"Obmen" /P"пароль" /Execute"D:\Obmen\VygruzkaXML.epf"

Обработка должна сама выполнить выгрузку при открытии формы и завершить работу программы методом ЗавершитьРаботуСистемы(Ложь).

Пароль в bat-файле лежит открытым текстом. Заведите под выгрузку отдельного пользователя только с нужными правами и закройте папку со скриптом от посторонних.

Сеанс такого пользователя занимает лицензию на время работы. Ставьте запуск на время, когда лицензий заведомо хватает, например на раннее утро.

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

Можно ли выгрузить в XML сразу все документы за месяц?
Да. В обработке ВыгрузкаЗагрузкаДанныхXML83 задайте период с первого по последнее число месяца и отметьте нужные виды документов. Все они попадут в один файл.
Перенесутся ли проводки вместе с документом?
Обработка ВыгрузкаЗагрузкаДанныхXML83 умеет выгружать и наборы записей регистров, их отмечают в дереве отдельно. При загрузке через EnterpriseData документ создаётся заново, а движения формирует проведение уже в базе-приёмнике.
Чем XML отличается от выгрузки в формате 1С:Предприятие (.dt)?
Файл .dt — это вся база целиком, его загружают только в конфигураторе с заменой всех данных. XML переносит выбранные документы и справочники в работающую базу, не трогая остальное.
Подходит ли такой XML для загрузки в банк?
Нет. Платёжные поручения в банк выгружаются в текстовом формате обмена с клиент-банком через обработку обмена с банком. XML-файл для банка формируют только по особому формату, который даёт сам банк.
Можно ли открыть выгруженный XML в Excel?
Можно, Excel предложит вывести его как таблицу. Для просмотра этого хватает. Вносить правки и сохранять обратно не стоит: Excel меняет структуру, и 1С файл не загрузит.