Выгрузка данных из 1С:Предприятие в формат XML — одна из самых востребованных операций при интеграции с внешними системами, маркетплейсами или государственными сервисами. Без правильно сформированного XML-файла невозможно отправить декларацию в ФНС, загрузить номенклатуру на Ozon или Wildberries, либо синхронизировать данные с CRM. Однако стандартные механизмы 1С не всегда интуитивно понятны, а ошибки в структуре XML могут привести к отказам при загрузке.

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

Особое внимание уделим обмену с маркетплейсами — здесь требования к XML строже, чем в бухгалтерских отчётах, и мы покажем, как адаптировать выгрузку под спецификации Ozon, Wildberries и Яндекс.Маркет.

1. Зачем нужна выгрузка в XML из 1С?

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

  • 📄 Отчётности: отправка деклараций в ФНС, ПФР, Росстат через операторов ЭДО (например, Такском или СБИС).
  • 🛒 Интеграции с маркетплейсами: выгрузка каталога товаров, остатков, цен на Ozon, Wildberries, Яндекс.Маркет.
  • 🔄 Синхронизации с CRM: обмен данными с Bitrix24, АмоCRM, Zoho.
  • 🏦 Банковские сервисы: формирование платежных поручений, выписок в форматах, поддерживаемых банками (например, СберБизнес).
  • 📦 Логистика: передача данных о заказах в транспортные компании (СДЭК, Boxberry).

Главное преимущество XML — его гибкость. В отличие от фиксированных форматов (например, .xlsx или .csv), XML позволяет описывать сложные иерархические структуры, что критично для документооборота. Например, в одном файле можно передать не только список товаров, но и их свойства, категории, изображения, а также правила скидок.

Однако у этого формата есть и минусы:

  • ⚠️ Чувствительность к ошибкам: одна пропущенная запятая или неверный тег сделает файл нечитаемым.
  • 🐢 Большой размер: XML-файлы объёмнее, чем бинарные форматы (например, .json).
  • 🔧 Сложность настройки: требует знания структуры данных и иногда программирования.
📊 Для чего вам нужна выгрузка в XML из 1С?
Отчётность в госорганы
Интеграция с маркетплейсами
Синхронизация с CRM
Другое

2. Способы выгрузки данных в XML из 1С

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

2.1. Стандартные обработки (без программирования)

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

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

🔹 Ограничения: стандартные обработки часто формируют XML по шаблону, который может не подходить под требования внешней системы. Например, Ozon требует обязательные поля barcode и categoryId, которых нет в базовой выгрузке.

2.2. Универсальный обмен данными (УОД)

Модуль Универсальный обмен данными (доступен в 1С:УТ 11, 1С:ERP) позволяет настраивать правила выгрузки через графический интерфейс. Преимущество — гибкость: можно указать, какие поля и в каком формате экспортировать.

Чтобы настроить выгрузку:

  1. Перейдите в Администрирование → Обмен данными → Универсальный обмен.
  2. Создайте новый Формат обмена (например, Выгрузка для Ozon).
  3. В конструкторе укажите источник данных (например, справочник Номенклатура) и настройте соответствие полей.
  4. Сохраните шаблон и выполните выгрузку.

⚠️ Внимание: если выгружаете данные для маркетплейсов, проверьте требования к структуре XML на их сайтах. Например, Wildberries требует, чтобы все цены были указаны с НДС, даже если вы работаете без него.

2.3. Программная выгрузка (1C:Enterprise Script)

Для нестандартных задач (например, выгрузка только определённых товаров с фильтрацией по остаткам) потребуется написать код на встроенном языке . Основные объекты для работы с XML:

  • ЗаписьXML — для формирования файла.
  • ЧтениеXML — для проверки или модификации существующего XML.
  • XDTO — для работы со схемами XML (актуально для сложных структур).

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

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

ПутьКФайлу = "C:\Export\Номенклатура.xml";

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

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

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

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

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

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

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

ЗаписьXML.ЗаписатьАтрибут("Ид", Выборка.Ссылка.УникальныйИдентификатор());

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

