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

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

Материал будет полезен как начинающим пользователям, так и опытным разработчикам, которые хотят оптимизировать процесс обмена данными. Все примеры приведены для актуальных версий 1С:Предприятие 8.3 (включая 8.3.23 и новее), но с указанием особенностей для более ранних релизов.

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

В большинстве типовых конфигураций (1С:Бухгалтерия, 1С:УТ, 1С:ЗУП) уже предусмотрены встроенные обработки для выгрузки данных в XML. Их преимущество — простота использования и соответствие требованиям регуляторов. Однако стандартные решения подходят не для всех задач.

Где искать встроенные обработки:

  • 📁 Меню "Файл" → "Выгрузить данные" (для документов и справочников)
  • 📊 Отчеты и обработки → "Регламентированная отчетность" (для ФНС, ПФР, ФСС)
  • 🔄 Сервис → "Обмен данными" → "Универсальный обмен в формате XML"

Например, для выгрузки первичных документов (счета, накладные, акты) в ЭДО достаточно:

  1. Открыть документ в .
  2. Нажать Ещё → Выгрузить в XML.
  3. Указать путь сохранения и подтвердить экспорт.
💡

Если в меню нет пункта "Выгрузить в XML", проверьте права пользователя в Администрирование → Настройки пользователей. Часто эта опция скрыта для ролей с ограниченными правами.

Ограничения стандартных механизмов:

  • 🚫 Невозможно настроить структуру XML под специфические требования (например, для интеграции с Bitrix24 или MoySklad).
  • 🚫 Нет гибкой настройки кодировки (по умолчанию — UTF-8, но некоторые системы требуют Windows-1251).
  • 🚫 Ограниченный список поддерживаемых объектов (например, нельзя выгрузить произвольный запрос или регистр сведений).
📊 Какой формат обмена данными вы используете чаще?
XML
JSON
Excel
TXT/CSV
Другой

2. Универсальный обмен данными: настройка выгрузки через конфигуратор

Для более гибкой настройки выгрузки используется механизм "Универсальный обмен данными", доступный через Конфигуратор. Он позволяет:

  • 🔧 Выбирать любые объекты метаданных (справочники, документы, регистры).
  • 🔧 Настраивать правила преобразования данных.
  • 🔧 Указывать кодировку и форматирование.

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

  1. Откройте 1С:Предприятие в режиме Конфигуратор (зажмите Shift при запуске).
  2. Перейдите в Администрирование → Обмен данными → Универсальный обмен.
  3. Создайте новый профиль обмена:
    Наименование: ВыгрузкаТоваровXML
    

    Тип обмена: Выгрузка

    Формат: XML

  4. В разделе Правила обмена добавьте объекты для выгрузки (например, справочник Номенклатура).
  5. Укажите путь сохранения файла и запустите выгрузку.

Важно: при выгрузке больших объемов данных (более 10 000 записей) разбейте процесс на части, чтобы избежать ошибки переполнения памяти. Это особенно актуально для конфигураций на управляемых формах.

Создать резервную копию базы|Проверить права доступа|Определить список выгружаемых объектов|Настроить кодировку (UTF-8 или Windows-1251)|Указать путь для сохранения файла-->

3. Выгрузка через запрос и XDTO: для разработчиков

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

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

// Создаем XDTO-пакет

Пакет = XDTOФабрика.СоздатьПакет();

Пакет.ПространстваИмен.Добавить("http://example.com/1CExchange");

// Формируем XML-документ

Документ = Пакет.СоздатьДокумент();

Корень = Документ.Корень = Пакет.СоздатьЭлемент("Контрагенты");

// Загружаем данные из 1С

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

Запрос.Текст = "ВЫБРАТЬ Наименование, ИНН, КПП ИЗ Справочник.Контрагенты";

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

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

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

Контрагент = Пакет.СоздатьЭлемент("Контрагент");

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

Контрагент.УстановитьАтрибут("ИНН", Выборка.ИНН);

