Выгрузка из 1С 8.3 в XML: обработки, правила обмена и код на XDTO
Содержание
Выгрузить данные из 1С в XML быстрее всего внешней обработкой «Выгрузка и загрузка данных XML»: открываете её через Файл → Открыть, отмечаете в дереве справочники и документы, указываете файл и нажимаете кнопку выгрузки. Так получается файл, который загрузится в базу той же конфигурации. Если же приёмник — другая программа или другая конфигурация, нужен обмен по правилам (Конвертация данных
) или свой код на XDTO.
Способ выбирают по одному вопросу: кто будет читать файл. Вся статья про платформу 1С:Предприятие 8.3, интерфейс «Такси», типовые конфигурации вроде Бухгалтерии 3.0, УТ 11 и ЗУП 3.1.
Какой способ выгрузки в XML подходит под вашу задачу
У 1С нет одной кнопки «Сохранить базу как XML». Есть несколько механизмов, и каждый пишет XML в своей схеме.
| Способ | Когда подходит | Что получится | Сложность |
|---|---|---|---|
| Обработка «Выгрузка и загрузка данных XML» | Перенос данных между базами одной конфигурации и версии | XML во внутреннем формате платформы | Низкая |
| Синхронизация данных (EnterpriseData) | Обмен между типовыми конфигурациями: БП, УТ, УНФ, ERP | XML по формату EnterpriseData | Средняя |
| Правила Конвертации данных 2.0 + универсальный обмен | Перенос между разными конфигурациями, в том числе нетиповыми | XML по правилам обмена | Средняя–высокая |
Свой код: СериализаторXDTO, ЗаписьXML | Файл для внешней системы, сайта, банка, своего сервиса | XML ровно в нужной структуре | Требует программиста |
| Встроенные выгрузки типовых решений | Отчётность в ФНС и СФР, обмен с сайтом (CommerceML) | XML по утверждённому формату | Низкая |
Выгрузка информационной базы через Администрирование → Обслуживание → Резервное копирование и восстановление или из Конфигуратора создаёт файл .dt. Это не XML и не формат обмена, а полная копия базы. А команда Конфигуратора Конфигурация → Выгрузить конфигурацию в файлы пишет в XML метаданные — справочники как объекты конфигурации, без самих данных.
Готовые выгрузки в XML без программиста
Часть задач закрывается тем, что уже есть в типовой конфигурации. Прежде чем искать обработки, проверьте эти три сценария.
Регламентированная отчётность
Декларации и расчёты в 1С сохраняются в XML по формату ФНС или СФР. Откройте отчёт в разделе Отчеты → Регламентированные отчеты, заполните, проверьте и найдите в командной панели формы команду выгрузки. Программа сохранит файл с именем по правилам контролирующего органа. Его можно отправить через сторонний сервис или загрузить в программу проверки.
Синхронизация данных между типовыми конфигурациями
В Бухгалтерии 3.0, УТ 11 и других типовых решениях обмен настраивается в разделе Администрирование → Синхронизация данных. Сначала включите флажок синхронизации, затем создайте настройку обмена с нужной программой.
В настройке можно выбрать канал «через каталог» — локальную или сетевую папку. Тогда программа складывает туда XML-сообщения в формате EnterpriseData, и вторая база забирает их из той же папки. Это штатный способ получить XML без единой строки кода.
Обмен с сайтом
Для интернет-магазинов в типовых конфигурациях есть обмен в формате CommerceML: каталог товаров, цены, остатки и заказы уходят XML-файлами. Сайт на любой CMS, которая понимает CommerceML, примет их без доработок.
Выгрузка данных из 1С в XML универсальной обработкой
Обработку «Выгрузка и загрузка данных XML» фирма 1С распространяет для подписчиков ИТС. Файл называется ВыгрузкаЗагрузкаДанныхXML83.epf (для 8.3). Она пишет объекты во внутреннем формате платформы со всеми реквизитами и табличными частями.
Порядок выгрузки
- Сделайте копию базы -источника, если будете экспериментировать с отбором.
- Откройте 1С:Предприятие под пользователем с полными правами.
- Выберите
Файл → Открыть(меню в левом верхнем углу, значок с тремя полосками) и укажите файл.epf. - Подтвердите предупреждение безопасности: платформа спросит, доверяете ли вы этой обработке.
- На закладке выгрузки отметьте в дереве нужные объекты: отдельные справочники, документы, регистры сведений.
- Задайте период, если выгружаете документы, и имя файла.
- Запустите выгрузку и дождитесь сообщения об окончании.
Загрузка идёт той же обработкой в базе-приёмнике, на закладке загрузки.
Загружайте такой файл только в базу той же конфигурации и, желательно, того же релиза. Обработка сопоставляет объекты по внутренним идентификаторам (GUID). В базе с другой структурой загрузка либо упадёт, либо создаст неполные объекты. Перед загрузкой в рабочую базу сделайте резервную копию.
Что учесть при отборе объектов
- 📎 Ссылочные данные тянутся автоматически. Выгрузили документ — в файл попадут контрагент, номенклатура, склад, на которые он ссылается.
- 📦 Регистры накопления лучше не выгружать отдельно. Их движения восстановятся при перепроведении документов в приёмнике.
- 🔢 Большие объёмы режьте по периодам: квартал или месяц на файл. Файл в несколько гигабайт трудно загрузить на машине с 4–8 ГБ памяти.
Выгрузка в XML по правилам Конвертации данных 2.0 и 3.0
Когда источник и приёмник — разные конфигурации, внутренний формат не подходит. Нужно описать, какой справочник источника во что превращается в приёмнике. Этим занимается конфигурация «Конвертация данных».
Конвертация данных 2.0
Схема работы такая:
- В Конвертации данных 2.0 загружаете структуры метаданных источника и приёмника.
- Настраиваете правила конвертации объектов и свойств: что во что переходит, как ищется существующий элемент.
- Сохраняете правила в XML-файл.
- В базе-источнике открываете обработку «Универсальный обмен данными в формате XML», указываете файл правил и выгружаете данные.
- В базе-приёмнике той же обработкой загружаете получившийся файл данных.
Плюс подхода — работает с любыми конфигурациями, в том числе самописными и устаревшими. Минус — правила надо поддерживать: после обновления конфигурации они могут перестать совпадать со структурой.
Конвертация данных 3.0 и формат EnterpriseData
Версия 3.0 работает иначе. Каждая конфигурация умеет выгружать данные в общий формат EnterpriseData и загружать из него. Правила хранятся не во внешнем файле, а в модуле менеджера обмена внутри конфигурации.
Для пользователя это значит: между типовыми решениями правила уже готовы, их поставляет фирма 1С вместе с релизом. Конвертация 3.0 нужна разработчику, когда требуется дописать обмен под доработанную конфигурацию.
| Что сравниваем | КД 2.0 | КД 3.0 |
|---|---|---|
| Где хранятся правила | Внешний XML-файл | Модуль менеджера обмена в конфигурации |
| Формат данных в файле | Произвольный, по правилам | EnterpriseData |
| Подходит для нетиповых баз | Да | Да, но требует доработки конфигурации |
| Обновление | Правила правят отдельно | Приходят с релизом типовой |
Как выгрузить данные из 1С в XML программно: XDTO и ЗаписьXML
Если получатель — не 1С, ему нужен XML в определённой структуре. Тут выручает встроенный язык. Код можно оформить внешней обработкой или расширением, чтобы не снимать конфигурацию с поддержки.
Сериализация объектов через СериализаторXDTO
Самый короткий путь — отдать объект платформе, она сама запишет все реквизиты и табличные части:
Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл("C:\Exchange\nomenklatura.xml", "UTF-8");
Запись.ЗаписатьОбъявлениеXML();
Запись.ЗаписатьНачалоЭлемента("Данные");
Запись.ЗаписатьСоответствиеПространстваИмен("xs", "http://www.w3.org/2001/XMLSchema");
Запись.ЗаписатьСоответствиеПространстваИмен("xsi", "http://www.w3.org/2001/XMLSchema-instance");
Выборка = Справочники.Номенклатура.Выбрать();
Пока Выборка.Следующий() Цикл
СериализаторXDTO.ЗаписатьXML(Запись, Выборка.ПолучитьОбъект());
КонецЦикла;
Запись.ЗаписатьКонецЭлемента();
Запись.Закрыть();
Объявления пространств имён в корневом элементе экономят размер: без них каждый объект повторяет их у себя. Прочитать такой файл обратно можно через ЧтениеXML и СериализаторXDTO.ПрочитатьXML(Чтение). Код выполняется на сервере, поэтому путь к файлу должен быть доступен серверу 1С, а не только вашему компьютеру.
Свой формат через ЗаписьXML
Внешней системе обычно не нужны служебные поля 1С. Тогда пишем только нужное, данные берём запросом:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Контрагенты.Наименование КАК Наименование,
| Контрагенты.ИНН КАК ИНН,
| Контрагенты.КПП КАК КПП
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| НЕ Контрагенты.ПометкаУдаления
| И НЕ Контрагенты.ЭтоГруппа";
Выборка = Запрос.Выполнить().Выбрать();
Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл("C:\Exchange\kontragenty.xml", "UTF-8");
Запись.ЗаписатьОбъявлениеXML();
Запись.ЗаписатьНачалоЭлемента("Контрагенты");
Запись.ЗаписатьАтрибут("Дата", XMLСтрока(ТекущаяДатаСеанса()));
Пока Выборка.Следующий() Цикл
Запись.ЗаписатьНачалоЭлемента("Контрагент");
Запись.ЗаписатьАтрибут("ИНН", XMLСтрока(Выборка.ИНН));
Запись.ЗаписатьАтрибут("КПП", XMLСтрока(Выборка.КПП));
Запись.ЗаписатьТекст(Выборка.Наименование);
Запись.ЗаписатьКонецЭлемента();
КонецЦикла;
Запись.ЗаписатьКонецЭлемента();
Запись.Закрыть();
Функция XMLСтрока() приводит даты, числа и булевы значения к формату XML: дата пишется как 2026-10-07T12:00:00, число — с точкой и без пробелов. Без неё дата уйдёт в виде «07.10.2026 12:00:00», и внешняя система её не разберёт. Символы <, > и & в наименованиях ЗаписьXML экранирует сама.
XDTO-пакет по схеме получателя
Если получатель дал XSD-схему, её загружают в конфигурацию как XDTO-пакет (в Конфигураторе: ветка Общие → XDTO-пакеты, команда импорта схемы). Потом объекты создаются через ФабрикаXDTO.Тип(...) и ФабрикаXDTO.Создать(...), а платформа проверяет соответствие схеме ещё при записи. Это надёжнее ручного ЗаписьXML: опечатка в имени элемента не дойдёт до получателя. Минус — нужна правка конфигурации или расширения.
Как настроить выгрузку в XML по расписанию
Ежедневную выгрузку прайса или остатков руками никто делать не будет. Есть три варианта автоматизации.
1. Расписание синхронизации. Для обмена через Администрирование → Синхронизация данных расписание задаётся прямо в настройке обмена. Программа сама будет класть XML в каталог.
2. Регламентное задание. Программист добавляет в расширение регламентное задание с процедурой выгрузки и расписанием. Включить, выключить и посмотреть историю запусков можно в Администрирование → Обслуживание → Регламентные операции → Регламентные и фоновые задания. В клиент-серверной базе задания выполняет сервер 1С без участия пользователей. В файловой базе они работают только пока открыт хотя бы один сеанс.
3. Планировщик Windows и пакетный запуск. Подходит для файловых баз и для готовой внешней обработки. Планировщик запускает 1С с параметром /Execute:
"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" ENTERPRISE /F"D:\Bases\Torgovlya" /N"Obmen" /P"password" /Execute"D:\Scripts\vygruzka.epf" /DisableStartupMessages
Обработка выполняет выгрузку в обработчике ПриОткрытии и в конце вызывает ЗавершитьРаботуСистемы(Ложь), иначе окно 1С останется висеть. Подставьте свой номер платформы в путь.
Пароль в bat-файле лежит открытым текстом. Создайте для выгрузки отдельного пользователя 1С с правами только на чтение нужных данных и запуск внешних обработок. Каждый запуск занимает лицензию на время работы.
Ошибки при выгрузке в XML и как их обойти
Ещё одна ловушка — выгрузка в XML с помеченными на удаление объектами. Универсальная обработка выгружает их вместе с остальными. Если приёмнику они не нужны, удалите пометки в источнике или отфильтруйте их на этапе выгрузки.
Частые вопросы
Можно ли выгрузить в XML всю базу целиком?
.dt: она быстрее и сохраняет пользователей, настройки и историю.Чем открыть XML-файл из 1С для просмотра?
Подойдёт ли файл из 1С 8.2 для загрузки в 8.3?
Можно ли выгрузить в XML табличную часть отчёта?
ЗаписьXML.Нужен ли XDTO, если хватает ЗаписьXML?
ЗаписьXML проще и полностью управляет структурой. XDTO полезен, когда есть XSD-схема получателя или нужно сериализовать объекты 1С целиком.