ЗаписьXML.ЗаписатьЭлемент("Цена", Выборка.Цена);

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

КонецЦикла;

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

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

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

🔹 Совет: если выгружаете большие объёмы данных (тысячи строк), используйте ПотоковыйЗаписьXML — он работает быстрее и потребляет меньше памяти.

2.4. Внешние обработки и расширения

Для специфических задач (например, выгрузка в формат CommerceML для 1С-Битрикс) удобно использовать готовые обработки:

  • 📥 ВыгрузкаУТ11ВWildberries — для интеграции с Wildberries.
  • 📥 Обмен с Ozon — официальная обработка от Ozon.
  • 📥 Универсальный обмен в формате XML — для кастомизации под любые требования.

Скачать их можно на портале 1С:ИТС или на сайтах партнёров. Установка стандартная: через Файл → Открыть в конфигураторе.

☑️ Подготовка к выгрузке в XML

Выполнено: 0 / 4

3. Требования к структуре XML для популярных сервисов

Каждый сервис предъявляет свои требования к формату XML. Например, ФНС требует строгого соответствия схеме XSD, а Ozon — наличия обязательных полей типа barcode или vendorCode. В таблице ниже — ключевые особенности для самых востребованных направлений:

Сервис Требования к XML Особенности
ФНС (декларации) Строгая схема XSD, проверка через Такском или СБИС. Обязательны реквизиты ИНН, КПП, версия формата (например, 5.05 для НДС).
Ozon Формат YML (Yandex Market Language) или CommerceML. Требуются categoryId, barcode, price с НДС.
Wildberries Собственный формат с обязательным vendorCode. Цены указываются с НДС, даже если вы не плательщик.
1С-Битрикс Формат CommerceML 2.0. Поддерживает выгрузку свойств, картинок, остатков.
СДЭК Формат ShopCMS или Simple. Обязательны вес, габариты, declarable cost.

🔹 Пример: для Ozon минимальный XML должен содержать:

<?xml version="1.0" encoding="UTF-8"?>

<yml_catalog date="2026-05-20 12:00">

<shop>

<name>Ваш магазин</name>

<company>ООО Ромашка</company>

<url>https://ваш-сайт.ru</url>

<currencies>

<currency id="RUR" rate="1"/>

</currencies>

<offers>

<offer id="123">

<name>Товар 1</name>

<price>1000</price>

<currencyId>RUR</currencyId>

<categoryId>15</categoryId>

<barcode>4601234567890</barcode>

</offer>

</offers>

</shop>

</yml_catalog>

⚠️ Внимание: если выгружаете данные для маркетплейсов, проверьте актуальные требования к категориям (categoryId). Они могут меняться раз в несколько месяцев. Например, Ozon в 2026 году обновил классификатор, и старые ID категорий перестали работать.

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

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

  • 🚫 Ошибка кодировки: файл сохраняется в Windows-1251 вместо UTF-8.
    Решение: явным образом укажите кодировку при записи: ЗаписьXML.ОткрытьФайл(Путь, "UTF-8").
  • 🚫 Пропущенные теги: например, отсутствует обязательный <currencyId> для Ozon.
    Решение: проверьте структуру XML через валидатор (например, XMLValidation).
  • 🚫 Неверные данные: цена указана без НДС, хотя маркетплейс требует с НДС.
    Решение: добавьте в запрос расчёт НДС: ЦенаСНДС = Цена * (1 + СтавкаНДС/100).
  • 🚫 Слишком большой файл: выгрузка прерывается из-за ограничений памяти.
    Решение: разбейте данные на части или используйте ПотоковыйЗаписьXML.
  • 🚫 Ошибка XSD-схемы: файл не проходит валидацию в ФНС.
    Решение: скачайте актуальную схему с сайта ФНС и проверьте соответствие.

🔹 Совет: если выгружаете данные для госорганов, используйте встроенный механизм проверки в 1С:Отчётность (раздел Сервис → Проверка XML). Он покажет все ошибки до отправки.

Что делать, если XML не загружается на маркетплейс?

