Выгрузка документов из 1С:Предприятие в формат XML — стандартная задача для обмена данными между системами, сдачи отчётности в госорганы или интеграции с внешними сервисами. Несмотря на кажущуюся простоту, процесс часто сопровождается ошибками: от неверной структуры файла до проблем с кодировкой. Эта статья поможет разобраться, как выгрузить документы корректно, какие настройки использовать в разных версиях платформы и как избежать типичных ошибок.
Мы рассмотрим не только базовые способы экспорта через типовой функционал 1С, но и продвинутые методы для программистов — включая работу с XDTO, настройку обменов данными и обработку специфических форматов (например, для ЭДО или Маркировки товаров). Особое внимание уделим нюансам, которые редко упоминают в документации: как сохранить иерархию документов, почему могут теряться реквизиты и как проверить валидность полученного XML.
Если вы бухгалтер, который впервые сталкивается с выгрузкой, или разработчик, которому нужно автоматизировать процесс — здесь найдёте ответы на ключевые вопросы. А для тех, кто уже пробовал экспортировать данные, но получал ошибки, мы подготовили раздел с разбором самых распространённых проблем и их решений.
Зачем выгружать документы из 1С в XML?
Формат XML (eXtensible Markup Language) стал де-факто стандартом для обмена структурированными данными между информационными системами. В контексте 1С:Предприятие он используется для:
- 📄 Сдачи отчётности в ФНС, ПФР, Росстат и другие госорганы (например, декларации, расчёты по страховым взносам).
- 🔄 Интеграции с внешними сервисами: банками (выписки, платежки), маркетплейсами (Ozon, Wildberries), системами ЭДО (Диадок, СБИС).
- 📦 Обмена данными между разными базами 1С (например, между 1С:Бухгалтерия и 1С:УТ).
- 🏷️ Участия в системе маркировки (товары подлежат обязательной маркировке: лекарства, обувь, табак и др.).
- 🔧 Резервного копирования отдельных документов или справочников в удобном для восстановления формате.
Главное преимущество XML перед другими форматами (например, DBF или Excel) — это сохранение иерархической структуры данных и поддержка метаинформации (атрибутов, пространств имён). Например, в одном файле можно передать не только сам документ "Реализация товаров", но и связанные с ним справочники (контрагенты, номенклатура), а также служебную информацию о версии формата или дате создания.
Однако у формата есть и минусы: файлы XML часто получаются объёмными, а их обработка требует больше ресурсов, чем у бинарных форматов. Кроме того, не все внешние системы корректно работают с русскими названиями тегов или специальными символами — это нужно учитывать при настройке выгрузки.
Способы выгрузки документов в XML: от простого к сложному
В 1С:Предприятие есть несколько способов экспорта документов в XML, отличающихся сложностью настройки и гибкостью. Выбор метода зависит от задачи:
- 🛠️ Типовые обработки — подходят для разовых выгрузок (например, отправка декларации в ФНС). Не требуют программирования, но ограничены стандартными форматами.
- 📝 Универсальный обмен данными — встроенный механизм для настройки обменов между базами. Позволяет гибко настроить структуру XML, но требует предварительной подготовки.
- 💻 Программная выгрузка (через
XDTO,ЗаписьXML) — для разработчиков. Даёт полный контроль над структурой файла, но требует знания языка 1С. - 🔌 Внешние обработки и расширения — готовые решения от партнёров 1С (например, для маркировки или ЭДО). Упрощают работу, но могут быть платными.
Рассмотрим каждый способ подробнее.
1. Типовые обработки выгрузки
Самый простой способ — использовать встроенные обработки, которые есть в большинстве конфигураций 1С. Например, в 1С:Бухгалтерия 8 для выгрузки отчётности в XML:
- Перейдите в раздел
Отчёты → Регламентированные отчёты. - Выберите нужный отчёт (например, "Декларация по НДС").
- Нажмите
Выгрузитьи укажите путь для сохранения файла.
Файл будет сформирован в формате, соответствующем требованиям госоргана (например, для ФНС это формат .xml с подписью .sig). Аналогично работают обработки для выгрузки платежных поручений в банк или документов для ЭДО.
⚠️ Внимание: Типовые обработки часто обновляются вместе с релизами 1С. Если выгрузка внезапно перестала работать, проверьте актуальность версии конфигурации в Справка → О программе.
2. Универсальный обмен данными
Если нужно настроить регулярный обмен данными между базами или внешними системами, используйте механизм Универсальный обмен данными (Панель управления → Обмен данными). Он позволяет:
- 📌 Настроить правила обмена (какие документы и справочники выгружать).
- 🔄 Задать формат XML (включая пространства имён и атрибуты).
- 📅 Автоматизировать выгрузку по расписанию.
Пример настройки:
- Создайте новый обмен в
Администрирование → Обмен данными → Универсальный обмен. - Укажите формат сообщения (например,
XML). - Настройте правила конвертации для документов (какие реквизиты включать в выгрузку).
- Запустите тестовую выгрузку и проверьте полученный файл.
Этот способ подходит для интеграции с 1С:УТ, 1С:ERP или внешними системами, где требуется гибкая настройка структуры XML.
☑️ Подготовка к настройке универсального обмена
3. Программная выгрузка (для разработчиков)
Если типовые методы не подходят, можно написать собственную обработку на встроенном языке 1С. Например, для выгрузки документа "РеализацияТоваровУслуг" в XML:
Процедура ВыгрузитьВXML(Документ, ПутьКФайлу)
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл(ПутьКФайлу);
ЗаписьXML.ЗаписатьОбъявлениеXML();
ЗаписьXML.ЗаписатьНачалоЭлемента("Документ");
ЗаписьXML.ЗаписатьАтрибут("Дата", Документ.Дата);
ЗаписьXML.ЗаписатьАтрибут("Номер", Документ.Номер);
// Выгрузка табличной части
ЗаписьXML.ЗаписатьНачалоЭлемента("Товары");
Для Каждого Строка Из Документ.Товары Цикл
ЗаписьXML.ЗаписатьНачалоЭлемента("Товар");
ЗаписьXML.ЗаписатьАтрибут("Наименование", Строка.Номенклатура);
ЗаписьXML.ЗаписатьАтрибут("Количество", Строка.Количество);
ЗаписьXML.ЗаписатьКонецЭлемента(); // Товар
КонецЦикла;
ЗаписьXML.ЗаписатьКонецЭлемента(); // Товары
ЗаписьXML.ЗаписатьКонецЭлемента(); // Документ
ЗаписьXML.Закрыть();
КонецПроцедуры
Для работы с XDTO (если требуется валидация по XSD-схеме) используйте объект ФабрикаXDTO:
ФабрикаXDTO = Новый ФабрикаXDTO();
ПакетXDTO = ФабрикаXDTO.Пакеты().Добавить("http://example.com/schema");
ТипОбъектаXDTO = ПакетXDTO.Типы().Получить("ДокументType");
ОбъектXDTO = ФабрикаXDTO.Sоздать(ТипОбъектаXDTO);
ОбъектXDTO.Дата = Документ.Дата;
// ... заполнение других свойств
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл(ПутьКФайлу);
ФабрикаXDTO.ЗаписатьXML(ЗаписьXML, ОбъектXDTO);
⚠️ Внимание: При программной выгрузке обязательно обрабатывайте специальные символы (например,&,<,>), иначе XML будет невалидным. Используйте функциюСтрЗначениеВXML().
Настройка структуры XML: что должно быть в файле?
Корректная структура XML-файла зависит от цели выгрузки. Например, для ФНС требуется строгое соответствие XSD-схемам, а для внутреннего обмена между базами можно использовать упрощённый формат. Рассмотрим ключевые элементы, которые обычно включают в XML:
| Элемент XML | Описание | Пример |
|---|---|---|
<Документ> |
Корневой элемент, содержит метаданные документа (тип, дата, номер). | <Документ Тип="РеализацияТоваровУслуг" Дата="2026-05-20" Номер="РТ-000123"> |
<Контрагент> |
Информация о партнёре (ИНН, КПП, наименование). | <Контрагент ИНН="1234567890" Наименование="ООО Ромашка"> |
<Товары> |
Табличная часть с перечнем товаров/услуг. | <Товар Артикул="ABC123" Количество="5" Цена="1000.00"/> |
<Сумма> |
Итоговые суммы (включая НДС). | <Сумма Всего="5000.00" НДС="18%"> |
xmlns |
Пространство имён (обязательно для некоторых форматов, например, для ЭДО). | <Документ xmlns="http://v8.1c.ru/edi/edi_stnd"> |
Для отчётности в госорганы структура жёстко регламентирована. Например, декларация по НДС должна соответствовать схеме NDS_6_05_04.xsd. Если выгружаемый файл не проходит валидацию, проверьте:
- 🔍 Наличие всех обязательных тегов (например,
<СвНП>для налогоплательщика). - 📏 Формат данных (даты должны быть в виде
ГГГГ-ММ-ДД, суммы — с двумя знаками после запятой). - 🔠 Кодировку (обычно требуется
UTF-8илиwindows-1251).
Для проверки структуры можно использовать инструменты вроде XML Validator или встроенную валидацию в 1С (если используется XDTO).
Пример XSD-схемы для декларации по НДС
Схема определяет строгие правила для тегов, атрибутов и типов данных. Например, элемент <Декларация> должен содержать обязательный атрибут "КНД" (код налоговой декларации), а суммы должны быть указаны с точностью до копеек. Полные схемы публикует ФНС на своём сайте.
Типичные ошибки при выгрузке XML и как их исправить
Даже при правильной настройке выгрузки могут возникать ошибки. Вот самые распространённые проблемы и способы их решения:
1. Ошибки валидации XML
Если файл не проходит проверку (например, в Контур.Диадок или при загрузке в личный кабинет ФНС), причины могут быть следующими:
- 🚫 Отсутствует обязательный тег — проверьте XSD-схему и добавьте пропущенные элементы.
- 🔤 Неверный формат данных — например, дата в виде
20.05.2026вместо2026-05-20. Используйте функциюФормат(Дата, "ДФ=yyyy-MM-dd"). - 🌍 Проблемы с кодировкой — если в XML появляются "кракозябры", укажите кодировку явно:
ЗаписьXML.УстановитьКодировку(КодировкаТекста.UTF8).
Пример исправления ошибки с датой:
// Неправильно:
ЗаписьXML.ЗаписатьАтрибут("Дата", Документ.Дата); // Вернёт "20.05.2026"
// Правильно:
ДатаXML = Формат(Документ.Дата, "ДФ=yyyy-MM-dd");
ЗаписьXML.ЗаписатьАтрибут("Дата", ДатаXML); // Вернёт "2026-05-20"
2. Потеря данных при выгрузке
Иногда в XML не попадают некоторые реквизиты документов. Причины:
- 📋 Не настроены правила обмена — проверьте, какие реквизиты включены в выгрузку (в
Универсальном обмене данными). - 🔒 Ограничения прав доступа — пользователь, от имени которого выполняется выгрузка, может не иметь прав на чтение некоторых данных.
- 🔄 Ошибки в программном коде — если выгрузка реализована через скрипт, убедитесь, что все нужные поля добавлены в XML.
Для диагностики включите протокол обмена в настройках универсального обмена — он покажет, какие данные были проигнорированы и почему.
3. Проблемы с подписью XML
Если файл требует электронной подписи (например, для ЭДО или отчётности), но подпись не проходит проверку:
- 🔑 Неверный сертификат — проверьте, что сертификат действителен и принадлежит вашей организации.
- 📜 Подпись добавлена не в тот тег — некоторые форматы требуют, чтобы подпись была вложена в конкретный элемент (например,
<Подпись>внутри<Документ>). - ⚙️ Ошибки в алгоритме подписи — используйте стандартные методы 1С для подписи, например,
ПодписатьXML().
Пример кода для подписи XML:
Подпись = Новый ЭлектроннаяПодпись;
Подпись.УстановитьСертификат(Сертификат);
Подпись.ПодписатьФайл(ПутьКФайлуXML, ПутьКФайлуПодписи);
⚠️ Внимание: Если выгружаете данные для Маркировки товаров (например, через Честный ЗНАК), проверьте, что в XML включены все обязательные реквизиты маркированных товаров (GTIN, сериальные номера). Их отсутствие приведёт к отказу в регистрации.
Практические примеры выгрузки для разных задач
Разберём конкретные сценарии выгрузки XML из 1С с пошаговыми инструкциями.
Пример 1: Выгрузка платежных поручений для банка
Многие банки (например, Сбербанк, Тинькофф) принимают платежки в формате XML. Чтобы выгрузить их из 1С:Бухгалтерия:
- Откройте журнал
Банк и касса → Платежные поручения. - Выделите нужные документы и нажмите
Выгрузить → В файл обмена. - Выберите формат
XML для банка-клиентаи укажите путь сохранения. - Загрузите полученный файл в систему банка (например, через Сбербанк Бизнес Онлайн).
Если банк требует специфический формат, может потребоваться доработка. Например, для Тинькофф Бизнес нужно:
- 📌 Убедиться, что в XML есть тег
<БИК>с корректным значением. - 💰 Проверить, что сумма указана в рублях без копеек (если банк этого требует).
Пример 2: Выгрузка реализаций для маркировки товаров
Для участия в системе Честный ЗНАК нужно выгружать документы реализации в специальном формате. Используйте обработку Выгрузка данных для маркировки (доступна в 1С:УТ или 1С:ERP):
- Установите обработку из каталога 1С:ИТС (если её нет в базе).
- Запустите её через
Файл → Открыть → Выгрузка для маркировки. - Укажите период и типы документов (например, "Реализация товаров").
- Выгрузите файл и проверьте его через Личный кабинет Честного ЗНАКа.
В XML должны быть:
- 🏷️ GTIN (глобальный номер товара).
- 🔢 Серийные номера (если товар маркированный).
- 📦 Коды упаковок (для групповой упаковки).
⚠️ Внимание: С 2026 года правила маркировки ужесточились. Если в XML отсутствует хотя бы один обязательный реквизит (например, код продукции), документ не будет зарегистрирован в системе. Проверяйте выгрузку через тестовый контур Честного ЗНАКа перед отправкой в продакшн.
Пример 3: Выгрузка справочников для интеграции с сайтом
Если нужно передать на сайт (например, на 1С-Битрикс или WordPress) данные о номенклатуре или контрагентах, используйте универсальный обмен:
- Настройте обмен в
Администрирование → Обмен данными. - Добавьте правила для справочников
НоменклатураиКонтрагенты. - Укажите формат
XMLи настройте структуру (например, включите поля "Артикул", "Цена", "Остаток"). - Запустите выгрузку и проверьте, что все данные на месте.
Пример структуры XML для номенклатуры:
<Номенклатура>
<Элемент Артикул="ABC123" Наименование="Стул офисный">
<Цена>2500.00</Цена>
<Остаток>15</Остаток>
</Элемент>
<Элемент Артикул="XYZ456" Наименование="Стол письменный">
<Цена>5000.00</Цена>
<Остаток>8</Остаток>
</Элемент>
</Номенклатура>
Если интегрируетесь с сайтом, договоритесь с разработчиками о формате XML заранее. Часто требуется упрощённая структура без лишних атрибутов, чтобы ускорить обработку на стороне сайта.
Автоматизация выгрузки: расписания и внешние обработки
Ручная выгрузка XML утомительна, если документов много. Автоматизируйте процесс с помощью:
1. Расписаний в 1С
В 1С:Предприятие 8.3 можно настроить регламентные задания для регулярной выгрузки:
- Перейдите в
Администрирование → Поддержка и обслуживание → Регламентные задания. - Создайте новое задание типа
Обмен данными. - Укажите расписание (например, ежедневно в 23:00).
- Настройте действие — выгрузку XML в указанную папку.
Пример настройки расписания через код:
РегламентноеЗадание = РегламентныеЗадания.СоздатьЗадание();
РегламентноеЗадание.Имя = "ВыгрузкаXML_Ежедневно";
РегламентноеЗадание.Расписание.ЕжедневноВ(23, 0, 0);
РегламентноеЗадание.Действие = Новый ДействиеОбменаДанными(ПараметрыОбмена);
РегламентноеЗадание.Записать();
2. Внешние обработки и расширения
Если стандартных механизмов недостаточно, используйте готовые решения:
- 📦 1С:Конвертация данных — для сложных обменов между базами.
- 🔗 1С:Интеграция — для связи с внешними системами (например, CRM).
- 📄 Обработки от партнёров — например, "Выгрузка в Честный ЗНАК" или "Обмен с Маркетплейсами".
Пример подключения внешней обработки:
- Скачайте файл обработки (например,
ВыгрузкаДляWildberries.epf). - Откройте его через
Файл → Открыть. - Следуйте инструкциям мастера настройки.
3. Интеграция через API
Для продвинутых сценариев (например, обмен с Ozon или Яндекс.Маркет) можно использовать REST API. В этом случае XML генерируется в 1С, а затем отправляется через HTTPЗапрос:
Запрос = Новый HTTPЗапрос();
Запрос.УстановитьТелоИзФайла(ПутьКФайлуXML);
Запрос.УстановитьЗаголовок("Content-Type", "application/xml");
Ответ = Новый HTTPСоединение("https://api.ozon.ru/v1/import").ОтправитьДляПолученияРезультата(Запрос);
⚠️ Внимание: При автоматизации учитывайте лимиты API внешних систем. Например, Ozon может ограничивать количество запросов в минуту. Настройте задержки между выгрузками, чтобы избежать блокировки.
Автоматизация выгрузки экономит время, но требует предварительной настройки и тестирования. Всегда проверяйте первые несколько файлов вручную, прежде чем запускать процесс в фоновом режиме.
FAQ: Частые вопросы о выгрузке XML из 1С
Как проверить, что XML сформирован корректно?
Используйте валидаторы вроде XML Validation (онлайн-сервисы или плагины для Notepad++). Также в 1С можно проверить файл через XDTO:
ФабрикаXDTO = Новый ФабрикаXDTO();
Проверка = ФабрикаXDTO.ПрочитатьXML(Новый ЧтениеXML(ПутьКФайлу));
Если Проверка.Исключение <> Неопределено Тогда
Сообщить("Ошибка: " + Проверка.Исключение.Описание());
КонецЕсли;
Можно ли выгрузить XML без программирования?
Да, в большинстве случаев достаточно типовых обработок или универсального обмена данными. Программирование требуется только для нестандартных форматов или сложной логики выгрузки.
Почему в XML не попадают некоторые реквизиты?
Причины:
- В правилах обмена не указаны эти реквизиты.
- Пользователь не имеет прав на чтение данных.
- В программном коде не реализована выгрузка этих полей.
Проверьте настройки обмена или код обработки.
Как выгрузить XML с электронной подписью?
Используйте встроенные механизмы 1С:
Подпись = Новый ЭлектроннаяПодпись;
Подпись.УстановитьСертификат(Сертификат);
Подпись.ПодписатьФайл("путь/к/файлу.xml", "путь/к/под