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

Мы рассмотрим все актуальные методы — от простого сохранения через интерфейс до автоматизации с помощью скриптов. Особое внимание уделим нуансам формирования XML для ФНС, где структура файла должна строго соответствовать требованиям приказа №ЕД-7-26/456@ (актуально для сдачи деклараций и первичных документов). Если вы ранее сталкивались с ошибками при экспорте — здесь найдёте решения типичных проблем.

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

1. Сохранение документа в XML через стандартный интерфейс 1С

Самый простой способ — использовать встроенные возможности программы. Он подходит для разовых операций, когда нужно экспортировать 1–2 документа без автоматизации. Рассмотрим процесс на примере 1С:Бухгалтерия 3.0:

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

  • 📄 Для бухгалтерских документов: XML формируется по шаблону ФНС (подходит для сдачи отчётности через операторов ЭДО).
  • 📦 Для торговых документов: структура зависит от конфигурации (может потребоваться доработка для интеграции с МойСклад или Bitrix24).
  • ⚙️ Для универсальных документов: используется упрощённая схема без привязки к госстандартам.

Если в списке форматов нет XML, значит:

⚠️ Внимание: Ваша конфигурация не поддерживает прямой экспорт в XML. Это типично для сильно кастомизированных решений или устаревших версий. В этом случае используйте методы из следующих разделов (внешние обработки или программный код).
📊 Как часто вам нужно экспортировать документы из 1С в XML?
Ежедневно
Несколько раз в неделю
Раз в месяц
Реже
Никогда

2. Использование внешних обработок для выгрузки в XML

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

Где взять обработку:

  • 🔍 Инфостарт: [https://infostart.ru](https://infostart.ru) — крупнейшая база обработок (бесплатные и платные варианты). Ищите по запросу «выгрузка XML для [ваш документ]».
  • 📂 1С:ИТС: в разделе «Обмен данными» могут быть типовые решения для вашей отрасли.
  • 💼 От партнёров 1С: некоторые фирмы-франчайзи разрабатывают обработки под специфические задачи (например, для обмена с Диадок или Контур.Диадок).

Как подключить обработку:

  1. Скачайте файл с расширением .epf или .erf.
  2. В 1С перейдите в Файл → Открыть и выберите скачанный файл.
  3. В открывшемся окне обработки укажите параметры выгрузки (какие документы, период, путь сохранения).
  4. Нажмите Выгрузить — файл XML будет сформирован по заданным правилам.

Преимущества метода:

Универсальность (работает в любой конфигурации 1С 8.3)|Не требует изменений в базе|Можно настроить под специфические требования (например, для ФСС или ПФР)|Поддерживает пакетную выгрузку-->

Однако будьте осторожны с обработками от неизвестных авторов — они могут содержать вредоносный код. Перед использованием проверьте файл антивирусом и, по возможности, в песочнице.

3. Программный экспорт в XML через встроенный язык 1С

Для разработчиков и опытных пользователей самый гибкий способ — написать собственный код на встроенном языке. Это позволяет:

  • 🎯 Точно контролировать структуру XML (например, для интеграции с 1С:EDT или SAP).
  • 🔄 Автоматизировать выгрузку по расписанию.
  • 🔧 Добавлять дополнительную логику (например, шифрование или подпись файла).

Пример кода для выгрузки документа РеализацияТоваровУслуг в XML:

Процедура ВыгрузитьВXML(Документ, ПутьКФайлу)

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

ЗаписьXML.ОткрытьФайл(ПутьКФайлу);

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

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

ЗаписьXML.ЗаписатьАтрибут("Тип", Документ.Метаданные().Имя);

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

ЗаписьXML.ЗаписатьАтрибут("Дата", Формат(Документ.Дата, "ДЛФ=DT"));

// Выгрузка табличной части

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

Для Каждого Строка Из Документ.Товары Цикл

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

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

ЗаписьXML.ЗаписатьАтрибут("Количество", Строка.Количество);

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

КонецЦикла;

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

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

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

КонецПроцедуры

Чтобы использовать этот код:

  1. Откройте конфигуратор (Файл → Конфигуратор).
  2. Создайте новую обработку (Объект → Новая обработка).
  3. Вставьте код в модуль обработки.
  4. Запустите в режиме 1С:Предприятие и укажите документ для выгрузки.
⚠️ Внимание: При работе с XML для госорганов (например, декларации по НДС) нельзя использовать произвольные теги. Структура файла должна строго соответствовать требованиям ФНС. В противном случае файл не пройдёт проверку в системе ЭДО.
💡

Если вам нужно выгружать документы регулярно, сохраните обработку с кодом в каталог ExtForms вашей базы. Так она будет всегда под рукой в меню Файл → Открыть.

4. Выгрузка через механизм обмена данными (Универсальный формат)

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

  • 🔄 Переноса данных между базами 1С (например, при миграции с 1С:УТ 10.3 на 1С:ERP 2.5).
  • 📤 Интеграции с другими системами (если они поддерживают этот формат).
  • 📦 Архивирования документов с возможностью последующего восстановления.

Пошаговая инструкция:

  1. Откройте список документов (например, Реализация товаров).
  2. Выделите нужные документы (можно использовать фильтр по дате или контрагенту).
  3. Нажмите Ещё → Выгрузить данные (или Сервис → Обмен данными → Выгрузить в старых версиях).
  4. В окне выгрузки выберите формат XML (EnterpriseData).
  5. Укажите путь для сохранения и нажмите Выгрузить.

Особенности формата EnterpriseData:

Характеристика Описание
Структура файла Иерархическая, с сохранением всех справочников и регистров
Размер файла Может быть значительным при выгрузке больших объёмов данных
Совместимость Поддерживается всеми конфигурациями на базе 1С:Предприятие 8.3
Ограничения Не подходит для отчётности в госорганы (требуется преобразование)

Если вам нужно преобразовать EnterpriseData в другой XML-формат (например, для Контур.Диадок), используйте XSLT-шаблоны или специализированные конвертеры (например, 1С:Конвертация данных).

5. Автоматизированная выгрузка через задачи и регламентные задания

Для регулярного экспорта (например, ежедневной выгрузки налоговых накладных) удобно настроить регламентное задание. Это избавит от рутинных действий и снизит риск ошибок.

Как настроить:

  1. В конфигураторе перейдите в Объекты → Регламентные задания.
  2. Создайте новое задание с типом Выполнение кода.
  3. В поле Код вставьте процедуру выгрузки (аналогичную примеру из раздела 3, но с указанием периода и фильтров).
  4. Настройте расписание (например, ежедневно в 23:00).
  5. Укажите пользователя, от имени которого будет выполняться задача (должен быть права на экспорт).

Пример кода для регламентного задания (выгрузка всех счетов-фактур за день):

Процедура ВыгрузитьСчетаФактуры() Экспорт

КаталогВыгрузки = "C:\ExportXML\";

ДатаНачала = НачалоДня(ТекущаяДата());

ДатаОкончания = КонецДня(ТекущаяДата());

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| СчетФактураВыданный.Ссылка КАК Ссылка

|ИЗ

| Документ.СчетФактураВыданный КАК СчетФактураВыданный

|ГДЕ

| СчетФактураВыданный.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания";

Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);

Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания);

