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

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

Материал актуален для всех современных конфигураций: 1С:Бухгалтерия 8.3, 1С:Управление торговлей (УТ 11), 1С:ERP, 1С:Комплексная автоматизация. Если вы работаете с устаревшей версией (например, 7.7), часть функций может отсутствовать — проверьте доступные инструменты в вашей редакции.

1. Зачем выгружать счета в XML: ключевые сценарии использования

Формат XML (eXtensible Markup Language) позволяет структурировать данные так, чтобы их могли автоматически обработать другие программы. В контексте 1С это означает:

  • 📄 Обмен с банками: СберБанк, Тинькофф, Альфа-Банк и другие требуют счета в XML для массовой оплаты или загрузки в личный кабинет.
  • 🔄 Электронный документооборот (ЭДО): операторы (Контур.Диадок, СБИС, Такском) принимают счета в XML для дальнейшей отправки контрагентам.
  • 🛒 Интеграция с маркетплейсами: Ozon, Wildberries, Яндекс Маркет могут запрашивать счета в XML для сверки платежей.
  • 🏛️ Госзаказ и тендеры: площадки вроде ЕИС или Биржи госзаказа часто работают с XML-форматами.

Главное преимущество XML перед .pdf или .xlsxмашинная читаемость. Банк или оператор ЭДО может автоматически распарсить файл, извлечь реквизиты плательщика, сумму, назначение платежа и другие данные, не прибегая к ручному вводу. Это сокращает ошибки и ускоряет обработку.

⚠️ Внимание: Не все контрагенты принимают XML-счета "как есть". Некоторые требуют подписанный файл (с ЭЦП) или конкретную структуру тегов (например, <Счет><Номер> вместо <Invoice><Number>). Уточните требования у партнера до настройки выгрузки!

2. Стандартные способы выгрузки счета в XML без программирования

Если вам не нужна кастомизация структуры файла, можно обойтись встроенными инструментами 1С. Рассмотрим два основных варианта:

2.1. Выгрузка через "Печатные формы"

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

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

Минус метода: структура XML будет стандартной, без возможности редактирования тегов. Если контрагент требует специфичный формат (например, с тегом <КБК> для госзаказа), этот способ не подойдет.

2.2. Выгрузка через "Обмен данными"