Корень.Добавить(Контрагент);

КонецЦикла;

// Сохраняем в файл

Документ.Записать("C:\Exchange\Контрагенты.xml");

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

  • ✅ Полный контроль над структурой XML.
  • ✅ Возможность добавления произвольных атрибутов и тегов.
  • ✅ Оптимизация для больших объемов данных (можно выгружать порциями).
Как проверить корректность сформированного XML?

Используйте онлайн-валидаторы (например, XML Validation от W3C) или встроенные инструменты в Notepad++/VS Code. Обратите внимание на:

1. Закрытые теги (например, </Контрагент>).

2. Кодировку (должна совпадать с указанной в заголовке XML: <?xml version="1.0" encoding="UTF-8"?>).

3. Отсутствие специальных символов (&, <, >) без экранирования.

4. Типичные ошибки и их решения

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

Ошибка Причина Решение
Ошибка записи XML: недопустимый символ В данных есть символы, несовместимые с кодировкой (например, « », ©). Используйте функцию СтрЗаменить() для замены проблемных символов или измените кодировку на UTF-8.
Файл не найден или доступ запрещен Нет прав на запись в указанную папку или путь содержит кириллицу. Укажите путь на английском (например, C:\Export\) и проверьте права доступа.
Превышен максимальный размер файла Ограничение платформы (по умолчанию — 2 ГБ). Разбейте выгрузку на несколько файлов или используйте архивацию (ZipФайл).

Особое внимание уделите кодировке:

  • 🔤 Для государственных систем (ФНС, Росалкогольрегулирование) требуется Windows-1251.
  • 🔤 Для международных интеграций (API, CRM) — UTF-8.
  • 🔤 Проверьте кодировку в заголовке XML-файла: <?xml version="1.0" encoding="UTF-8"?>.
💡

Если XML не принимается целевой системой, сначала проверьте его на валидность, а затем сверьте структуру с требованиями документации. Часто проблема кроется в несовпадении имен тегов или атрибутов.

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

При отправке отчетности в ФНС, ПФР или ФСС требуется строгое соблюдение форматов XML, утвержденных приказами ведомств. Для этого в предусмотрены специализированные обработки:

Как выгрузить, например, декларацию по НДС:

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

Важные нюансы:

  • 📋 Перед выгрузкой обновите форматы отчетности через Сервис → Обновление отчетности.
  • 📋 Для ЭДО (электронного документооборота) может потребоваться подпись файла ЭЦП.
  • 📋 Некоторые отчеты (например, 6-НДФЛ) требуют выгрузки в ЗИП-архив с определенной структурой.
💡

Если при загрузке отчета на портал ФНС возникает ошибка "Неверная структура XML", скачайте актуальный XSD-схему для вашего отчета на сайте налоговой и сверьте с ней свой файл.

6. Автоматизация выгрузки: планировщик и внешние обработки

Для регулярного обмена данными (например, ежедневной выгрузки каталога товаров в MoySklad) настройте автоматическую выгрузку через:

Способ 1. Планировщик задач 1С

  1. В Конфигураторе откройте Администрирование → Поддержка → Планировщик задач.
  2. Создайте новую задачу с типом Выгрузка данных в XML.
  3. Укажите расписание (например, ежедневно в 23:00) и параметры выгрузки.

Способ 2. Внешние обработки

Для сложных сценариев используйте готовые решения:

  • 🛠️ 1С:Интеграция (для обмена с 1С:Документооборот, Bitrix24).
  • 🛠️ ATOL:Обмен данными (для работы с онлайн-кассами).
  • 🛠️ Универсальный обмен данными (УОД) от Инфостарт.

Пример настройки автоматической выгрузки через УОД:

// В модуле управляемого приложения

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

Обмен = Новый ОбменДаннымиXML;

Обмен.ПутьКФайлу = "C:\AutoExport\data.xml";

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

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

💡

