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

В этой статье мы разберём все актуальные способы экспорта данных из 1С в XML, включая ручные и программные методы, а также типичные «подводные камни», с которыми сталкиваются пользователи. Особое внимание уделим нюансам для разных версий платформы (1С:Предприятие 8.3 и 1С:Предприятие 7.7), конфигураций (Бухгалтерия 3.0, УТ 11, ЗУП 3.1) и форматов обмена (включая УПД, Торг-12 и СЧФ).

Если вы ищете способ автоматизировать выгрузку или столкнулись с ошибкой при сохранении XML — здесь вы найдёте готовые решения с пояснениями и примерами кода.

Зачем сохранять документы из 1С в XML?

Формат XML (eXtensible Markup Language) стал стандартом де-факто для обмена структурированными данными между информационными системами. В контексте его используют для:

  • 📄 Электронного документооборота (ЭДО): обмен счета-фактурами, УПД, актами и накладными через операторов (например, Диадок, Контур.Диадок, СБИС).
  • 📊 Сдачи отчётности: формирование файлов для ФНС, ПФР, ФСС и Росстат (например, декларации по НДС, 6-НДФЛ, СЗВ-ТД).
  • 🔄 Интеграции с внешними системами: синхронизация с CRM (Битрикс24, amoCRM), ERP-системами (SAP, Oracle), или интернет-магазинами (1С-Битрикс, Shopify).
  • 📂 Архивирования и резервного копирования: сохранение данных в универсальном формате для долгосрочного хранения.

Главное преимущество XML перед другими форматами (например, .xlsx или .mxl) — сохранение структуры данных и возможность валидации через XSD-схемы. Это критично для документов, которые должны соответствовать строгим требованиям (например, УПД по приказу ФНС №ЕД-7-26/448@).

⚠️ Внимание: Требования к структуре XML-файлов для отчётности и ЭДО могут изменяться. Перед выгрузкой проверьте актуальные схемы на сайте nalog.ru или у вашего оператора ЭДО.

Способы сохранения документов в XML из 1С

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

Способ Когда использовать Требуются ли навыки программирования Подходит для
Ручной экспорт через меню Разовые выгрузки 1–2 документов Нет Любые конфигурации (Бухгалтерия, УТ, ЗУП)
Обмен данными (Универсальный формат) Регулярный обмен с внешними системами Базовые (настройка правил обмена) 1С:Предприятие 8.3 (все конфигурации)
Выгрузка через обработки Массовый экспорт с фильтрами Средние (работа с обработками) Любые конфигурации
Программный экспорт (1С:Предприятие + встроенный язык) Автоматизация, нестандартные форматы Высокие (знание 1С:Языка) 1С:Предприятие 8.3/7.7
Внешние обработки (например, от Инфостарт) Специфические задачи (например, УПД для ЭДО) Низкие (установка + минимальные настройки) 1С:Предприятие 8.3

Рассмотрим каждый способ подробно, начиная с самого простого.

📊 Какой способ выгрузки XML из 1С вы используете чаще?
Ручной экспорт через меню
Обмен данными (Универсальный формат)
Готовые обработки (например, с Инфостарта)
Собственные программные решения
Не выгружаю XML

Ручной экспорт документа в XML через меню 1С

Самый быстрый способ — сохранить документ в XML непосредственно из формы. Этот метод подходит для разовых задач, когда нужно выгрузить 1–2 документа (например, счёт-фактуру для отправки контрагенту).

Инструкция для 1С:Бухгалтерия 3.0 (аналогично для УТ 11, ЗУП 3.1):

  1. Откройте нужный документ (например, Счёт-фактура выданный) в режиме просмотра или редактирования.
  2. Нажмите кнопку Ещё (или Действия) в верхней панели инструментов.
  3. Выберите пункт Сохранить как... или Выгрузить в файл (в зависимости от конфигурации).
  4. В списке форматов укажите XML-документ (*.xml).
  5. Задайте имя файла и путь для сохранения (например, СФ_001_от_01012026.xml).
  6. Нажмите Сохранить.

