Отправка XML-файлов из 1С:Предприятие — стандартная задача при интеграции с госсистемами (ЕГАИС, Честный ЗНАК), банками, маркетплейсами или внутренними сервисами компании. Ошибки на этом этапе ведут к сбоям в обмене данными, штрафам за несвоевременную отчётность или потере заказов. В этой статье разберём 5 рабочих способов отправить XML из 1С, включая нюансы аутентификации, обработки ответов сервера и типичные ошибки, которые блокируют отправку.

Важно: метод отправки зависит от требований получателя. Например, ФНС и Честный ЗНАК требуют подписи файла ЭЦП, а маркетплейсы типа Ozon или Wildberries — передачи через API с токеном. Мы рассмотрим универсальные решения, которые работают в 1С 8.3 (включая последние релизы 2026 года), а также укажем, где нужны доработки под специфические протоколы.

Если вам нужно отправить XML прямо сейчас, переходите к разделу «Отправка через HTTPЗапрос» — это самый быстрый способ без дополнительных настроек. Для регулярного обмена (например, выгрузки каталога на сайт) лучше настроить автоматическую отправку по расписанию — инструкция в конце статьи.

Подготовка XML-файла в 1С: проверка структуры и кодировки

Перед отправкой убедитесь, что файл соответствует требованиям получателя. Даже правильно сформированный XML может быть отклонён из-за:

  • 🔹 Неверной кодировки: большинство систем требуют UTF-8, но 1С по умолчанию сохраняет в Windows-1251. Это приводит к кракозябрам в кириллических символах.
  • 🔹 Ошибок в структуре: лишние теги, незакрытые элементы или несоответствие XSD-схеме (например, в ЕГАИС или Честном ЗНАКе).
  • 🔹 Отсутствия обязательных полей: ИНН, номер документа, дата — без них файл не пройдёт валидацию.
  • 🔹 Неправильного имени файла: некоторые системы (например, ФНС) требуют формат ИНН_КПП_ДАТА_НОМЕР.xml.

Чтобы проверить XML перед отправкой:

  1. Откройте файл в блокноте или Notepad++ и сохраните с кодировкой UTF-8 (без BOM).
  2. Проверьте структуру через онлайн-валидаторы (например, XMLValidation).
  3. Для ЕГАИС или Честного ЗНАКа используйте официальные тестовые сервисы ФНС.
💡

Если XML формируется через ЗаписьXML, добавьте строку ЗаписьXML.УстановитьСтроку("") в начало файла — это гарантирует корректную кодировку.

Пример кода для создания XML с правильной кодировкой:

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

ЗаписьXML.УстановитьСтроку("");

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

ЗаписьXML.ЗаписатьАтрибут("Ид", "12345");

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

// ... остальной код формирования XML

ДвоичныеДанные = ЗаписьXML.Закрыть();

ДвоичныеДанные.Записать("C:\temp\document.xml");

⚠️ Внимание: Если XML отправляется в ФНС или Честный ЗНАК, его необходимо подписать ЭЦП до отправки. Для этого используйте модуль ПодписьXML или внешние компоненты типа КриптоПро.

Способ 1: Отправка XML через HTTPЗапрос (универсальный метод)

Метод HTTPЗапрос подходит для отправки XML на любой сервер, поддерживающий POST-запросы. Это самый гибкий способ, который работает с API маркетплейсов, банковскими системами и госсервисами (если они не требуют специфических протоколов типа SOAP).

Алгоритм:

  1. Сформируйте XML-файл (см. раздел «Подготовка»).
  2. Создайте HTTPЗапрос и укажите адрес сервера.
  3. Добавьте заголовки (например, Content-Type: application/xml).
  4. При необходимости передайте данные аутентификации (токен, логин/пароль).
  5. Отправьте запрос и обработайте ответ.

Пример кода для отправки XML на сервер с авторизацией по токену:

АдресСервера = "https://api.example.com/upload";

ТокенДоступа = "ВашТокен12345";

// Чтение XML-файла

ДвоичныеДанные = Новый ДвоичныеДанные("C:\temp\document.xml");

ТекстXML = ДвоичныеДанные.ПолучитьТекст("UTF-8");

// Настройка запроса

Запрос = Новый HTTPЗапрос(АдресСервера);

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

Запрос.УстановитьЗаголовок("Content-Type", "application/xml");

Запрос.УстановитьТекстПараметровПост(ТекстXML);

// Отправка и обработка ответа

Ответ = Новый HTTPСоединение();

Попытка

ОтветСервера = Ответ.Получить(Запрос);

Если ОтветСервера.КодСостояния = 200 Тогда

