Формат XML (eXtensible Markup Language) давно стал стандартом для обмена данными между информационными системами — и 1С:Предприятие не исключение. В контексте 1С этот формат используется для экспорта/импорта справочников, документов, регистров и даже целых конфигураций. Но почему именно XML, а не JSON, CSV или двоичные форматы? Дело в гибкости: XML позволяет сохранять иерархическую структуру данных (например, документ с табличной частью и вложенными справочниками), поддерживает кодировки, атрибуты и пространства имён — всё то, что критично для бухгалтерских и складских систем.

Если вы когда-нибудь сталкивались с выгрузкой данных из 1С в банк, налоговую или торговую площадку (например, Wildberries или Ozon), то наверняка видели файлы с расширением .xml. В этой статье разберём, как 1С работает с XML на практике: от простых выгрузок до сложных интеграций через веб-сервисы. А ещё выясним, почему иногда XML в 1С ведёт себя «непредсказуемо» — например, почему при обмене с 1С:ЗУП и 1С:Бухгалтерией могут теряться реквизиты или возникать ошибки валидации.

Что такое XML и почему его используют в 1С

XML — это текстовый формат данных, который описывает информацию с помощью тегов (например, <Документ>...</Документ>). В отличие от JSON или CSV, он поддерживает:

  • 📌 Иерархию: данные могут быть вложенными (например, документ содержит табличную часть, а та — справочники номенклатуры).
  • 🔤 Атрибуты: дополнительные свойства тегов (например, <Строка Количество="5">).
  • 🌍 Пространства имён: позволяют избегать конфликтов тегов при обмене между разными системами (например, xs:schema для схем данных).
  • 📄 Схемы валидации: файлы .xsd проверяют корректность структуры XML перед обработкой.

В 1С:Предприятие XML применяется для:

  • 📤 Обмена данными между базами 1С (например, синхронизация 1С:УТ и 1С:Бухгалтерии).
  • 🏦 Интеграции с банками (выгрузка платёжных поручений в формате 1CClientBankExchange).
  • 📊 Отчётности (экспорт деклараций в ФНС или ПФР).
  • 🛒 Работы с маркетплейсами (обмен каталогами и заказами с Ozon, Wildberries, Яндекс.Маркет).

Главное преимущество XML в 1С — совместимость с государственными стандартами (например, форматы ФНС для электронной отчётности строятся на XML). Однако у формата есть и минусы: файлы получаются объёмными, а парсинг требует больше ресурсов, чем у JSON.

📊 Как часто вы используете XML в 1С?
Ежедневно
Раз в неделю
Редко, только для отчётности
Никогда не работал с XML

Форматы XML-файлов в 1С: какие бывают и где применяются

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

Формат файла Расширение Назначение Пример использования
Выгрузка/загрузка данных .xml Обмен справочниками, документами, регистрами между базами 1С Синхронизация 1С:Розница и 1С:УТ
Конфигурация 1С .cf (внутри XML) Хранение структуры конфигурации (методы, формы, объекты) Выгрузка конфигурации для сравнения версий
Обмен с банками .xml Формат 1CClientBankExchange для платёжных документов Выгрузка платёжек в СберБизнес или Тинькофф
Электронная отчётность .xml Форматы ФНС, ПФР, Росстат (например, НДФЛ-2) Экспорт декларации по НДС в личный кабинет налогоплательщика
Интеграция с маркетплейсами .xml или .zip Обмен каталогами, остатками, заказами Выгрузка номенклатуры на Ozon через 1С:ОбменЭДО

Например, при обмене с банком файл XML будет содержать теги вроде <Документ>, <Сумма> и <Плательщик>, а при выгрузке конфигурации — описание объектов метаданных (справочники, документы, регистры).

⚠️ Внимание: Форматы XML для отчётности (например, налоговые декларации) жёстко регламентированы ФНС. Если структура файла не соответствует схеме .xsd, ФНС откажет в приёме. Всегда проверяйте актуальные требования на сайте налоговой перед выгрузкой.

Как создать XML-файл в 1С: пошаговая инструкция