Сначала проверьте файл через валидатор (например, на сайте XMLValidation). Если ошибок нет, сравните структуру вашего XML с примером из документации маркетплейса. Частая проблема — несовпадение названий тегов (например, вы используете <product>, а требуется <offer>). Также убедитесь, что все обязательные поля заполнены (баркоды, категории, цены).

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

Если выгрузка нужна регулярно (например, ежедневный экспорт остатков на Wildberries), её можно автоматизировать. В 1С для этого есть два инструмента:

5.1. Регламентные задания

Позволяют запускать выгрузку по расписанию (например, каждый день в 3:00). Настройка:

  1. Перейдите в Администрирование → Поддержка и обслуживание → Регламентные задания.
  2. Создайте новое задание, укажите процедуру выгрузки (например, ВыгрузитьВXML()).
  3. Настройте расписание (ежедневно, еженедельно и т.д.).
  4. Укажите пользователя, от имени которого будет выполняться задача.

⚠️ Внимание: если выгрузка идёт долго (более 10 минут), регламентное задание может прерваться по таймауту. В этом случае используйте фоновые задачи.

5.2. Фоновые задачи

Подходят для длительных операций. Пример кода для создания фоновой задачи:

Процедура ЗапуститьВыгрузкуВФоне()

Параметры = Новый Структура();

Параметры.Вставить("ПутьКФайлу", "C:\Export\Номенклатура.xml");

ФоноваяЗадача = ФоновыеЗадачи.СоздатьЗадачу(

"ВыгрузкаВXML",

ЭтотОбъект,

"ВыполнитьВыгрузку",

Параметры,

Новый УникальныйИдентификатор

);

ФоноваяЗадача.ВыполнитьАсинхронно();

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

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

ПутьКФайлу = Параметры.ПутьКФайлу;

// Код выгрузки здесь

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

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

  • ✅ Не блокирует интерфейс пользователя.
  • ✅ Можно отслеживать статус выполнения.
  • ✅ Поддерживает приоритеты (например, срочные задачи выполняются первыми).

5.3. Внешние сервисы интеграции

Если автоматизация через 1С сложна, можно использовать промежуточные сервисы:

  • 🔗 1С:Коннект — для обмена с маркетплейсами.
  • 🔗 Атол Онлайн — для интеграции с кассовым ПО.
  • 🔗 МойСклад — для синхронизации с облачными сервисами.

Эти сервисы берут на себя формирование XML по актуальным требованиям и отправку данных.

💡

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

6. Проверка и валидация XML

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

6.1. Онлайн-валидаторы

Бесплатные сервисы для проверки структуры XML:

  • 🌐 XMLValidation — проверяет хорошо сформированность и соответствие XSD.
  • 🌐 CodeBeautify — визуализирует структуру и находит ошибки.
  • 🌐 FreeFormatter — поддерживает проверку по XSD-схемам.

6.2. Встроенные средства 1С

В конфигураторе можно проверить XML на корректность:

Проверка = Новый ЧтениеXML;

Проверка.ОткрытьФайл("C:\Export\Номенклатура.xml");

Попытка

Пока Проверка.Прочитать() Цикл

// Если дошли до конца без ошибок, файл корректен

КонецЦикла;

Сообщить("XML корректен!");

Исключение

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

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

6.3. Проверка через XSD-схемы

Если у вас есть схема XSD (например, от ФНС или маркетплейса), проверьте соответствие:

Валидатор = Новый ВалидаторXDTO;

Схема = ПолучитьXDTOПакет().Схемы.Получить("ФНС_НДС_5.05.xsd");

Результат = Валидатор.Валидировать(ПутьКФайлу, Схема);

Если Не Результат.Успех Тогда

Сообщить("Ошибки: " + Результат.Ошибки);

КонецЕсли;

⚠️ Внимание: если выгружаете данные для ФНС, обязательно проверьте файл через сервис оператора ЭДО (например, Такском). Даже если XML прошёл валидацию по XSD, могут быть логические ошибки (например, неверный КБК или период).