Сообщить("XML успешно отправлен! Ответ сервера: " + ОтветСервера.ПолучитьТекст());

Иначе

Сообщить("Ошибка: " + ОтветСервера.КодСостояния + " - " + ОтветСервера.ПолучитьТекст());

КонецЕсли;

Исключение

Сообщить("Ошибка соединения: " + ОписаниеОшибки());

КонецПопытки;

Типичные ошибки при отправке через HTTPЗапрос:

  • 🚫 401 Unauthorized — неверный токен или логин/пароль. Проверьте данные в личном кабинете получателя.
  • 🚫 400 Bad Request — ошибка в структуре XML или заголовках. Валидируйте файл перед отправкой.
  • 🚫 500 Internal Server Error — проблема на стороне сервера. Повторите запрос позже.

Проверьте адрес сервера на опечатки|Убедитесь, что токен/пароль актуальны|Валидируйте XML через онлайн-сервисы|Тестируйте запрос в Postman перед интеграцией в 1С-->

Способ 2: Загрузка XML на FTP-сервер (для крупных файлов)

Если XML весит десятки мегабайт (например, выгрузка каталога товаров), отправка через HTTP может завершиться таймаутом. В таких случаях используйте FTP — протокол для передачи файлов. Он поддерживается большинством хостингов, банковских систем и маркетплейсов.

Для работы с FTP в 1С используйте объект FTPСоединение. Пример кода для загрузки файла:

АдресFTP = "ftp.example.com";

Пользователь = "user123";

Пароль = "password123";

ПутьКФайлу = "C:\temp\large_file.xml";

ИмяНаСервере = "upload.xml";

// Подключение к FTP

FTP = Новый FTPСоединение(АдресFTP, Пользователь, Пароль, 21, Ложь);

Попытка

FTP.Соединить();

FTP.Загрузить(ПутьКФайлу, ИмяНаСервере);

Сообщить("Файл успешно загружен на FTP!");

Исключение

Сообщить("Ошибка загрузки: " + ОписаниеОшибки());

КонецПопытки;

Нюансы работы с FTP:

  • 🔐 Используйте SFTP (защищённый протокол) для передачи конфиденциальных данных. В 1С для этого нужен внешний компонент (например, SecureBlackbox).
  • 📂 Проверьте права доступа на сервере: часто требуется создать отдельную папку для загрузки (например, /incoming/).
  • ⏳ Для больших файлов (>100 МБ) настройте таймаут соединения: FTP.Таймаут = 300 (значение в секундах).
⚠️ Внимание: Некоторые FTP-серверы блокируют подключения из 1С по IP. Уточните у администратора сервера, разрешён ли доступ с вашего IP-адреса или диапазона.
Параметр Значение для FTP Значение для SFTP
Порт 21 22
Протокол FTP SSH (SFTP)
Шифрование Нет Да (AES, 3DES)
Поддержка в 1С Встроенная Требует внешней компоненты

Способ 3: Отправка XML по электронной почте (для ручного контроля)

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

Инструкция:

  1. Откройте форму отправки письма: ОткрытьФорму("Почта.ПисьмоПочты");
  2. Укажите адрес получателя и тему (например, «Выгрузка данных за 01.06.2026»).
  3. Прикрепите XML-файл через кнопку «Вложить файл».
  4. При необходимости добавьте текст письма (например, «Вложение: данные для загрузки в систему Х»).
  5. Нажмите «Отправить».

Автоматизировать отправку можно через код:

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

Письмо = Почта.СоздатьПисьмо();

Письмо.Адресат = "receiver@example.com";

Письмо.Тема = "Выгрузка XML за " + ТекущаяДата();

Письмо.Текст = "Добрый день! Вложение: данные для интеграции.";

// Прикрепление файла

Вложение = Письмо.Вложения.Добавить();

Вложение.ИмяФайла = "data.xml";

Вложение.ПолучитьДанныеИзФайла("C:\temp\data.xml");

// Отправка

Попытка

Почта.Отправить(Письмо);

Сообщить("Письмо с XML отправлено!");

Исключение

Сообщить("Ошибка отправки: " + ОписаниеОшибки());

КонецПопытки;

Ограничения метода:

  • 📧 Размер вложения ограничен настройками почтового сервера (обычно 10–25 МБ).
  • ⏰ Задержки доставки: письмо может задерживаться на серверах или попадать в спам.
  • 🔄 Нет гарантии обработки: получатель может не заметить письмо или забыть загрузить файл.

HTTP-запросы|FTP/SFTP|Электронная почта|Специализированные сервисы (ЕГАИС, Честный ЗНАК)|Другой вариант-->

Способ 4: Отправка XML в ЕГАИС и Честный ЗНАК (с ЭЦП)