Автоматизируйте выгрузку только после нескольких успешных ручных тестов. Проверяйте логи обмена в Администрирование → Журнал регистрации на предмет ошибок.

7. Оптимизация XML для больших объемов данных

При выгрузке больших справочников (например, Номенклатура с 50 000 позиций) стандартные методы могут работать медленно или завершаться ошибкой. Решения:

1. Порционная выгрузка

Разбейте данные на части по 5 000–10 000 записей и выгружайте их отдельными файлами. Пример:

Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 10000 Наименование, Артикул ИЗ Справочник.Номенклатура";

2. Архивация на лету

Используйте ZipФайл для сжатия XML без промежуточного сохранения:

Zip = Новый ZipФайл;

Zip.Добавить("data.xml", XMLСтрока);

Zip.Записать("C:\Export\data.zip");

3. Оптимизация структуры XML

  • 📉 Уберите лишние атрибуты (например, ПометкаУдаления, если она всегда Ложь).
  • 📉 Замените повторяющиеся значения (например, ЕдиницаИзмерения="шт") на ссылки.
Как ускорить выгрузку на 30%?

Отключите журналирование на время выгрузки:

НастройкаЖурналаРегистрации(Ложь);

Используйте прямые запросы к СУБД (только для опытных пользователей!):

Запрос = Новый Запрос("ВЫБРАТЬ * ИЗ _Reference123", Новый ПараметрыЗапроса(РежимЧтенияДанных.Прямой));

Внимание: прямой доступ к таблицам может нарушить целостность данных при некорректном использовании!

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

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

Да, но не напрямую. Сначала экспортируйте отчет в Табличный документ, затем конвертируйте его в XML через ЗаписатьXML():

ТабДок.ЗаписатьXML("C:\Reports\ОСВ.xml");

Обратите внимание, что структура XML будет табличной (строки/колонки), а не иерархической.

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

Проблема в несовпадении кодировок. Решения:

  1. Укажите явную кодировку при записи файла: Файл.Открыть("data.xml", РежимЗаписиФайла.Запись, КодировкаТекста.UTF8).
  2. Используйте Notepad++ для конвертации файла в UTF-8 без BOM.
Как выгрузить XML с цифровой подписью для ЭДО?

Для этого:

  1. Сформируйте XML стандартным способом.
  2. Подпишите файл через КриптоПро или встроенный механизм :
    Подпись = Новый ПодписьXML;
    

    Подпись.Подписать("C:\Export\file.xml", Сертификат, "C:\Export\file_signed.xml");

Убедитесь, что сертификат ЭЦП действителен и установлен в хранилище Windows.

Что делать, если XML не проходит валидацию на портале ФНС?

Сверьте структуру вашего файла с XSD-схемой отчета:

  1. Скачайте актуальную схему на сайте ФНС (раздел "Форматы отчетности").
  2. Проверьте XML через валидатор (например, XML Validator в Oxygen XML Editor).
  3. Обратите внимание на:
    • 🔹 Правильность тегов (регистр, порядок вложенности).
    • 🔹 Формат дат (ДД.ММ.ГГГГ vs ГГГГ-ММ-ДД).
    • 🔹 Наличие обязательных атрибутов (например, СвУчредитель для юрлиц).
Можно ли выгрузить историю изменений объекта (например, кто и когда редактировал справочник)?

Да, но для этого потребуется:

  1. Включить версионность для справочника в конфигураторе.
  2. Использовать запрос к регистру ИсторияДанных:
    ВЫБРАТЬ
    

    Объект.Ссылка КАК Ссылка,

    Объект.ДатаИзменения КАК Дата,

    Объект.Пользователь КАК Пользователь

    ИЗ

    РегистрСведений.ИсторияДанных КАК Объект

    ГДЕ

    Объект.Ссылка ССЫЛКА Справочник.Номенклатура

  3. Выгрузить результат в XML через XDTO.

Учтите, что история хранится ограниченное время (настраивается в Администрирование → Настройки системы).