💡

Сохраните шаблон корректного XML-файла от получателя (например, пример от Ozon) и сравнивайте с ним свою выгрузку через программу сравнения файлов (например, WinMerge).

7. Оптимизация больших выгрузок

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

7.1. Постраничная выгрузка

Разбейте данные на части (например, по 1000 товаров) и выгружайте их отдельными файлами:

Процедура ВыгрузитьПостранично(РазмерСтраницы = 1000)

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

НомерСтраницы = 1;

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

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

Если Мод(Выборка.ТекущаяСтрока, РазмерСтраницы) = 1 Тогда

ПутьКФайлу = "C:\Export\Номенклатура_Стр" + НомерСтраницы + ".xml";

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

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

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

НомерСтраницы = НомерСтраницы + 1;

КонецЕсли;

// Запись товара

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

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

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

Если Мод(Выборка.ТекущаяСтрока, РазмерСтраницы) = 0 Тогда

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

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

КонецЕсли;

КонецЦикла;

Если ЗаписьXML.Открыт Тогда

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

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

КонецЕсли;

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

7.2. Использование временных таблиц

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

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

Запрос.Текст =

"ВЫБРАТЬ

| Номенклатура.Ссылка КАК Ссылка,

| Номенклатура.Наименование КАК Наименование,

| ОстаткиОстатки.КоличествоОстаток КАК Остаток

|ИЗ

| Справочник.Номенклатура КАК Номенклатура

| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки КАК ОстаткиОстатки

| ПО Номенклатура.Ссылка = ОстаткиОстатки.Номенклатура

|ГДЕ

| ОстаткиОстатки.КоличествоОстаток > 0";

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

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

7.3. Сжатие XML

Большие XML-файлы можно архивировать перед отправкой. В 1С для этого есть объект ZipФайл:

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

Zip.Добавить("C:\Export\Номенклатура.xml", "номенклатура.xml");

Zip.Записать("C:\Export\Номенклатура.zip");

🔹 Совет: если выгружаете данные на FTP, используйте FTPСоединение с поддержкой сжатия (например, MODE Z). Это ускорит передачу.

8. Примеры готовых решений для популярных задач

В этом разделе — готовые обработки и фрагменты кода для типовых сценариев.

8.1. Выгрузка номенклатуры для Ozon (YML)

Обработка формирует XML в формате YML, который принимает Ozon:

Процедура ВыгрузитьДляOzon()

ПутьКФайлу = "C:\Export\Ozon.yml";

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

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

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

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

ЗаписьXML.ЗаписатьАтрибут("date", ТекущаяДата());

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

ЗаписьXML.ЗаписатьЭлемент("name", "Ваш магазин");

ЗаписьXML.ЗаписатьЭлемент("company", "ООО Ромашка");

ЗаписьXML.ЗаписатьЭлемент("url", "https://ваш-сайт.ru");

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

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

ЗаписьXML.ЗаписатьАтрибут("id", "RUB");

ЗаписьXML.ЗаписатьАтрибут("rate", "1");

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

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

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

// Здесь добавьте категории (пример для одной категории)

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

ЗаписьXML.ЗаписатьАтрибут("id", "1");

ЗаписьXML.ЗаписатьТекст("Одежда");

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

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

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

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

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

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

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

ЗаписьXML.ЗаписатьАтрибут("available", "true");

ЗаписьXML.ЗаписатьЭлемент("url", "https://ваш-сайт.ru/product" + Выборка.Ссылка.УникальныйИдентификатор());

ЗаписьXML.ЗаписатьЭлемент("price", Выборка.Цена * 1.2); // Цена с НДС 20%

ЗаписьXML.ЗаписатьЭлемент("currencyId", "RUB");

ЗаписьXML.ЗаписатьЭлемент("categoryId", "1");

ЗаписьXML.ЗаписатьЭлемент("picture", "https://ваш-сайт.ru/img/" + Выборка.Артикул + ".jpg");

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

ЗаписьXML.ЗаписатьЭлемент("vendor", Выборка.Производитель);