Работа с XML-файлами в 1С:Предприятие — неотъемлемая часть обмена данными между системами, подготовки отчётности для госорганов или интеграции с внешними сервисами. Несмотря на кажущуюся простоту, сохранение документов в этом формате часто вызывает вопросы: где найти нужную кнопку, как избежать ошибок при выгрузке, и почему некоторые реквизиты не попадают в итоговый файл.
В этой статье мы разберём все актуальные способы экспорта документов из 1С 8.3 (включая последнюю платформу) — от ручного сохранения через интерфейс до автоматизированных методов с использованием встроенного языка. Особое внимание уделим типичным ошибкам, которые приводят к некорректному формированию XML, и покажем, как их обойти. Если вы бухгалтер, администратор или разработчик, работающий с 1С, здесь вы найдёте ответы на свои вопросы — с примерами кода, скриншотами и практическими советами.
Важно: процедура экспорта может незначительно отличаться в зависимости от конфигурации (Бухгалтерия 3.0, Управление торговлей 11, Зарплата и управление персоналом и др.), но общие принципы остаются универсальными. Все примеры приведены для актуальных версий платформы 1С:Предприятие 8.3.22+.
1. Зачем сохранять документы 1С в XML?
Формат XML (eXtensible Markup Language) в 1С используется для:
- 📤 Обмена данными с другими системами (например, ЭДО, CRM, ERP или банк-клиенты).
- 📋 Формирования отчётности для ФНС, ПФР, Росстат (например,
СЗВ-ТД,6-НДФЛ). - 🔄 Переноса данных между базами 1С (например, при миграции с УТ 10.3 на УТ 11).
- 🛠️ Резервного копирования отдельных документов (альтернатива полному бэкапу базы).
- 🤖 Автоматизации через внешние скрипты (например, Python-обработки для парсинга).
Главное преимущество XML перед другими форматами (например, Excel или JSON) — сохранение структуры данных (иерархии реквизитов, табличных частей, ссылок на справочники). Это критично для дальнейшей загрузки файла в другие системы без потери связей.
⚠️ Внимание: Не все документы в 1С поддерживают прямой экспорт в XML через интерфейс. Например,Акт сверкиилиСчёт на оплатумогут выгружаться только в печатные формы (Word). Для таких случаев потребуется внешняя обработка или программный код.
2. Способ 1: Ручной экспорт через интерфейс 1С
Самый простой метод — использовать встроенные функции 1С. Он подходит для разовых операций и не требует знаний программирования.
Пошаговая инструкция:
- Откройте нужный документ (например,
Реализация товаров и услуг) в режиме1С:Предприятие. - Нажмите кнопку
Ещё(илиДействия) в верхней панели инструментов. - Выберите пункт
Сохранить как...илиВыгрузить...(название может отличаться в зависимости от конфигурации). - В списке форматов укажите
XML-документ (*.xml). - Задайте имя файла и путь для сохранения (например,
C:\Export\Realizaciya_001.xml). - Нажмите
Сохранить.
Если пункта Сохранить как... нет, попробуйте альтернативный путь:
- Откройте журнал документов (например,
Продажи → Реализация товаров и услуг). - Выделите нужный документ и кликните правой кнопкой мыши.
- В контекстном меню выберите
Выгрузить в файл → XML.
В некоторых конфигурациях (например, Бухгалтерия предприятия 3.0) для выгрузки отчётности в XML используется отдельный раздел Отчёты → Регламентированные отчёты. Там можно сформировать файл для ФНС напрямую.
Убедитесь, что документ проведён (непроводённые могут выгружаться некорректно)
Закройте все открытые формы документов (избегайте блокировок)
Проверьте права доступа (требуется роль"Полные права" или"Администрирование")
Свободное место на диске (XML может занимать в 2-3 раза больше, чем исходный документ)-->
3. Способ 2: Выгрузка через внешние обработки
Если в вашей конфигурации нет встроенной функции экспорта в XML, или вам нужно выгрузить пакет документов за период, используйте внешние обработки. Их можно скачать с портала 1С:ИТС или из каталога Инфостарт.
Пример популярных обработок:
- 📥 ВыгрузкаЗагрузкаДанныхXML (универсальная для большинства конфигураций).
- 📊 Универсальный обмен данными в формате XML (поддерживает сложные структуры).
- 📑 Выгрузка документов в XML для ЭДО (специализированная для электронного документооборота).
Как пользоваться обработкой:
- Скачайте файл обработки (
.epfили.erf). - В 1С перейдите в
Файл → Открыть...и выберите скачанный файл. - В открывшейся форме укажите:
- Тип документов (например,
Счёт-фактура). - Период выгрузки (даты начала и конца).
- Путь для сохранения XML.
- Тип документов (например,
Выгрузить.Преимущество обработок — гибкие настройки: можно выбрать, какие реквизиты включать в XML, задать фильтры по контрагентам или номенклатуре, а также автоматизировать процесс через Планировщик заданий.
⚠️ Внимание: Перед использованием сторонних обработок проверьте их на тестовой базе. Некоторые скрипты могут содержать ошибки или конфликтовать с вашей конфигурацией. Особенно осторожно относитесь к обработкам с открытым кодом — они могут модифицировать данные.
Ручной через интерфейс 1С
Внешние обработки
Собственные скрипты на встроенном языке
Не экспортирую XML-->
4. Способ 3: Программная выгрузка на встроенном языке
Для разработчиков и администраторов, которые нуждаются в автоматизированном экспорте, подходит метод с использованием встроенного языка 1С. Этот способ позволяет гибко настраивать структуру XML, добавлять дополнительные данные и интегрироваться с другими системами.
Базовый пример кода для выгрузки документа:
Процедура ВыгрузитьДокументВXML(Документ, ПутьКФайлу)
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл(ПутьКФайлу);
ЗаписьXML.ЗаписатьОбъявлениеXML;
ЗаписьXML.ЗаписатьНачалоЭлемента("Документ");
ЗаписьXML.ЗаписатьАтрибут("Тип", Документ.Метаданные.Имя);
ЗаписьXML.ЗаписатьАтрибут("Номер", Документ.Номер);
ЗаписьXML.ЗаписатьАтрибут("Дата", Формат(Документ.Дата,"ДФ=yyyy-MM-dd"));
// Выгрузка реквизитов
Для Каждого Реквизит Из Документ.Метаданные.Реквизиты Цикл
ЗаписьXML.ЗаписатьНачалоЭлемента(Реквизит.Имя);
ЗаписьXML.ЗаписатьТекст(Документ[Реквизит.Имя]);
ЗаписьXML.ЗаписатьКонецЭлемента;
КонецЦикла;
// Выгрузка табличных частей
Для Каждого ТабличнаяЧасть Из Документ.Метаданные.ТабличныеЧасти Цикл
ЗаписьXML.ЗаписатьНачалоЭлемента(ТабличнаяЧасть.Имя);
Для Каждого Строка Из Документ[ТабличнаяЧасть.Имя] Цикл
ЗаписьXML.ЗаписатьНачалоЭлемента("Строка");
Для Каждого Колонка Из ТабличнаяЧасть.Колонки Цикл
ЗаписьXML.ЗаписатьАтрибут(Колонка.Имя, Строка[Колонка.Имя]);
КонецЦикла;
ЗаписьXML.ЗаписатьКонецЭлемента; // Строка
КонецЦикла;
ЗаписьXML.ЗаписатьКонецЭлемента; // ТабличнаяЧасть
КонецЦикла;
ЗаписьXML.ЗаписатьКонецЭлемента; // Документ
ЗаписьXML.Закрыть;
КонецПроцедуры
Чтобы использовать этот код:
- Откройте
Конфигуратор 1С(режим1С:Предприятиене подходит!). - Создайте новую
Обработку(Файл → Новый → Обработка). - Вставьте код в модуль обработки.
- Добавьте кнопку на форму и свяжите её с процедурой
ВыгрузитьДокументВXML. - Запустите обработку в режиме
1С:Предприятиеи укажите документ для выгрузки.
Критичный нюанс: при выгрузке ссылочных данных (например, Контрагент или Номенклатура) в XML попадёт только идентификатор объекта, а не его наименование. Чтобы выгрузить полные данные, нужно дополнительно обрабатывать справочники.
Используйте ЗаписьXML.ЗаписатьCDATA для текстов с HTML-тегами или специальными символами (например, в поле Комментарий). Это предотвратит ошибки разбора XML.
5. Типичные ошибки при экспорте в XML и их решения
Даже при правильной выгрузке XML-файл может оказаться некорректным или неполным. Рассмотрим самые распространённые проблемы и способы их устранения.
| Ошибка | Причина | Решение |
|---|---|---|
| Файл пустой или весит 0 КБ | Не хватает прав на запись в папку или документ не проведён | Проверьте права доступа к каталогу и статус документа |
| Отсутствуют табличные части | В коде не обработаны коллекции ТабличнаяЧасть |
Добавьте цикл по строкам табличной части (см. пример кода выше) |
| Ошибка"Неверный формат XML" | Специальные символы (&, <, >) не экранированы |
Используйте ЗаписьXML.ЗаписатьCDATA или СтрЗначениеВXML |
| В XML нет ссылок на справочники | Выгружаются только ID объектов, а не их наименования | Добавьте в код обработку справочников (пример: Справочники.Контрагенты.НайтиПоСсылке) |
| XML не принимается внешней системой | Несоответствие структуры XML требованиям получателя (например, ФНС) | Сверьтесь с XSD-схемой (описанием структуры) для вашего типа документа |
Если выгруженный XML не открывается в браузере или редакторе, проверьте его на валидность с помощью онлайн-сервисов (например, XML Validator). Частая ошибка — незакрытые теги или неверная кодировка (должна быть UTF-8).
⚠️ Внимание: При обмене данными с ФНС или ПФР структуру XML диктуют регламенты госорганов. Например, дляСЗВ-ТДтребуется строгое соответствиеXSD-схеме, иначе отчёт будет отклонён. Актуальные схемы публикуются на сайтах ведомств.
6. Автоматизация экспорта: планировщик и интеграции
Если вам нужно регулярно выгружать документы в XML (например, ежедневно отправлять реализации в CRM), настройте автоматизацию. В 1С для этого есть несколько инструментов:
- 🕒 Планировщик заданий 1С — позволяет запускать обработки по расписанию.
- 🤖 Роботы 1С (в конфигурациях на БСП 3.1+) — для сложных сценариев.
- 🔄 HTTP-сервисы — если XML нужно передавать по API.
- 📂 Фоновые задания — для ресурсоёмких операций.
- Откройте
Администрирование → Поддержка и обслуживание → Планировщик заданий. - Создайте новое задание, укажите:
- Тип:
Выполнение кода. - Код: вызовите процедуру выгрузки (см. раздел 4).
- Расписание: например,
Ежедневно в 23:00.
- Тип:
- Сохраните и активируйте задание.
Пример настройки планировщика:
Для интеграции с внешними системами (например, 1С-Битрикс или MoySklad) используйте REST API или веб-сервисы. В этом случае XML можно формировать динамически и отправлять по HTTP-запросу:
Запрос = Новый HTTPЗапрос("https://api.example.com/upload");
Запрос.УстановитьТелоИзСтроки(ПолучитьXMLДокумента(Документ));
Запрос.УстановитьЗаголовок("Content-Type","application/xml");
Ответ = Новый HTTPСоединение.ВыполнитьЗапрос(Запрос);
Если вы работаете с ЭДО (например, Диадок, СБИС), проверьте, поддерживает ли ваш оператор прямую выгрузку из 1С. Многие сервисы предоставляют готовые модули интеграции, которые упрощают обмен.
Как проверить, что XML отправлен успешно?
После выгрузки откройте файл в текстовом редакторе (например, Notepad++) и убедитесь, что:
1. Файл не пустой и содержит данные документа.
2. Все теги правильно открыты/закрыты (например, <Документ>...</Документ>).
3. Кодировка UTF-8 (без BOM).
4. Даты и числа соответствуют формату (например, дата в виде"2026-12-31", а не"31.12.2026").
Если XML отправляется по API, проверьте код ответа сервера (200 — успех, 4xx/5xx — ошибка).
7. Проверка и валидация XML-файлов
Перед отправкой XML в внешнюю систему обязательно проверьте его корректность. Это позволит избежать ошибок при загрузке и сэкономит время на исправления.
Инструменты для валидации:
- 🌐 Online XML Validator (например, xmlvalidation.com).
- 📁 Notepad++ с плагином
XML Tools(проверка структуры и форматирование). - 🐍 Python-скрипты с библиотекой
lxml(для автоматизированной проверки). - 🔍 1С:Предприятие — встроенная функция
ПрочитатьXMLдля тестового парсинга. - Структуру: все ли требуемые теги присутствуют (сверьтесь с
XSD-схемой). - Данные: корректность значений (например, даты в формате
YYYY-MM-DD, суммы с двумя знаками после запятой). - Кодировку: должна быть
UTF-8(без метки порядка байтовBOM). - Ссылки: если в XML есть ID объектов (например,
Контрагент_123), убедитесь, что они существуют в базе.
Что проверять в XML:
Пример кода для проверки XML в 1С:
Процедура ПроверитьXML(ПутьКФайлу)
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ПутьКФайлу);
Попытка
ЧтениеXML.Прочитать;
Сообщить("XML корректен!");
Исключение
Сообщить("Ошибка в XML:" + ОписаниеОшибки);
КонецПопытки;
ЧтениеXML.Закрыть;
КонецПроцедуры
Если XML предназначен для ФНС или ПФР, используйте официальные утилиты ведомств (например, Проверка отчётности на сайте nalog.ru). Они проверят не только структуру, но и логику данных (например, соответствие контрольных соотношений в 6-НДФЛ).
Всегда тестируйте XML на тестовом контуре внешней системы перед отправкой в рабочий. Например, ФНС предоставляет"тестовый кабинет" для проверки отчётности.
8. Альтернативные форматы: когда XML не подходит
XML — не всегда оптимальный выбор. В некоторых случаях удобнее использовать другие форматы:
| Формат | Когда использовать | Преимущества | Недостатки |
|---|---|---|---|
JSON |
Обмен с веб-сервисами, мобильными приложениями | Компактнее XML, проще парсится в JavaScript | Не поддерживает схемы (XSD), сложно хранить иерархические данные |
CSV/Excel |
Простые табличные данные (например, прайс-листы) | Удобно для ручного редактирования | Теряется структура документа, нет типизации данных |
PDF/Word |
Печатные формы для клиентов (счёта, акты) | Сохраняет оформление, удобно для печати | Нельзя автоматически загрузить обратно в 1С |
DT (файл выгрузки 1С) |
Перенос данных между базами 1С | Сохраняет все ссылки и метаданные | Не читается внешними системами |
Если вам нужно сохранить документ для дальнейшей обработки в другой базе 1С, вместо XML лучше использовать формат .dt (выгрузка/загрузка данных). Он сохраняет все ссылки и позволяет избежать проблем с сопоставлением объектов.
Пример выгрузки в DT:
- Откройте
Администрирование → Выгрузка/загрузка данных. - Укажите документы для выгрузки (например,
Поступление товаровза месяц). - Выберите формат
Файл выгрузки 1С (*.dt). - Сохраните файл и загрузите его в целевую базу через
Администрирование → Загрузка данных.
Когда выбирать XML:
- 🔗 Нужна совместимость с внешними системами (не 1С).
- 📑 Требуется структурированный формат с поддержкой схем (
XSD). - 📊 Данные будут обрабатываться автоматически (парсинг, трансформация).
XML
JSON
CSV/Excel
DT (файл выгрузки 1С)
Другой-->
FAQ: Частые вопросы по экспорту XML из 1С
Можно ли выгрузить в XML несколько документов сразу?
Да, для этого используйте внешние обработки (например, Универсальный обмен данными) или напишите скрипт на встроенном языке с циклом по выборке документов. Пример:
Выборка = Документы.РеализацияТоваровУслуг.Выбрать;
Пока Выборка.Следующий Цикл
ВыгрузитьДокументВXML(Выборка.ПолучитьОбъект,"C:\Export\" + Выборка.Номер +".xml");
КонецЦикла;
Для пакетной выгрузки также подходит Планировщик заданий 1С.
Почему в XML не попадают табличные части документа?
Этоная ошибка при программной выгрузке. Убедитесь, что в коде есть обработка табличных частей (см. раздел 4). Пример корректного цикла:
Для Каждого ТабличнаяЧасть Из Документ.Метаданные.ТабличныеЧасти Цикл
ЗаписьXML.ЗаписатьНачалоЭлемента(ТабличнаяЧасть.Имя);
//... код выгрузки строк...
ЗаписьXML.ЗаписатьКонецЭлемента;
КонецЦикла;
Если используете внешнюю обработку, проверьте её настройки — возможно, табличные части отключены в параметрах выгрузки.
Как выгрузить в XML справочники (например, номенклатуру)?
Для выгрузки справочников используйте аналогичный подход, но вместо Документ работайте с объектом Справочник. Пример:
Процедура ВыгрузитьСправочникВXML(Справочник, ПутьКФайлу)
ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл(ПутьКФайлу);
ЗаписьXML.ЗаписатьОбъявлениеXML;
Выборка = Справочники[Справочник].Выбрать;
Пока Выборка.Следующий Цикл
ЗаписьXML.ЗаписатьНачалоЭлемента("Элемент");
ЗаписьXML.ЗаписатьАтрибут("Наименование", Выборка.Наименование);
ЗаписьXML.ЗаписатьАтрибут("Код", Выборка.Код);
//... другие реквизиты...
ЗаписьXML.ЗаписатьКонецЭлемента;
КонецЦикла;
ЗаписьXML.Закрыть;
КонецПроцедуры
Для иерархических справочников (например, Номенклатура с группами) добавьте рекурсивную обработку родительских элементов.
Можно ли автоматически отправлять XML по email?
Да, для этого в 1С есть встроенные средства работы с почтой. Пример кода:
Почта = Новый Почта;
Сообщение = Почта.СоздатьСообщение;
Сообщение.Текст ="Вложен XML-файл";
Сообщение.Тема ="Экспорт документа №" + Документ.Номер;
Вложение = Новый ВложениеФайла(ПутьКФайлуXML);
Сообщение.Вложения.Добавить(Вложение);
Почта.Отправить(Сообщение,"recipient@example.com");
Для автоматической отправки настройте Планировщик заданий или используйте Фоновые задания.
Как преобразовать XML обратно в документ 1С?
Для загрузки XML в 1С используйте обратный процесс — чтение XML и создание документа. Пример:
Процедура ЗагрузитьДокументИзXML(ПутьКФайлу)
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ПутьКФайлу);
Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
ТипДокумента = ЧтениеXML.Имя;
НовыйДокумент = Документы[ТипДокумента].СоздатьДокумент;
Пока ЧтениеXML.Прочитать Цикл
Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
ИмяРеквизита = Чтение