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

В этой статье мы разберем все актуальные способы выгрузки XML из 1С 8.3 (включая последние обновления платформы), от стандартных обработок до программного кода. Особое внимание уделим типичным ошибкам и их решению — например, почему при выгрузке через ЗаписьXML теряются русские символы или как избежать разрыва больших файлов при экспорте через COM-соединение.

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

1. Стандартные возможности 1С для выгрузки XML

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

Где искать эти функции:

  • 📊 Отчеты с кнопкой "Выгрузить": В большинстве отчетов (например, Оборотно-сальдовая ведомость или Книга покупок) есть кнопка Ещё → Выгрузить с выбором формата.
  • 📤 Обработки обмена данными: В меню Администрирование → Обмен данными часто есть готовые обработки для ФНС, ПФР или банков.
  • 🔄 Универсальный обмен: В конфигураторе (Файл → Открыть...) ищи обработки с названиями вроде УниверсальныйОбменДаннымиXML.epf.

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

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

Если в выгруженном XML вместо русских букв отображаются знаки "?", перед сохранением выберите кодировку UTF-8 в диалоговом окне экспорта.

⚠️ Внимание: В некоторых типовых конфигурациях (например, Бухгалтерия КОРП 3.0) стандартная выгрузка XML может создавать файлы с сигнатурой version="1.0" encoding="windows-1251", что вызывает проблемы при загрузке в современные системы. В этом случае используйте методы из раздела 3 или 4.

2. Выгрузка через внешние обработки (без программирования)

Если стандартных механизмов недостаточно, можно воспользоваться готовыми внешними обработками. Их преимущество — расширенные настройки формата и поддержка специфических схем XML (например, для Диадок или СБИС).

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

  • 🌍 Официальный портал 1С: Раздел 1С:ИТС (требуется подписка).
  • 🛠️ GitHub: Репозитории вроде oscript-library или 1C-XML-tools.
  • 💼 Партнерские решения: Многие франчайзи 1С бесплатно распространяют обработки для клиентов (например, Корус Консалтинг или АйТи-Проект).

Инструкция по использованию внешней обработки:

1. Скачайте файл с расширением .epf или .erf.

2. В 1С откройте Файл → Открыть... и выберите обработку.

3. В форме обработки укажите:

- Источник данных (документ, справочник или отчет)

- Путь сохранения XML

- Параметры форматирования (отступы, кодировка)

4. Нажмите Выполнить.

Обработка Поддерживаемые форматы Особенности
УниверсальныйОбменXML XML, XDTO Поддерживает XSD-схемы, валидацию
ВыгрузкаВExcelИXML XML, XLSX, CSV Простой интерфейс, подходит для новичков
XMLКонвертерДля1С XML, JSON Преобразование между форматами, работа с большими файлами
📊 Какой способ выгрузки XML вы используете чаще?
Стандартные отчеты 1С
Внешние обработки
Собственные разработки на 1С
Другие инструменты

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

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

Основные объекты для работы с XML в 1С:

  • 📜 ЗаписьXML — запись данных в файл или строку.
  • 📖 ЧтениеXML — разбор существующих XML-файлов.
  • 🔄 XDTOФабрика — работа со схемами XSD.
  • 🗃️ ХранилищеЗначения — для временного хранения данных перед выгрузкой.

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

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

// Создаем объект записи XML

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

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

// Начинаем документ

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

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

// Выбираем данные из справочника

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

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

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

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

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

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

КонецЦикла;

// Закрываем корневой элемент и файл

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

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

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

Как добавить пространство имен в XML?

Чтобы добавить пространство имен (namespace) в выгружаемый XML, используйте метод ЗаписатьПространствоИмен перед началом корневого элемента:

ЗаписьXML.ЗаписатьПространствоИмен("ns", "http://example.com/schema");

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

Это потребуется для совместимости со схемой XSD.

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

4. Выгрузка через COM-соединение и внешние системы

Если нужно интегрировать 1С с внешней системой (например, 1С:EDT, SQL-сервер или Python-скриптом), удобно использовать COM-соединение. Этот метод позволяет автоматизировать выгрузку по расписанию или по событию.

Пример подключения из Python:

import win32com.client

Подключаемся к 1С

v8 = win32com.client.Dispatch("V83.ComConnector")

base = v8.Connect("File=C:\Bases\Trade;Usr=Администратор;Pwd=123")

Выполняем выгрузку

result = base.Execute("ВыгрузитьДанныеВXML(\"C:\Reports\output.xml\")")

Преимущества COM-выгрузки:

  • 🔄 Автоматизация по расписанию (через Планировщик задач Windows).
  • 📊 Интеграция с Power BI, Excel или базами данных.
  • 🛠️ Возможность предварительной обработки данных перед выгрузкой.

Типичные ошибки при COM-выгрузке:

  • 🚫 Ошибка 80040154: Не зарегистрирован COM-объект. Решение: переустановите платформу 1С с галочкой "Регистрация COM-соединения".
  • 🔒 Отказано в доступе: Проверьте права пользователя в 1С и на папку сохранения.
  • Таймаут подключения: Увеличьте параметр Timeout в скрипте или настройках 1С.

Установить 32-битную версию 1С (даже на 64-битной ОС)|Зарегистрировать COM-объект через regsvr32 v83comcn.dll|Настроить права на папку выгрузки|Проверить наличие лицензии на сервере 1С-->

5. Выгрузка больших отчетов: оптимизация и обход ограничений

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

Проблемы при выгрузке больших XML:

  • 🐢 Длительное выполнение: Зависание 1С на этапе формирования файла.
  • 💥 Ошибка памяти: "Недостаточно памяти для выполнения операции".
  • 📉 Обрыв файла: XML сохраняется не полностью.

Решения:

  1. Постраничная выгрузка:
    Запрос = Новый Запрос;
    

    Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1000 * ИЗ Документ.РеализацияТоваровУслуг";

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

    Пока Результат.Следующий() Цикл

    // Выгрузка порции данных

    КонецЦикла;

    Используйте параметр ПЕРВЫЕ N и смещение ПРОПУСТИТЬ M.

  2. Потоковая запись:
    Поток = Новый ПотокЗаписи("C:\BigReport.xml");
    

    ЗаписьXML = Новый ЗаписьXML(Поток, "UTF-8", Истина);

    Потоки экономят память при работе с файлами >1 ГБ.

  3. Архивация на лету:
    ЗаписьXML = Новый ЗаписьXML(Новый АрхиваторЗИП("C:\Report.zip").ДобавитьФайл("data.xml"));

    Сразу упаковывайте XML в ZIP, если конечная система это поддерживает.

Метод Макс. объем данных Скорость Сложность реализации
Стандартная выгрузка до 50 000 строк ⭐⭐
Постраничная + потоки до 1 млн строк ⭐⭐⭐ ⭐⭐⭐
COM + внешний скрипт неограничено ⭐⭐⭐⭐ ⭐⭐⭐⭐
💡

Для выгрузки более 100 000 записей всегда используйте комбинацию постраничного чтения данных и потоковой записи в файл. Это единственный стабильный способ избежать ошибок памяти.

6. Проверка и валидация выгруженного XML

Даже успешно выгруженный XML может содержать ошибки, из-за которых его отклонят в госорганах или банках. Разберем, как проверить файл перед отправкой.

Инструменты для валидации:

  • 🔍 XML Validator (онлайн): https://www.xmlvalidation.com/ — проверяет синтаксис и соответствие XSD.
  • 📋 Notepad++ с плагином XML Tools: Подсветка ошибок и автоформатирование.
  • 🛠️ 1С:Конвертация данных: Встроенная утилита для проверки структуры.
  • 🤖 XSD-схемы: Официальные схемы для отчетности (например, ФНС_НДС_2026.xsd).

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

  • 🚫 Незакрытые теги:
    <Товар>Ноутбук</Товар>  // Правильно
    

    <Товар>Ноутбук // Ошибка

    Исправление: Используйте ЗаписьXML.ЗаписатьКонецЭлемента() для каждого открытого тега.

  • 🔤 Неверная кодировка:
    <?xml version="1.0" encoding="windows-1251"?>  // Устаревшая кодировка
    

    <?xml version="1.0" encoding="UTF-8"?> // Современный стандарт

    Исправление: Явно указывайте "UTF-8" при открытии ЗаписьXML.

  • 📏 Несоответствие XSD:
    <Документ Дата="2026-13-01">  // Неверный формат даты
    

    <Документ Дата="2026-01-13"> // Правильно

    Исправление: Используйте функцию Формат(Дата, "ДФ=yyyy-MM-dd").