В результате будет создан файл с расширением .xml, который можно открыть в любом текстовом редакторе (например, Notepad++) или проверить через валидатор (например, XML Validator).

Убедиться, что документ проведён (непроводённые документы могут выгружаться некорректно)

Проверьте заполненность всех обязательных реквизитов (контрагент, сумма, НДС)

Закройте все открытые формы документов (чтобы избежать блокировок)

Сохраните резервную копию базы (при массовой выгрузке)-->

⚠️ Типичная ошибка: Если в XML попадают пустые теги или некорректные данные (например, <Сумма>NaN</Сумма>), проверьте:

  • 🔹 Правильность заполнения реквизитов документа (особенно числовых полей).
  • 🔹 Настройки округления в Администрирование → Настройки программы → Валюты.
  • 🔹 Версию конфигурации (в старых релизах 1С:Бухгалтерия 2.0 могли быть баги с экспортом дробных чисел).

Выгрузка XML через универсальный обмен данными

Если вам нужно регулярно обмениваться данными с другой системой (например, выгружать заказы в 1С-Битрикс или получать платежи из банка), удобнее использовать механизм Универсального обмена данными. Он позволяет:

  • 📌 Настроить правила конвертации (какие данные и в каком виде выгружать).
  • 📌 Автоматизировать обмен по расписанию.
  • 📌 Поддерживать версионность (например, выгружать только изменённые документы).