Для работы с ЕГАИС (алкогольная продукция) и Честным ЗНАКом (маркировка товаров) требуется не только отправить XML, но и подписать его квалифицированной ЭЦП. В 1С для этого используют:

  • 🔐 Внешние компоненты (КриптоПро, ВипНет).
  • 📄 Встроенные механизмы (для 1С:УТ 11 и 1С:ERP).
  • 🌐 Сервисы-посредники (например, Такском или СКБ Контур).

Пример кода для отправки в ЕГАИС через HTTPСервис (упрощённая версия):

// Подготовка XML и подпись (предполагается, что модуль подписи уже настроен)

ПодписанныйXML = ПодписатьXMLЭЦП("C:\temp\ttn.xml", "C:\certs\mycert.pfx", "пароль");

// Настройка запроса к ЕГАИС

АдресЕГАИС = "https://utm.fsrar.ru/ws/Exchange";

Запрос = Новый HTTPЗапрос(АдресЕГАИС);

Запрос.УстановитьЗаголовок("Content-Type", "application/xml");

Запрос.УстановитьТекстПараметровПост(ПодписанныйXML);

// Отправка

Ответ = Новый HTTPСоединение();

Попытка

ОтветСервера = Ответ.Получить(Запрос);

Если ОтветСервера.КодСостояния = 200 Тогда

// Обработка ответа ЕГАИС (например, сохранение квитанции)

Квитанция = ОтветСервера.ПолучитьТекст();

Квитанция.Записать("C:\temp\egais_reply.xml");

Иначе

Сообщить("Ошибка ЕГАИС: " + ОтветСервера.ПолучитьТекст());

КонецЕсли;

Исключение

Сообщить("Ошибка соединения: " + ОписаниеОшибки());

КонецПопытки;

Типичные ошибки при работе с ЕГАИС/Честный ЗНАК:

  • 🚫 Ошибка подписи — сертификат просрочен или неверный пароль. Проверьте в КриптоПро CSP.
  • 🚫 Неверный формат XML — используйте актуальные XSD-схемы с сайта ФНС.
  • 🚫 Превышен лимит запросов — ЕГАИС ограничивает количество запросов в минуту.
⚠️ Внимание: С 2026 года Честный ЗНАК требует использования протокола TLS 1.3 для передачи данных. Убедитесь, что ваш сервер 1С поддерживает эту версию (обновите платформу до 8.3.22+).
Что делать, если ЕГАИС возвращает ошибку "Недопустимый формат"

Обычно это означает, что в XML есть лишние пробелы, переносы строк или неверная кодировка. Откройте файл в HEX-редакторе (например, HxD) и удалите все символы до

Способ 5: Автоматическая отправка XML по расписанию

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