Рассмотрим простой пример: выгрузку справочника Номенклатура в XML. Для этого:

  1. Откройте конфигуратор 1С и перейдите в режим 1С:Предприятие.

  2. В меню выберите Файл → Открыть и найдите обработку ВыгрузкаЗагрузкаДанныхXML (входит в стандартную поставку).

  3. Укажите объект для выгрузки (например, справочник Номенклатура) и настройте параметры:

    • 📋 Формат файла: XML
    • 📁 Путь сохранения: например, C:\Export\nomenklatura.xml
    • 🔍 Фильтр: можно выгрузить только активные позиции
  • Нажмите Выгрузить и дождитесь завершения операции.

  • Готовый файл будет выглядеть примерно так:

    <?xml version="1.0" encoding="windows-1251"?>
    

    <КоммерческаяИнформация>

    <Каталог>

    <Товар>

    <Ид>12345</Ид>

    <Наименование>Стул офисный</Наименование>

    <Цена>4500.00</Цена>

    </Товар>

    </Каталог>

    </КоммерческаяИнформация>

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

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

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

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

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

    Запрос.Текст = "ВЫБРАТЬ

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

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

    |ИЗ

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

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

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

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

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

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

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

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

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

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

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

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

    КонецЦикла;

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

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

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

    Обмен данными между базами 1С через XML

    Один из самых распространённых сценариев — синхронизация двух баз 1С, например, 1С:Управление торговлей и 1С:Бухгалтерия. Для этого:

    1. В 1С:УТ настройте план обмена (меню Администрирование → Обмен данными → Планы обмена).

    2. Создайте узел обмена для 1С:Бухгалтерии и укажите правила конвертации (какие документы и справочники синхронизировать).

    3. В 1С:Бухгалтерии выполните аналогичные настройки, указав узел 1С:УТ.

    4. Запустите обмен: данные будут упакованы в XML, переданы по протоколу http или сохранены в файл, а затем загружены в другую базу.

    5. Типичные проблемы при обмене:

      • 🔴 Разные версии конфигураций: если в одной базе справочник Номенклатура имеет реквизит Артикул, а в другой — нет, обмен завершится ошибкой.
      • 🔴 Конфликты идентификаторов: если в обеих базах есть товар с одинаковым УникальнымИдентификатором, данные могут перезаписаться.
      • 🔴 Ошибки валидации: XML не проходит проверку по XSD-схеме (например, отсутствует обязательный тег).
    💡

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

    Для отладки обмена используйте журнал регистрации (Администрирование → Журналы → Журнал регистрации). Там можно увидеть, какие именно данные были переданы и где произошёл сбой.

    ⚠️ Внимание: При обмене через XML между базами с разными конфигурациями (например, 1С:УТ 11.4 и 1С:Бухгалтерия 3.0) обязательно настройте правила конвертации. Без них данные могут потеряться или исказиться. Используйте обработку КонвертацияДанных из стандартной поставки 1С.

    XML и веб-сервисы: интеграция 1С с внешними системами

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

    • 🏢 Банками (например, СберБизнес, Тинькофф для платежей).
    • 📦 Логистическими сервисами (Деловые Линии, ПЭК для трекинга грузов).
    • 🛒 Маркетплейсами (Ozon, Wildberries для обмена заказами).
    • ☁️ Облачными сервисами (например, 1С:ЭДО для электронного документооборота).
    • Пример подключения к веб-сервису банка:

      1. В конфигураторе создайте HTTP-соединение (Новый HTTPСоединение).

      2. Укажите адрес WSDL-описания сервиса (например, https://api.sberbank.ru/wsdl).

      3. Сгенерируйте прокси-класс для работы с методами сервиса.

      4. Отправьте XML-запрос и обработайте ответ. Пример кода:

    Прокси = ПланыОбмена.СоздатьПрокси(
    

    "https://api.sberbank.ru/wsdl",

    "ИмяПользователя",

    "Пароль");

    Запрос = Прокси.СоздатьЗапрос();

    Запрос.УстановитьТелоИзСтроки(

    "<?xml version='1.0'?>

    <ЗапросНаПлатеж>

    <Сумма>1000.00</Сумма>

    <СчетОтправителя>40817810123456789012</СчетОтправителя>

    </ЗапросНаПлатеж>");

    Ответ = Прокси.ВыполнитьЗапрос(Запрос);

    Результат = Ответ.ПолучитьТелоКакСтроку();

    Главная сложность при работе с веб-сервисами — обработка ошибок. Например, банк может вернуть XML с кодом ошибки 1003 («Недостаточно средств»), и эту ситуацию нужно корректно обработать в 1С.

    Пример обработки ошибки от веб-сервиса

    Если в ответе приходит тег <Ошибка>, можно вывести сообщение пользователю или записать событие в журнал:

    Если НРег(Результат) = "<Ошибка>" Тогда
    

    Сообщить("Ошибка банка: " + Сред(Результат, Найти(Результат, "<Код>") + 5, 10));

    КонецЕсли;

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

    Даже опытные разработчики сталкиваются с проблемами при работе с XML в 1С. Вот самые распространённые:

    Ошибка Причина Решение
    Ошибка при чтении XML: неверная кодировка Файл сохранён в UTF-8, а 1С ожидает windows-1251 (или наоборот) Укажите правильную кодировку при открытии файла: ЗаписьXML.ОткрытьФайл(..., "UTF-8")
    Не найден обязательный элемент <Ид> Структура XML не соответствует XSD-схеме (отсутствует требуемый тег) Проверьте файл по схеме .xsd (например, через XML Validator)
    Ошибка конвертации данных: тип не совпадает В XML передано строковое значение, а 1С ожидает число (или наоборот) Используйте явное приведение типов: Число(ЗначениеИзXML)
    Дублирование уникального идентификатора В базе уже есть объект с таким же УникальныйИдентификатор Настройте правила обмена: обновлять существующие объекты, а не создавать новые
    Ошибка подключения к веб-сервису Неверный адрес WSDL или проблемы с сертификатом Проверьте URL и настройки прокси в 1С (Администрирование → Настройки программы → Сетевые настройки)

    Если ошибка связана с валидацией XML, используйте внешние инструменты вроде XML Notepad или онлайн-валидаторов (например, XMLValidation.com). Они покажут, в какой именно строке файла нарушена структура.

    ⚠️ Внимание: При обмене с маркетплейсами (например, Ozon) требования к XML могут меняться ежемесячно. Всегда сверяйтесь с актуальной документацией партнёра перед выгрузкой каталога. Например, в 2026 году Ozon ужесточил проверку тега <Баркод> — теперь он обязателен для всех товаров.

    XML vs JSON в 1С: что лучше выбрать для обмена данными

    Хотя XML исторически доминирует в 1С, в последних версиях платформы появилась поддержка JSON. Когда какой формат предпочтительнее?

    Критерий XML JSON
    Структурированность Поддерживает иерархию, атрибуты, пространства имён Проще для плоских структур (список объектов)
    Объём файла Занимает больше места из-за тегов Компактнее (нет закрывающих тегов)
    Скорость обработки Медленнее (требуется парсинг тегов) Быстрее (легче конвертируется в объекты 1С)
    Поддержка в 1С Полная (встроенные методы ЗаписьXML, ЧтениеXML) Частичная (требуется Новый ЧтениеJSON, доступно с версии 8.3.10)
    Гос. стандарты Используется в отчётности (ФНС, ПФР) Не применяется

    Выбор формата зависит от задачи:

    • 🔹 Используйте XML, если работаете с госорганами, банками или старыми системами (например, 1С 7.7).
    • 🔹 Переходите на JSON, если обмениваетесь данными с современными API (например, Яндекс.Касса или Тинькофф.Бизнес).

    В последних версиях 1С (8.3.20+) появилась возможность конвертировать XML в JSON и обратно с помощью метода ПреобразоватьXMLВJSON(). Это упрощает интеграцию с системами, которые не поддерживают XML.

    💡

    Для обмена с маркетплейсами (Ozon, Wildberries) чаще требуется XML, но некоторые (например, Яндекс.Маркет) уже принимают JSON. Уточняйте формат в документации партнёра.

    FAQ: Ответы на частые вопросы о XML в 1С

    🔹 Как открыть XML-файл из 1С в читаемом виде?

    Используйте любой текстовый редактор (например, Notepad++) или специализированные инструменты вроде XML Notepad, Oxygen XML Editor. Для больших файлов подойдёт Excel (импортируйте данные через Данные → Из текста).

    🔹 Почему при обмене между базами 1С теряются данные?

    Чаще всего это происходит из-за:

    • 🔸 Несовпадения структур справочников (в одной базе есть реквизит, в другой — нет).
    • 🔸 Ошибок в правилах конвертации (не настроено сопоставление полей).
    • 🔸 Разных версий конфигураций (например, 1С:УТ 10.3 и 1С:УТ 11.4).
    • Решение: проверьте настройки плана обмена и правила конвертации в обработке КонвертацияДанных.

    🔹 Можно ли автоматизировать выгрузку XML из 1С по расписанию?

    Да. Для этого:

    1. Создайте обработку с кодом выгрузки.
    2. Настройте регламентное задание (Администрирование → Регламентные задания).
    3. Укажите расписание (например, ежедневно в 23:00).

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

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

    ПутьКФайлу = "C:\Export\data_" + Формат(ТекущаяДата(), "ДФ='_') + ".xml";

    ВыгрузитьВXML(ПутьКФайлу); // Ваша процедура выгрузки

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

    🔹 Как проверить XML на ошибки перед отправкой в ФНС?

    Используйте:

    • 🔸 Встроенный валидатор 1С (обработка ПроверкаXMLПоСхеме).
    • 🔸 Онлайн-сервисы вроде XMLValidation.
    • 🔸 Программу XML Spy (платно, но поддерживает XSD-схемы ФНС).

    Обязательно сверьте структуру XML с актуальной схемой .xsd от ФНС (скачать можно на сайте налоговой).

    🔹 Почему 1С не видит XML-файл при загрузке?

    Возможные причины:

    • 🔸 Неверная кодировка (1С ожидает windows-1251, а файл в UTF-8).
    • 🔸 Файл повреждён (например, обрыв при скачивании).
    • 🔸 Нет прав на доступ к папке с файлом.

    Решение: откройте файл в блокноте и сохраните с правильной кодировкой, или проверьте права на папку.