Пошаговая настройка для 1С:Управление торговлей 11:

  1. Перейдите в Администрирование → Обмен данными → Универсальный обмен данными.
  2. Создайте новый Узел обмена (например, Выгрузка в XML для сайта).
  3. В настройках узла укажите:
    • 📁 Формат обмена: XML.
    • 📝 Правила обмена: выберите готовый шаблон (например, ДокументыЗаказыПокупателей) или создайте своё правило.
    • 🔄 Направление обмена: Выгрузка.
  • Настройте Фильтр (например, выгружать только оплаченные заказы за текущий месяц).
  • Запустите обмен кнопкой Выполнить обмен.
  • Файл XML будет сохранён в указанной папке (по умолчанию — C:\Users\Public\Documents\1C\1Cv8\Exchange). Для автоматизации можно настроить регламентное задание в Администрирование → Поддержка и обслуживание → Регламентные задания.

    💡

    Если вам нужно выгрузить данные в нестандартный XML (например, для интеграции с самописной CRM), создайте собственное правило обмена. Для этого в конфигураторе откройте объект ПланОбмена и добавьте новый элемент с нужной структурой.

    Массовая выгрузка документов в XML с помощью обработок

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

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

    • 📥 Выгрузка документов в XML для ЭДО (доступна на Инфостарт) — поддерживает форматы УПД, СЧФ, Торг-12.
    • 📥 Универсальная выгрузка в XML — позволяет гибко настраивать структуру выходного файла.
    • 📥 Выгрузка данных в XML для 1С:Бухгалтерия 3.0 — специализирована под бухгалтерские документы.

    Как установить и использовать обработку:

    1. Скачайте файл обработки (например, ВыгрузкаВXML.epf) с сайта infostart.ru.
    2. В перейдите в Файл → Открыть... и выберите скачанный файл.
    3. В открывшейся форме обработки:
      • Укажите период (даты документов для выгрузки).
      • Выберите типы документов (например, Счёт-фактура выданный, Реализация товаров и услуг).
      • Задайте путь сохранения и имя файла.
      • Нажмите Выгрузить.

    ⚠️ Внимание: При массовой выгрузке больших объёмов данных (например, 10 000 документов) возможны зависания 1С или ошибки памяти. Чтобы избежать этого:

    • 🔹 Разбейте выгрузку на партии (например, по 500 документов за раз).
    • 🔹 Закройте все ненужные программы на компьютере.
    • 🔹 Используйте фоновое выполнение (если обработка поддерживает этот режим).
    Как ускорить массовую выгрузку XML?

    1. Перед выгрузкой выполните тестирование и исправление базы (Администрирование → Тестирование и исправление).

    2. Отключите антивирус на время выгрузки (некоторые антивирусы сканируют каждый создаваемый файл, что тормозит процесс).

    3. Если выгружаете данные на сетевой диск, скопируйте обработку локально — это уменьшит задержки.

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

    Программный экспорт в XML: примеры кода на 1С

    Если готовые обработки не подходят (например, нужно выгрузить данные в уникальном формате), придётся писать код на встроенном языке 1С. Ниже — базовые примеры для разных задач.

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

    Этот код сохраняет текущий документ СчётФактураВыданный в файл C:\Temp\Счёт.xml:

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

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

    ЗаписьXML.ОткрытьФайл("C:\Temp\Счёт.xml", "UTF-8");

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

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

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

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

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

    // Запись реквизитов

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

    ЗаписьXML.ЗаписатьТекст(Документ.Контрагент.Наименование);

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

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

    ЗаписьXML.ЗаписатьТекст(Документ.СуммаДокумента);

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

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

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

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

    Пример 2: Выгрузка табличной части документа

    Чтобы экспортировать табличную часть (например, список товаров в реализации), используйте цикл по строкам:

    Процедура ВыгрузитьТабличнуюЧасть(Документ)
    

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

    ЗаписьXML.ОткрытьФайл("C:\Temp\Реализация.xml");

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

    ЗаписьXML.ЗаписатьНачалоЭлемента("Реализация");

    // Выгрузка шапки документа

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

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

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

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

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

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

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

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

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

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

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

    КонецЦикла;

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

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

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

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

    ⚠️ Внимание: При программной выгрузке учитывайте:

    • 🔹 Кодировку: всегда указывайте UTF-8, иначе возможны проблемы с кириллицей.
    • 🔹 Ограничения на пути: в Windows пути длиннее 260 символов могут вызывать ошибки. Используйте короткие пути (например, C:\Temp\).
    • 🔹 Права доступа: убедитесь, что у пользователя есть права на запись в выбранную папку.
    💡

    Для сложных структур XML (например, с вложенными массивами) используйте объект XDTO (XML Data Tree Object). Он позволяет работать с XSD-схемами и упрощает валидацию.

    Типичные ошибки при сохранении XML из 1С и их решение

    Даже при правильной настройке выгрузки пользователи часто сталкиваются с ошибками. Рассмотрим самые распространённые проблемы и способы их устранения.

    Ошибка Причина Решение
    Ошибка при записи файла: Доступ запрещён Недостаточно прав на запись в папку или файл заблокирован антивирусом
    • 🔹 Сохраните файл в другую папку (например, C:\Temp\).
    • 🔹 Отключите антивирус на время выгрузки.
    • 🔹 Запустите 1С от имени администратора.
    Недопустимый символ в XML: & В данных документа есть символы, которые нужно экранировать (&, <, >, ", ') Используйте функцию СтрЗаменить() для замены символов на их XML-эквиваленты (&lt;, &amp; и т.д.)
    Не найден обязательный реквизит "ИННКонтрагента" В правилах обмена указан обязательный реквизит, который не заполнен в документе Проверьте заполненность всех реквизитов документа или измените правила обмена
    Ошибка XDTO: Несоответствие схеме Структура XML не соответствует XSD-схеме (например, лишние теги или неверные типы данных) Сверьте структуру вашего XML с актуальной XSD-схемой (например, для УПД скачайте схему с сайта ФНС)
    Файл пустой или имеет размер 0 КБ Ошибка при записи файла или документ не содержит данных для выгрузки
    • 🔹 Проверьте, что документ проведён.
    • 🔹 Убедитесь, что в настройках выгрузки указаны правильные фильтры.
    • 🔹 Попробуйте выгрузить другой документ (возможно, проблема в конкретном объекте).

    Если ошибка не устраняется, проверьте журнал регистрации (Администрирование → Поддержка и обслуживание → Журнал регистрации). Часто там содержатся подробности, которых нет в сообщении об ошибке.

    Как прочитать журнал регистрации 1С?

    1. Откройте журнал по пути Администрирование → Журнал регистрации.

    2. Установите фильтр по дате и типу события (Ошибка).

    3. Обратите внимание на столбцы Описание и Дополнительно — там может быть указан модуль, в котором произошла ошибка.

    4. Для детальной диагностики включите режим Отладка в конфигураторе (Сервис → Параметры → Отладка).

    Проверка и валидация XML-файлов из 1С

    Перед отправкой XML-файла контрагенту или в контролирующий орган его нужно проверить на:

    • 🔍 Синтаксическую корректность (правильность тегов, кодировку).
    • 🔍 Соответствие схеме (например, для УПД — схеме ФНС).
    • 🔍 Логическую целостность (правильность данных, отсутствие пустых обязательных полей).

    Инструменты для проверки:

    • 🛠️ XML Validator (онлайн-сервис или десктопная утилита) — проверяет синтаксис и соответствие XSD.
    • 🛠️ Notepad++ с плагином XML Tools — удобен для визуального анализа структуры.
    • 🛠️ 1С:Предприятие — в некоторых конфигурациях есть встроенные валидаторы (например, в 1С:Бухгалтерия 3.0 для проверки отчётности).
    • 🛠️ Контур.Диадок — проверяет УПД и СЧФ на соответствие требованиям ЭДО.

    Пример проверки через XML Validator:

    1. Откройте сайт https://www.xmlvalidation.com/.
    2. Загрузите ваш XML-файл.
    3. При необходимости укажите XSD-схему (например, для УПД скачайте её с сайта ФНС).
    4. Нажмите Validate.

    ⚠️ Внимание: Если валидатор выдаёт ошибку вида cvc-complex-type.2.4.a: Недопустимое содержимое, это означает, что структура вашего XML не соответствует XSD. Частые причины:

    • 🔹 Лишние или отсутствующие теги.
    • 🔹 Неверный порядок элементов (в XML важен порядок тегов!).
    • 🔹 Несоответствие типов данных (например, вместо числа указан текст).
    💡

    Для отладки XSD-ошибок используйте программу XMLSpy или Oxygen XML Editor. Они показывают, какой именно элемент не соответствует схеме, и предлагают варианты исправления.

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

    Можно ли выгрузить в XML документ из 1С:Предприятие 7.7?

    Да, но возможности ограничены. В 1С 7.7 нет встроенного механизма выгрузки в XML, поэтому придётся:

    • 🔹 Использовать внешние обработки (например, V7XML).
    • 🔹 Писать код на встроенном языке с использованием ТекстовыйДокумент и ручным формированием тегов.
    • 🔹 Экспортировать данные в промежуточный формат (например, .dbf), а затем конвертировать в XML внешними средствами.

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

    Как выгрузить в XML справочник (например, номенклатуру)?

    Для выгрузки справочников используйте:

    1. Механизм Универсального обмена данными (аналогично документам).
    2. Готовые обработки (например, Выгрузка справочников в XML с Инфостарта).
    3. Программный код:
      Процедура ВыгрузитьСправочникВXML()
      

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

      ЗаписьXML.ОткрытьФайл("C:\Temp\Номенклатура.xml");

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

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

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

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

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

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

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

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

      КонецЦикла;

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

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

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

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

    Возможные причины:

    • 🔹 В правилах обмена не указаны эти реквизиты. Проверьте настройки в Универсальный обмен данными.
    • 🔹 Реквизиты не заполнены в документе (пустые значения могут игнорироваться при выгрузке).
    • 🔹 В конфигурации для этих реквизитов установлен флаг Не выгружать.
    • 🔹 Ошибка в коде обработки (например, неверное имя реквизита).

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