Работа с форматом XML в 1С:Предприятие — неотъемлемая часть обмена данными между системами, подготовки отчётности для госорганов или интеграции с внешними сервисами. Однако стандартный функционал программы не всегда очевиден: где-то требуется ручная настройка, а где-то — знание синтаксиса встроенного языка. Эта статья поможет разобраться, как сохранить документы из 1С в XML без ошибок, независимо от вашей роли: бухгалтер, кладовщик или разработчик.
Мы рассмотрим все актуальные методы — от простого сохранения через интерфейс до автоматизации с помощью скриптов. Особое внимание уделим нуансам формирования XML для ФНС, где структура файла должна строго соответствовать требованиям приказа №ЕД-7-26/456@ (актуально для сдачи деклараций и первичных документов). Если вы ранее сталкивались с ошибками при экспорте — здесь найдёте решения типичных проблем.
Прежде чем переходить к инструкциям, убедитесь, что ваша версия 1С поддерживает работу с XML. В устаревших релизах (ниже 8.3.10) могут отсутствовать некоторые функции — в этом случае потребуется обновление или доработка конфигурации.
1. Сохранение документа в XML через стандартный интерфейс 1С
Самый простой способ — использовать встроенные возможности программы. Он подходит для разовых операций, когда нужно экспортировать 1–2 документа без автоматизации. Рассмотрим процесс на примере 1С:Бухгалтерия 3.0:
Откройте нужный документ (например, Счёт-фактура или Реализация товаров) в режиме просмотра. В верхней панели инструментов найдите кнопку Ещё (или Действия → Файл в зависимости от версии). Выберите пункт Сохранить как... или Выгрузить в файл. В списке доступных форматов должен быть XML (иногда скрыт под пунктом Другие форматы).
- 📄 Для бухгалтерских документов: XML формируется по шаблону ФНС (подходит для сдачи отчётности через операторов ЭДО).
- 📦 Для торговых документов: структура зависит от конфигурации (может потребоваться доработка для интеграции с МойСклад или Bitrix24).
- ⚙️ Для универсальных документов: используется упрощённая схема без привязки к госстандартам.
Если в списке форматов нет XML, значит:
⚠️ Внимание: Ваша конфигурация не поддерживает прямой экспорт в XML. Это типично для сильно кастомизированных решений или устаревших версий. В этом случае используйте методы из следующих разделов (внешние обработки или программный код).
2. Использование внешних обработок для выгрузки в XML
Внешние обработки — это готовые решения, которые расширяют функционал 1С без изменения конфигурации. Их удобно использовать, если стандартный экспорт не подходит по структуре файла или требуется пакетная выгрузка.
Где взять обработку:
- 🔍 Инфостарт: [https://infostart.ru](https://infostart.ru) — крупнейшая база обработок (бесплатные и платные варианты). Ищите по запросу «выгрузка XML для [ваш документ]».
- 📂 1С:ИТС: в разделе «Обмен данными» могут быть типовые решения для вашей отрасли.
- 💼 От партнёров 1С: некоторые фирмы-франчайзи разрабатывают обработки под специфические задачи (например, для обмена с Диадок или Контур.Диадок).
Как подключить обработку:
- Скачайте файл с расширением
.epfили.erf. - В 1С перейдите в
Файл → Открытьи выберите скачанный файл. - В открывшемся окне обработки укажите параметры выгрузки (какие документы, период, путь сохранения).
- Нажмите
Выгрузить— файл XML будет сформирован по заданным правилам.
Преимущества метода:
Универсальность (работает в любой конфигурации 1С 8.3)|Не требует изменений в базе|Можно настроить под специфические требования (например, для ФСС или ПФР)|Поддерживает пакетную выгрузку-->
Однако будьте осторожны с обработками от неизвестных авторов — они могут содержать вредоносный код. Перед использованием проверьте файл антивирусом и, по возможности, в песочнице.
3. Программный экспорт в XML через встроенный язык 1С
Для разработчиков и опытных пользователей самый гибкий способ — написать собственный код на встроенном языке. Это позволяет:
- 🎯 Точно контролировать структуру XML (например, для интеграции с 1С:EDT или SAP).
- 🔄 Автоматизировать выгрузку по расписанию.
- 🔧 Добавлять дополнительную логику (например, шифрование или подпись файла).
Пример кода для выгрузки документа РеализацияТоваровУслуг в XML:
Процедура ВыгрузитьВXML(Документ, ПутьКФайлу)
ЗаписьXML = Новый ЗаписьXML();
ЗаписьXML.ОткрытьФайл(ПутьКФайлу);
ЗаписьXML.ЗаписатьОбъявлениеXML();
ЗаписьXML.ЗаписатьНачалоЭлемента("Документ");
ЗаписьXML.ЗаписатьАтрибут("Тип", Документ.Метаданные().Имя);
ЗаписьXML.ЗаписатьАтрибут("Номер", Документ.Номер);
ЗаписьXML.ЗаписатьАтрибут("Дата", Формат(Документ.Дата, "ДЛФ=DT"));
// Выгрузка табличной части
ЗаписьXML.ЗаписатьНачалоЭлемента("Товары");
Для Каждого Строка Из Документ.Товары Цикл
ЗаписьXML.ЗаписатьНачалоЭлемента("Товар");
ЗаписьXML.ЗаписатьАтрибут("Наименование", Строка.Номенклатура.Наименование);
ЗаписьXML.ЗаписатьАтрибут("Количество", Строка.Количество);
ЗаписьXML.ЗаписатьКонецЭлемента(); // Товар
КонецЦикла;
ЗаписьXML.ЗаписатьКонецЭлемента(); // Товары
ЗаписьXML.ЗаписатьКонецЭлемента(); // Документ
ЗаписьXML.Закрыть();
КонецПроцедуры
Чтобы использовать этот код:
- Откройте конфигуратор (
Файл → Конфигуратор). - Создайте новую обработку (
Объект → Новая обработка). - Вставьте код в модуль обработки.
- Запустите в режиме 1С:Предприятие и укажите документ для выгрузки.
⚠️ Внимание: При работе с XML для госорганов (например, декларации по НДС) нельзя использовать произвольные теги. Структура файла должна строго соответствовать требованиям ФНС. В противном случае файл не пройдёт проверку в системе ЭДО.
Если вам нужно выгружать документы регулярно, сохраните обработку с кодом в каталог ExtForms вашей базы. Так она будет всегда под рукой в меню Файл → Открыть.
4. Выгрузка через механизм обмена данными (Универсальный формат)
1С:Предприятие поддерживает универсальный формат обмена данными (EnterpriseData), который позволяет экспортировать документы в XML с сохранением всех связей и атрибутов. Этот метод подходит для:
- 🔄 Переноса данных между базами 1С (например, при миграции с 1С:УТ 10.3 на 1С:ERP 2.5).
- 📤 Интеграции с другими системами (если они поддерживают этот формат).
- 📦 Архивирования документов с возможностью последующего восстановления.
Пошаговая инструкция:
- Откройте список документов (например,
Реализация товаров). - Выделите нужные документы (можно использовать фильтр по дате или контрагенту).
- Нажмите
Ещё → Выгрузить данные(илиСервис → Обмен данными → Выгрузитьв старых версиях). - В окне выгрузки выберите формат
XML (EnterpriseData). - Укажите путь для сохранения и нажмите
Выгрузить.
Особенности формата EnterpriseData:
| Характеристика | Описание |
|---|---|
| Структура файла | Иерархическая, с сохранением всех справочников и регистров |
| Размер файла | Может быть значительным при выгрузке больших объёмов данных |
| Совместимость | Поддерживается всеми конфигурациями на базе 1С:Предприятие 8.3 |
| Ограничения | Не подходит для отчётности в госорганы (требуется преобразование) |
Если вам нужно преобразовать EnterpriseData в другой XML-формат (например, для Контур.Диадок), используйте XSLT-шаблоны или специализированные конвертеры (например, 1С:Конвертация данных).
5. Автоматизированная выгрузка через задачи и регламентные задания
Для регулярного экспорта (например, ежедневной выгрузки налоговых накладных) удобно настроить регламентное задание. Это избавит от рутинных действий и снизит риск ошибок.
Как настроить:
- В конфигураторе перейдите в
Объекты → Регламентные задания. - Создайте новое задание с типом
Выполнение кода. - В поле
Кодвставьте процедуру выгрузки (аналогичную примеру из раздела 3, но с указанием периода и фильтров). - Настройте расписание (например, ежедневно в 23:00).
- Укажите пользователя, от имени которого будет выполняться задача (должен быть права на экспорт).
Пример кода для регламентного задания (выгрузка всех счетов-фактур за день):
Процедура ВыгрузитьСчетаФактуры() Экспорт
КаталогВыгрузки = "C:\ExportXML\";
ДатаНачала = НачалоДня(ТекущаяДата());
ДатаОкончания = КонецДня(ТекущаяДата());
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СчетФактураВыданный.Ссылка КАК Ссылка
|ИЗ
| Документ.СчетФактураВыданный КАК СчетФактураВыданный
|ГДЕ
| СчетФактураВыданный.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания";
Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Документ = Выборка.Ссылка.ПолучитьОбъект();
ПутьКФайлу = КаталогВыгрузки + "СФ_" + Формат(Документ.Дата, "ДЛФ=Д") + "_" + Документ.Номер + ".xml";
ВыгрузитьВXML(Документ, ПутьКФайлу); // Используем процедуру из раздела 3
КонецЦикла;
КонецПроцедуры
Преимущества автоматизации:
Регламентные задания исключают человеческий фактор: документы будут выгружены вовремя даже если сотрудник заболел или забыл про задачу.
Для контроля за выполнением заданий используйте Журнал регламентных заданий (Администрирование → Поддержка и обслуживание). Там можно увидеть логи ошибок, если выгрузка не удалась.
6. Проверка корректности XML перед отправкой
Ошибки в XML могут привести к отказу в приёме документа (например, ФНС вернёт файл с статусом «Не прошёл проверку формата»). Чтобы этого избежать, всегда валидируйте файл перед отправкой.
Способы проверки:
- 🔍 Встроенная проверка 1С: при экспорте через обработки некоторые решения автоматически проверяют структуру.
- 🌐 Онлайн-валидаторы:
- XMLValidation — проверяет синтаксис и соответствие XSD-схеме.
- Liquid XML Validator — поддерживает сложные схемы (например, для УПД).
- 📁 Offline-программы: XML Notepad (от Microsoft) или Oxygen XML Editor (для профессионалов).
Типичные ошибки и как их исправить:
| Ошибка | Причина | Решение |
|---|---|---|
Ошибка в теге: не закрыт элемент |
Отсутствует закрывающий тег (например, <Товар> без </Товар>) |
Проверьте код обработки или шаблон XSLT |
Неверный формат даты |
Дата записана как DD.MM.YYYY, а требуется YYYY-MM-DD |
Используйте функцию Формат(Дата, "ДФ=yyyy-MM-dd") |
Недопустимый символ |
В данных есть символы &, <, > без экранирования |
Замените на &, <, > |
Для документов, отправляемых в ФНС, используйте официальный валидатор ФНС. Он проверяет не только синтаксис, но и соответствие актуальным схемм XSD.
Что делать если XML не проходит проверку в ЭДО?
Если файл отвергается оператором ЭДО (например, Такском или СБИС), запросите лог ошибок. Чаще всего проблема в:
1. Несовпадении ИНН/КПП в теге <СвЮЛ> с данными в личном кабинете.
2. Отсутствии обязательных реквизитов (например, КодОКВ для валютных операций).
3. Неверной версии схемы (уточните актуальную версию у оператора).
7. Альтернативные форматы: когда XML не подходит
XML — не всегда оптимальный выбор. В некоторых случаях удобнее использовать другие форматы:
- 📑 JSON: легче парсится в веб-приложениях, занимает меньше места. В 1С можно экспортировать через
ЗаписьJSON(доступно с версии 8.3.14). - 📊 Excel (XLSX): удобен для ручной обработки данных. Экспортируется через
ЗаписьТабличногоДокумента. - 🗄️ DBF: используется для обмена с устаревшими системами (например, 1С:Зарплата 7.7).
- 📦 ZIP-архив: если нужно передать пакет документов (XML + изображения подписей).
Пример выгрузки документа в JSON:
Процедура ВыгрузитьВJSON(Документ, ПутьКФайлу)
ЗаписьJSON = Новый ЗаписьJSON();
ЗаписьJSON.ОткрытьФайл(ПутьКФайлу);
ЗаписьJSON.ЗаписатьНачалоОбъекта();
ЗаписьJSON.ЗаписатьКлючИЗначение("Тип", Документ.Метаданные().Имя);
ЗаписьJSON.ЗаписатьКлючИЗначение("Номер", Документ.Номер);
ЗаписьJSON.ЗаписатьКлючИЗначение("Дата", Формат(Документ.Дата, "ДЛФ=DT"));
ЗаписьJSON.ЗаписатьКлюч("Товары");
ЗаписьJSON.ЗаписатьНачалоМассива();
Для Каждого Строка Из Документ.Товары Цикл
ЗаписьJSON.ЗаписатьНачалоОбъекта();
ЗаписьJSON.ЗаписатьКлючИЗначение("Наименование", Строка.Номенклатура.Наименование);
ЗаписьJSON.ЗаписатьКлючИЗначение("Количество", Строка.Количество);
ЗаписьJSON.ЗаписатьКонецОбъекта();
КонецЦикла;
ЗаписьJSON.ЗаписатьКонецМассива();
ЗаписьJSON.ЗаписатьКонецОбъекта();
ЗаписьJSON.Закрыть();
КонецПроцедуры
Выбор формата зависит от задачи:
Для госорганов (ФНС, ПФР, ФСС) требуется строго XML. Для внутреннего обмена или интеграции с современными системами (например, Bitrix24) удобнее JSON.
FAQ: Частые вопросы по экспорту XML из 1С
Можно ли выгрузить в XML документ с печатью и подписью?
Нет, XML — это структурированные данные без графических элементов. Чтобы передать документ с печатью, экспортируйте его в PDF (через Печать → Сохранить как PDF) и прикрепите к XML как отдельный файл (например, в ZIP-архиве).
Почему при выгрузке в XML теряются некоторые реквизиты?
Это происходит, если:
- Реквизит не включён в шаблон выгрузки (для внешних обработок).
- В коде не прописана запись этого реквизита (для программного экспорта).
- Реквизит является динамическим и не сохранён в базе (например, рассчитываемое поле).
Решение: проверьте настройки обработки или дополните код выгрузки недостающими полями.
Как выгрузить в XML пакет документов за период?
Используйте один из способов:
- Внешнюю обработку с фильтром по дате (например, "ВыгрузкаXML для пакетов документов" на Инфостарте).
- Регламентное задание с запросом по периоду (пример кода в разделе 5).
- Стандартный обмен данными (
EnterpriseData) с указанием диапазона дат.
Как преобразовать XML из 1С в формат для Контур.Диадок?
Контур.Диадок требует специфическую структуру XML для первичных документов. Варианты решения:
- Используйте готовую обработку от СКБ Контур (доступна в личном кабинете Диадока).
- Настройте 1С:Конвертацию данных с шаблоном для Диадока.
- Доработайте код выгрузки (примеры есть в документации Диадока).
Обратите внимание: для УПД и актов требуются разные схемы XML.
Можно ли автоматически подписывать XML-файл ЭЦП при выгрузке?
Да, для этого:
- Установите КриптоПро CSP или другой сертифицированный криптопровайдер.
- В коде выгрузки добавьте процедуру подписи (пример для КриптоПро):
Подпись = Новый ПодписьXML();
Подпись.Сертификат = ВыбратьСертификатЭЦП(); // Функция выбора сертификата из хранилища
Подпись.Подписать(ПутьКФайлу, ПутьКФайлу + ".sig");
Готовые решения с подписью есть на Инфостарте (ищите «выгрузка XML с ЭЦП»).