Более гибкий вариант — использовать универсальный обмен данными:

  1. Перейдите в Администрирование → Обмен данными → Универсальный обмен данными.
  2. Создайте новую настройку обмена, выбрав тип XML.
  3. В параметрах укажите:
    • 📁 Каталог выгрузки (например, C:\1C_XML\).
    • 📄 Имя файла (можно использовать шаблон, например Счет_{Номер}.xml).
    • 🔄 Объекты для выгрузки — выберите Счета на оплату.
  • Запустите выгрузку кнопкой Выполнить обмен.
  • Этот метод позволяет настроить периодичность выгрузки (например, ежедневно в 18:00) и фильтровать счета (например, только для конкретного контрагента). Однако структура XML все равно останется стандартной для 1С.

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

    3. Настройка шаблона XML: как изменить структуру файла

    Если стандартная структура XML не подходит, потребуется кастомизация шаблона. Для этого в 1С предусмотрен механизм XDTO (XML Data Transfer Objects). Рассмотрим пошаговую настройку:

    3.1. Создание XDTO-пакета

    XDTO-пакет описывает структуру XML-файла и правила преобразования данных 1С в теги. Чтобы создать его:

    1. Откройте Файл → Новый → XDTO-пакет.
    2. Укажите имя пакета (например, СчетДляБанка).
    3. Добавьте пространство имен (namespace), если требуется (например, urn:accounting:ru).
    4. Опишите структуру:
      
      

      Тип СчетXML

      Элемент Номер как Строка

      Элемент Дата как Дата

      Элемент Сумма как Число

      Элемент Покупатель как Строка

      Элемент НазначениеПлатежа как Строка

      КонецТипа

    Сохраните пакет. Теперь его можно использовать для выгрузки.

    3.2. Привязка шаблона к документу "Счет"

    Чтобы 1С использовала ваш шаблон при выгрузке:

    1. Откройте документ Счет на оплату покупателю в режиме Конфигуратор.
    2. Перейдите в модуль объекта и добавьте процедуру выгрузки:
      
      

      Процедура ВыгрузитьВXML(ИмяФайла)

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

      ЗаписьXML.ОткрытьФайл(ИмяФайла);

      // Создаем объект XDTO на основе нашего пакета

      ФабрикаXDTO = Новый ФабрикаXDTO();

      ФабрикаXDTO.ПространстваИмен.Добавить("urn:accounting:ru", "СчетДляБанка");

      СчетXDTO = ФабрикаXDTO.Sоздать("СчетXML");

      СчетXDTO.Номер = ЭтотОбъект.Номер;

      СчетXDTO.Дата = ЭтотОбъект.Дата;

      СчетXDTO.Сумма = ЭтотОбъект.СуммаДокумента;

      СчетXDTO.Покупатель = ЭтотОбъект.Контрагент.Наименование;

      СчетXDTO.НазначениеПлатежа = ЭтотОбъект.НазначениеПлатежа;

      ЗаписьXDTO = Новый ЗаписьXDTO(ЗаписьXML, ФабрикаXDTO);

      ЗаписьXDTO.ЗаписатьXML(СчетXDTO);

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

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

    3. Сохраните конфигурацию и обновите базу.
    4. Теперь при вызове процедуры ВыгрузитьВXML("C:\Счет123.xml") будет создаваться файл с вашей структурой.

      Создать резервную копию базы 1С|Определить требуемую структуру XML (получить пример от контрагента)|Проверить права доступа к конфигуратору|Подготовить тестовые данные для проверки|Согласовать изменения с администратором 1С-->

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

      Ручная выгрузка каждого счета отнимает время. Автоматизировать процесс можно двумя способами:

      4.1. Настройка регламентного задания

      Если выгрузка нужна регулярно (например, ежедневно в 20:00), используйте регламентные задания:

      1. Перейдите в Администрирование → Поддержка и обслуживание → Регламентные задания.
      2. Создайте новое задание с типом Выполнение кода.
      3. В поле Код вставьте:
        
        

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

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

        ИмяФайла = "C:\XML_Schets\" + Выборка.Номер + ".xml";

        Выборка.Объект.ВыгрузитьВXML(ИмяФайла); // Вызываем нашу процедуру

        КонецЦикла;

      4. Установите расписание (например, Ежедневно в 20:00) и сохраните.
      5. Теперь счета будут выгружаться автоматически. Важно: проверьте, чтобы в указанной папке (C:\XML_Schets\) были права на запись для пользователя 1С.

        4.2. Использование внешних обработок

        Если стандартных средств недостаточно, можно подключить внешнюю обработку от партнеров 1С. Популярные решения:

        • 🔧 "Выгрузка в XML для банков" (от 1С-Рарус) — поддерживает форматы СберБанка, Тинькофф, ВТБ.
        • 📤 "Универсальный конвертер данных" (от КорпСофт) — позволяет настроить любую структуру XML.
        • 🔄 "Интеграция с Диадок" (от СКБ Контур) — специализирована для ЭДО.

      Преимущество внешних обработок — готовые шаблоны для популярных банков и операторов ЭДО. Минус — дополнительные затраты (от 3 000 до 15 000 рублей за решение).

      💡

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

      5. Типичные ошибки при выгрузке XML и их решение

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

      Ошибка Причина Решение
      Ошибка записи XML: недопустимый символ В данных счета есть символы, недопустимые в XML (например, &, <, >). Замените символы на их XML-эквиваленты (&lt;, &gt;) или очистите поле от спецсимволов.
      Не найден XDTO-пакет В коде указан несуществующий пакет или неверное пространство имен. Проверьте имя пакета и namespace в фабрике XDTO.
      Файл не прошел валидацию у банка Структура XML не соответствует требованиям банка (отсутствуют обязательные теги или неверный формат данных). Запросите у банка XSD-схему и сверьте структуру вашего файла.
      Нет прав на запись в папку У пользователя 1С нет прав на сохранение файлов в указанный каталог. Измените права доступа к папке или укажите другой путь (например, %TEMP%).

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

      ⚠️ Внимание: При обмене с банками или ЭДО операторами всегда проверяйте XML через валидатор (например, xmlvalidation.com). Даже если файл создался без ошибок, он может не пройти проверку у партнера из-за несоответствия схеме.

      6. Продвинутые сценарии: подпись XML и интеграция с API

      В некоторых случаях недостаточно просто выгрузить XML — требуется подписать файл ЭЦП или отправить его через API банка/оператора. Рассмотрим эти сценарии:

      6.1. Подписание XML электронной подписью

      Для подписи XML в 1С используйте криптопровайдер (например, КриптоПро CSP). Пример кода:

      
      

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

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

      Подпись.ПодписатьФайл("C:\Счет123.xml", "C:\Счет123_signed.xml");

      Важно: перед подписанием убедитесь, что:

      • 🔑 Сертификат ЭЦП действителен и установлен на компьютере.
      • 📜 XML-файл соответствует схеме (иначе подпись может быть недействительной).
      • 🔒 Криптопровайдер лицензирован и совместим с вашей версией 1С.

    6.2. Отправка XML через API банка

    Многие банки (например, Тинькофф или СберБанк) предоставляют API для загрузки счетов. Чтобы отправить файл программно:

    1. Получите у банка токен доступа к API.
    2. Используйте HTTPСоединение для отправки:
      
      

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

      HTTP.УстановитьЗаголовок("Authorization", "Bearer " + ТокенДоступа);

      HTTP.ОтправитьДляПолученияФайла("POST", "/api/v1/invoices/upload",

      "C:\Счет123.xml", "application/xml", ОтветСервера);

    3. Обработайте ОтветСервера (обычно возвращается JSON с статусом загрузки).
    4. Перед интеграцией изучите документацию API банка — там указаны обязательные параметры запроса, ограничения по размеру файла и форматы ответов.

      Пример ответа API Тинькофф при успешной загрузке счета

      {

      "status": "success",

      "invoice_id": "inv_123456789",

      "processing_time": "2026-12-01T14:30:00Z",

      "errors": null

      }

      7. Оптимизация процесса: советы опытных пользователей

      Чтобы сэкономить время и избежать ошибок, воспользуйтесь советами от экспертов 1С:

      • 📂 Шаблоны папок: Создайте отдельные папки для выгруженных (\XML_Export\), подписанных (\XML_Signed\) и архивных (\XML_Archive\) файлов. Это упростит поиск.
      • 🔍 Логирование: Ведите журнал выгрузок (дату, номер счета, статус). Пригодится для отчетности и поиска ошибок.
      • 🔄 Тестовый режим: Перед массовой выгрузкой проверьте процесс на 2–3 счетах. Особенно если меняете структуру XML.
      • 📋 Документирование: Сохраните инструкцию по выгрузке (где лежат обработки, какие настройки использовались). Это поможет коллегам или новому администратору.

    Если выгружаете счета для ЭДО, уточните у оператора, поддерживает ли он автоматическую отправку из 1С. Например, Контур.Диадок предоставляет обработку для прямой интеграции, что избавляет от ручной загрузки файлов.

    💡

    Самый надежный способ избежать ошибок при выгрузке XML — сначала получить у контрагента пример корректного файла и настроить шаблон в 1С под него. Это сэкономит часы на доработку.

    Частые вопросы (FAQ)

    Можно ли выгрузить счет в XML из 1С:Бухгалтерия 7.7?

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

    1. Использовать внешнюю обработку (например, от 1С-Партнеров).
    2. Написать VBScript или COM-объект для конвертации данных.
    3. Обновиться до 1С:Предприятие 8.3, где поддержка XML реализована нативно.

    Обратите внимание: 1С 7.7 не поддерживается с 2022 года, и ее использование может создавать риски для бизнеса.

    Как выгрузить счет в XML для СберБанк Бизнес Онлайн?

    СберБанк требует специфичную структуру XML с тегами вроде <Док>, <Сумма>, <Плат>. Варианты решения:

    • Скачайте обработку от СберБанка (доступна в личном кабинете банка).
    • Используйте универсальный конвертер (например, от КорпСофт) и настройте шаблон под требования банка.
    • Напишите собственный код с использованием XDTO (пример структуры можно запросить в поддержке СберБанка).

    Перед выгрузкой проверьте файл через валидатор СберБанка (доступен в разделе "Импорт документов").

    Почему при выгрузке XML теряются русские буквы (вместо них знаки "??")?

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

    1. Явно укажите кодировку при записи:
      ЗаписьXML.ОткрытьФайл(ИмяФайла, "UTF-8");
    2. Используйте ANSI (Windows-1251), если контрагент требует именно эту кодировку:
      ЗаписьXML.ОткрытьФайл(ИмяФайла, "Windows-1251");
    3. Проверьте настройки региональных стандартов в 1С (Администрирование → Региональные настройки).
    Как автоматически отправлять XML по email после выгрузки?

    Для этого добавьте в процедуру выгрузки код отправки письма:

    
    

    Почта = Новый Почта;

    Сообщение = Новый СообщениеЭлектроннойПочты;

    Сообщение.Текст = "Выгружен счет №" + ЭтотОбъект.Номер;

    Сообщение.Тема = "Счет на оплату от " + Формат(ТекущаяДата(), "ДФ=dd.MM.yyyy");

    Сообщение.Получатели.Добавить("client@company.ru");

    Сообщение.Вложения.Добавить(ИмяФайлаXML);

    Почта.Отправить(Сообщение);

    Убедитесь, что в 1С настроены параметры SMTP (Администрирование → Организации → Настройки электронной почты).

    Где хранить выгруженные XML-файлы, чтобы не потерять?

    Рекомендации по хранению:

    • 💾 Локальный сервер: Папка на сервере 1С с резервным копированием.
    • ☁️ Облако: Автоматическая загрузка в Яндекс.Диск или Google Drive (через API).
    • 📦 Архивация: Ежедневное создание ZIP-архива с файлами старше 30 дней.

    Важно: если XML содержит персональные данные (например, ИНН контрагента), обеспечьте защиту папки от несанкционированного доступа.