Шаги настройки:

  1. Создайте обработку, которая формирует и отправляет XML (например, ВыгрузкаДанныхНаСайт.epf).
  2. Добавьте регламентное задание:
    • Перейдите в Администрирование → Поддержка и обслуживание → Регламентные задания.
    • Создайте новое задание, укажите обработку и расписание (например, ежедневно в 2:00).
    • Настройте логирование ошибок (чтобы получать уведомления при сбоях).
  • Проверьте работу в тестовом режиме.
  • Пример кода для регламентного задания (отправка XML на FTP):

    Процедура ВыгрузитьДанныеНаСайт() Экспорт
    
    

    Попытка

    // 1. Формирование XML

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

    Запрос.Текст = "ВЫБРАТЬ ... "; // Ваш запрос для выгрузки данных

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

    XMLТекст = СформироватьXMLИзРезультата(Результат); // Ваша функция

    // 2. Сохранение во временный файл

    ПутьКФайлу = КаталогВременныхФайлов() + "export.xml";

    Текст.Записать(ПутьКФайлу, XMLТекст, "UTF-8");

    // 3. Отправка на FTP

    FTP = Новый FTPСоединение("ftp.example.com", "user", "pass", 21);

    FTP.Соединить();

    FTP.Загрузить(ПутьКФайлу, "import.xml");

    // 4. Логирование

    ЗаписатьВЖурналРегламентныхЗаданий("XML успешно выгружен", УровеньЖурнала.Информация);

    Исключение

    ЗаписатьВЖурналРегламентныхЗаданий("Ошибка: " + ОписаниеОшибки(), УровеньЖурнала.Ошибка);

    КонецПопытки;

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

    Советы по настройке автоматической отправки:

    • ⏰ Запускайте выгрузку в непиковое время (ночью или ранним утром), чтобы не нагружать базу.
    • 📊 Ведите журнал операций: записывайте дату, время и статус каждой отправки.
    • 🔄 Настройте повторные попытки при ошибках (например, 3 попытки с интервалом 10 минут).
    💡

    Регламентные задания в 1С позволяют автоматизировать отправку XML, но требуют предварительного тестирования в ручном режиме. Всегда проверяйте корректность формируемых файлов до настройки расписания.

    Разбор ошибок: почему XML не отправляется из 1С

    Если XML не отправляется или сервер возвращает ошибку, проверьте следующие моменты:

    Ошибка Возможная причина Решение
    403 Forbidden Нет прав доступа к ресурсу. Проверьте токен, логин/пароль или IP-адрес в настройках сервера.
    Сертификат не найден Неверный путь к сертификату ЭЦП или истёк срок действия. Обновите сертификат в КриптоПро и проверьте путь в коде.
    Таймаут соединения Сервер не отвечает или файл слишком большой. Увеличьте таймаут (HTTPСоединение.Таймаут = 600) или используйте FTP.
    Ошибка парсинга XML Несоответствие структуры XML ожидаемой схеме. Валидируйте файл по XSD-схеме получателя.

    Если проблема не решена:

    1. Проверьте логи сервера (если есть доступ).
    2. Используйте Postman или cURL для тестовой отправки XML вне 1С.
    3. Обратитесь в поддержку получателя с логами ошибок.
    ⚠️ Внимание: Если вы работаете с госсистемами (ЕГАИС, Честный ЗНАК, ФНС), ошибки могут быть связаны с изменениями в законодательстве. С 1 июля 2026 года в Честном ЗНАКе обновлены требования к структуре XML для маркировки обуви — добавлено поле <productGroup>. Сверяйте актуальные схемы на официальных ресурсах.

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

    Как отправить XML больше 100 МБ?

    Для крупных файлов используйте FTP или SFTP. Если нужна отправка через HTTP, разбейте файл на части (например, по 50 МБ) и отправляйте последовательно, а на стороне сервера объединяйте их. Также проверьте настройки php.ini (для PHP-серверов) или web.config (для IIS) — там могут быть ограничения на размер загружаемых файлов.

    Можно ли отправить XML без ЭЦП в ЕГАИС?

    Нет, ЕГАИС и Честный ЗНАК требуют квалифицированной электронной подписи. Без неё файл не будет принят. Если у вас нет ЭЦП, оформите её в аккредитованном удостоверяющем центре (например, Такском или СКБ Контур).

    Как проверить, дошёл ли XML до получателя?

    Способы проверки зависят от протокола:

    • Для HTTP: анализируйте код ответа сервера (200 — успех, 4xx/5xx — ошибка).
    • Для FTP: проверьте наличие файла на сервере.
    • Для ЕГАИС/Честный ЗНАК: запрашивайте статус документа через API или личный кабинет.
    • Для email: запросите у получателя подтверждение.

    Настройте уведомления в 1С (например, через ОповещениеПользователя).

    Какую версию 1С нужно использовать для работы с XML?

    Для большинства задач подходит 1С:Предприятие 8.3 (релиз не ниже 8.3.18). Для работы с ЕГАИС и Честным ЗНАКом рекомендуется версия 8.3.20+ (из-за поддержки актуальных протоколов шифрования). Если используете 1С:УТ 11 или 1С:ERP, проверьте наличие последних обновлений конфигурации — в них уже встроены механизмы для работы с госсистемами.

    Как отправить XML в Озон или Wildberries?

    Маркетплейсы требуют отправки данных через их API. Алгоритм:

    1. Получите API-ключ в личном кабинете маркетплейса.
    2. Сформируйте XML по документации Озон или Wildberries.
    3. Отправьте POST-запрос на эндпоинт API (например, https://api-seller.ozon.ru/v1/product/import).
    4. Обработайте ответ: успешная загрузка вернёт {"result": true}.

    Пример кода для Ozon:

    АдресAPI = "https://api-seller.ozon.ru/v1/product/import";
    

    КлючAPI = "ВашКлюч123";

    Запрос = Новый HTTPЗапрос(АдресAPI);

    Запрос.УстановитьЗаголовок("Client-Id", КлючAPI);

    Запрос.УстановитьЗаголовок("Content-Type", "application/xml");

    Запрос.УстановитьТекстПараметровПост(ТекстXML);

    Ответ = Новый HTTPСоединение().Получить(Запрос);

    Если Ответ.КодСостояния = 200 Тогда

    ДанныеОтвета = JSON.Прочитать(Ответ.ПолучитьТекст());

    Если ДанныеОтвета.result Тогда

    Сообщить("Данные успешно загружены в Ozon!");

    КонецЕсли;

    КонецЕсли;