Результат = Запрос.Выполнить();

Выборка = Результат.Выбрать();

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

Документ = Выборка.Ссылка.ПолучитьОбъект();

ПутьКФайлу = КаталогВыгрузки + "СФ_" + Формат(Документ.Дата, "ДЛФ=Д") + "_" + Документ.Номер + ".xml";

ВыгрузитьВXML(Документ, ПутьКФайлу); // Используем процедуру из раздела 3

КонецЦикла;

КонецПроцедуры

Преимущества автоматизации:

💡

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

Для контроля за выполнением заданий используйте Журнал регламентных заданий (Администрирование → Поддержка и обслуживание). Там можно увидеть логи ошибок, если выгрузка не удалась.

6. Проверка корректности XML перед отправкой

Ошибки в XML могут привести к отказу в приёме документа (например, ФНС вернёт файл с статусом «Не прошёл проверку формата»). Чтобы этого избежать, всегда валидируйте файл перед отправкой.

Способы проверки:

  • 🔍 Встроенная проверка 1С: при экспорте через обработки некоторые решения автоматически проверяют структуру.
  • 🌐 Онлайн-валидаторы:
    • XMLValidation — проверяет синтаксис и соответствие XSD-схеме.
    • Liquid XML Validator — поддерживает сложные схемы (например, для УПД).
  • 📁 Offline-программы: XML Notepad (от Microsoft) или Oxygen XML Editor (для профессионалов).

Типичные ошибки и как их исправить:

Ошибка Причина Решение
Ошибка в теге: не закрыт элемент Отсутствует закрывающий тег (например, <Товар> без </Товар>) Проверьте код обработки или шаблон XSLT
Неверный формат даты Дата записана как DD.MM.YYYY, а требуется YYYY-MM-DD Используйте функцию Формат(Дата, "ДФ=yyyy-MM-dd")
Недопустимый символ В данных есть символы &, <, > без экранирования Замените на &amp;, &lt;, &gt;

Для документов, отправляемых в ФНС, используйте официальный валидатор ФНС. Он проверяет не только синтаксис, но и соответствие актуальным схемм XSD.