⚠️ Внимание: С 2026 года ФНС требует, чтобы все XML-отчеты проходили проверку через сервис Честный ЗНАК на соответствие схеме FSRAR_2026.xsd. Убедитесь, что ваша выгрузка поддерживает актуальную версию схемы.

7. Автоматизация выгрузки: расписания и триггеры

Ручная выгрузка отнимает время и чревата ошибками. Автоматизируем процесс с помощью встроенных механизмов 1С.

Способы автоматизации:

  • Регламентные задания:
    // Создание задания в конфигураторе
    

    РегЗадание = РегламентныеЗадания.СоздатьЗадание();

    РегЗадание.Имя = "ВыгрузкаXMLЕжедневно";

    РегЗадание.Метод = "ОбщийМодуль.ВыгрузкаДанных.ВыгрузитьВXML";

    РегЗадание.Расписание.ДобавитьЕжедневноеВремя(Время(23, 0, 0)); // Каждый день в 23:00

  • 🔔 Триггеры по событиям:
    // Подписка на событие проведения документа
    

    Процедура ПриПроведении(Документ) Экспорт

    Если Документ.ВидыДвижений.НалоговыйУчет Тогда

    ВыгрузитьВXML(Документ.Ссылка);

    КонецЕсли;

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

  • 🔄 Внешние планировщики:

    Используйте Планировщик задач Windows или cron (Linux) для запуска скриптов:

    schtasks /create /tn "1C XML Export" /tr "C:\Scripts\export_1c.vbs" /sc daily /st 23:00

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

Set v8 = CreateObject("V83.ComConnector")

Set base = v8.Connect("File=C:\Bases\Accounting;Usr=Admin;Pwd=pass")

base.Execute("ВыгрузитьОтчетыВXML()")

💡

Для отладки регламентных заданий включите журнал регистрации в 1С (Администрирование → Журналы регистрации) и фильтруйте события по типу "Выполнение регламентного задания".

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

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

По умолчанию 1С использует латиницу для имен тегов. Чтобы разрешить кириллицу:

ЗаписьXML.УстановитьСвойство("http://v8.1c.ru/8.1/data/exchange", "use-cyrillic-tags", Истина);

Однако учтите, что некоторые системы (например, банки) могут не поддерживать кириллицу в тегах.

Почему в XML вместо даты записывается число (например, 45678)?

Это внутренний формат хранения дат в 1С. Преобразуйте дату в строку перед записью:

ЗаписьXML.ЗаписатьАтрибут("ДатаДок", Формат(Документ.Дата, "ДФ=yyyy-MM-dd"));
Можно ли выгрузить XML прямо в облако (Yandex Disk, Google Drive)?

Да, используйте HTTPСоединение для загрузки файла:

HTTP = Новый HTTPСоединение("cloud-api.yandex.net", 443, "", "", Истина);

HTTP.ЗаписатьФайл("/v1/disk/resources/upload?path=/report.xml", "C:\report.xml");

Предварительно получите OAuth-токен доступа к облаку.

Как выгрузить XML с цифровой подписью?

Используйте криптографические функции 1С:

Подпись = Новый ПодписьXML;

Подпись.УстановитьСертификат(Сертификат);

Подпись.ПодписатьФайл("C:\report.xml", "C:\report_signed.xml");

Сертификат должен быть загружен в хранилище 1С заранее.

Где найти актуальные XSD-схемы для отчетности 2026 года?

Официальные схемы публикуются на сайтах госорганов:

  • ФНС: nalog.ru/rn77/program/5961229/ (раздел "Форматы и схемы").
  • ПФР: pfr.gov.ru/eservices/xsd/.
  • ФСС: fss.ru/ru/fund/insurance_contributions/45886/.

Скачивайте схемы только с официальных источников — в сети часто встречаются устаревшие версии.