Формат 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С: какие бывают и где применяются
В экосистеме 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С:Предприятие.В меню выберите
Файл → Открытьи найдите обработкуВыгрузкаЗагрузкаДанныхXML(входит в стандартную поставку).Укажите объект для выгрузки (например, справочник
Номенклатура) и настройте параметры:- 📋 Формат файла:
XML - 📁 Путь сохранения: например,
C:\Export\nomenklatura.xml - 🔍 Фильтр: можно выгрузить только активные позиции
- 📋 Формат файла:
Нажмите Выгрузить и дождитесь завершения операции.
Готовый файл будет выглядеть примерно так:
<?xml version="1.0" encoding="windows-1251"?>
<КоммерческаяИнформация>
<Каталог>
<Товар>
<Ид>12345</Ид>
<Наименование>Стул офисный</Наименование>
<Цена>4500.00</Цена>
</Товар>
</Каталог>
</КоммерческаяИнформация>
☑️ Проверка XML перед выгрузкой
Для автоматизации выгрузки можно написать собственный скрипт на встроенном языке 1С. Пример кода для выгрузки справочника:
Процедура ВыгрузитьВ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С:Бухгалтерии и укажите правила конвертации (какие документы и справочники синхронизировать).
В 1С:Бухгалтерии выполните аналогичные настройки, указав узел 1С:УТ.
Запустите обмен: данные будут упакованы в XML, переданы по протоколу
httpили сохранены в файл, а затем загружены в другую базу.- 🔴 Разные версии конфигураций: если в одной базе справочник
Номенклатураимеет реквизитАртикул, а в другой — нет, обмен завершится ошибкой. - 🔴 Конфликты идентификаторов: если в обеих базах есть товар с одинаковым
УникальнымИдентификатором, данные могут перезаписаться. - 🔴 Ошибки валидации: XML не проходит проверку по XSD-схеме (например, отсутствует обязательный тег).
Типичные проблемы при обмене:
Перед первым обменом сделайте резервную копию обеих баз. Если что-то пойдёт не так, вы сможете откатить изменения.
Для отладки обмена используйте журнал регистрации (Администрирование → Журналы → Журнал регистрации). Там можно увидеть, какие именно данные были переданы и где произошёл сбой.
⚠️ Внимание: При обмене через XML между базами с разными конфигурациями (например, 1С:УТ 11.4 и 1С:Бухгалтерия 3.0) обязательно настройте правила конвертации. Без них данные могут потеряться или исказиться. Используйте обработку КонвертацияДанных из стандартной поставки 1С.
XML и веб-сервисы: интеграция 1С с внешними системами
Помимо файлового обмена, 1С поддерживает работу с XML через веб-сервисы (SOAP). Это позволяет интегрироваться с:
- 🏢 Банками (например, СберБизнес, Тинькофф для платежей).
- 📦 Логистическими сервисами (Деловые Линии, ПЭК для трекинга грузов).
- 🛒 Маркетплейсами (Ozon, Wildberries для обмена заказами).
- ☁️ Облачными сервисами (например, 1С:ЭДО для электронного документооборота).
В конфигураторе создайте HTTP-соединение (
Новый HTTPСоединение).Укажите адрес WSDL-описания сервиса (например,
https://api.sberbank.ru/wsdl).Сгенерируйте прокси-класс для работы с методами сервиса.
Отправьте 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С по расписанию?
Да. Для этого:
- Создайте обработку с кодом выгрузки.
- Настройте регламентное задание (
Администрирование → Регламентные задания). - Укажите расписание (например, ежедневно в 23:00).
Пример кода для автоматической выгрузки:
Процедура ВыгрузитьДанныеАвтоматически()
ПутьКФайлу = "C:\Export\data_" + Формат(ТекущаяДата(), "ДФ='_') + ".xml";
ВыгрузитьВXML(ПутьКФайлу); // Ваша процедура выгрузки
КонецПроцедуры
🔹 Как проверить XML на ошибки перед отправкой в ФНС?
Используйте:
- 🔸 Встроенный валидатор 1С (обработка
ПроверкаXMLПоСхеме). - 🔸 Онлайн-сервисы вроде XMLValidation.
- 🔸 Программу XML Spy (платно, но поддерживает XSD-схемы ФНС).
Обязательно сверьте структуру XML с актуальной схемой .xsd от ФНС (скачать можно на сайте налоговой).
🔹 Почему 1С не видит XML-файл при загрузке?
Возможные причины:
- 🔸 Неверная кодировка (1С ожидает
windows-1251, а файл вUTF-8). - 🔸 Файл повреждён (например, обрыв при скачивании).
- 🔸 Нет прав на доступ к папке с файлом.
Решение: откройте файл в блокноте и сохраните с правильной кодировкой, или проверьте права на папку.