Что делать если XML не проходит проверку в ЭДО?

Если файл отвергается оператором ЭДО (например, Такском или СБИС), запросите лог ошибок. Чаще всего проблема в:

1. Несовпадении ИНН/КПП в теге <СвЮЛ> с данными в личном кабинете.

2. Отсутствии обязательных реквизитов (например, КодОКВ для валютных операций).

3. Неверной версии схемы (уточните актуальную версию у оператора).

7. Альтернативные форматы: когда XML не подходит

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

  • 📑 JSON: легче парсится в веб-приложениях, занимает меньше места. В 1С можно экспортировать через ЗаписьJSON (доступно с версии 8.3.14).
  • 📊 Excel (XLSX): удобен для ручной обработки данных. Экспортируется через ЗаписьТабличногоДокумента.
  • 🗄️ DBF: используется для обмена с устаревшими системами (например, 1С:Зарплата 7.7).
  • 📦 ZIP-архив: если нужно передать пакет документов (XML + изображения подписей).

Пример выгрузки документа в JSON:

Процедура ВыгрузитьВJSON(Документ, ПутьКФайлу)

ЗаписьJSON = Новый ЗаписьJSON();

ЗаписьJSON.ОткрытьФайл(ПутьКФайлу);

ЗаписьJSON.ЗаписатьНачалоОбъекта();

ЗаписьJSON.ЗаписатьКлючИЗначение("Тип", Документ.Метаданные().Имя);

ЗаписьJSON.ЗаписатьКлючИЗначение("Номер", Документ.Номер);

ЗаписьJSON.ЗаписатьКлючИЗначение("Дата", Формат(Документ.Дата, "ДЛФ=DT"));

ЗаписьJSON.ЗаписатьКлюч("Товары");

ЗаписьJSON.ЗаписатьНачалоМассива();

Для Каждого Строка Из Документ.Товары Цикл

ЗаписьJSON.ЗаписатьНачалоОбъекта();

ЗаписьJSON.ЗаписатьКлючИЗначение("Наименование", Строка.Номенклатура.Наименование);

ЗаписьJSON.ЗаписатьКлючИЗначение("Количество", Строка.Количество);

ЗаписьJSON.ЗаписатьКонецОбъекта();

КонецЦикла;

ЗаписьJSON.ЗаписатьКонецМассива();

ЗаписьJSON.ЗаписатьКонецОбъекта();

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

КонецПроцедуры

Выбор формата зависит от задачи:

💡

Для госорганов (ФНС, ПФР, ФСС) требуется строго XML. Для внутреннего обмена или интеграции с современными системами (например, Bitrix24) удобнее JSON.

FAQ: Частые вопросы по экспорту XML из 1С

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

Нет, XML — это структурированные данные без графических элементов. Чтобы передать документ с печатью, экспортируйте его в PDF (через Печать → Сохранить как PDF) и прикрепите к XML как отдельный файл (например, в ZIP-архиве).

Почему при выгрузке в XML теряются некоторые реквизиты?

Это происходит, если:

  1. Реквизит не включён в шаблон выгрузки (для внешних обработок).
  2. В коде не прописана запись этого реквизита (для программного экспорта).
  3. Реквизит является динамическим и не сохранён в базе (например, рассчитываемое поле).

Решение: проверьте настройки обработки или дополните код выгрузки недостающими полями.

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

Используйте один из способов:

  • Внешнюю обработку с фильтром по дате (например, "ВыгрузкаXML для пакетов документов" на Инфостарте).
  • Регламентное задание с запросом по периоду (пример кода в разделе 5).
  • Стандартный обмен данными (EnterpriseData) с указанием диапазона дат.
Как преобразовать XML из 1С в формат для Контур.Диадок?

Контур.Диадок требует специфическую структуру XML для первичных документов. Варианты решения:

  1. Используйте готовую обработку от СКБ Контур (доступна в личном кабинете Диадока).
  2. Настройте 1С:Конвертацию данных с шаблоном для Диадока.
  3. Доработайте код выгрузки (примеры есть в документации Диадока).

Обратите внимание: для УПД и актов требуются разные схемы XML.

Можно ли автоматически подписывать XML-файл ЭЦП при выгрузке?

Да, для этого:

  1. Установите КриптоПро CSP или другой сертифицированный криптопровайдер.
  2. В коде выгрузки добавьте процедуру подписи (пример для КриптоПро):
Подпись = Новый ПодписьXML();

Подпись.Сертификат = ВыбратьСертификатЭЦП(); // Функция выбора сертификата из хранилища

Подпись.Подписать(ПутьКФайлу, ПутьКФайлу + ".sig");

Готовые решения с подписью есть на Инфостарте (ищите «выгрузка XML с ЭЦП»).