XML-файл из базы 1С: обработки, обмен EnterpriseData, командная строка и код

· 9 мин

Содержание

Чтобы выгрузить данные из 1С 8.3 в XML без программирования, откройте обработку «Выгрузка и загрузка данных XML» (ВыгрузкаЗагрузкаДанныхXML83.epf) через Главное меню → Файл → Открыть, отметьте нужные справочники и документы, укажите период и имя файла и нажмите «Выгрузить данные». Если XML нужен другой программе, а не такой же базе 1С, подойдут обмен в формате EnterpriseData, правила Конвертации данных или свой код на объекте ЗаписьXML.

Выбор зависит от того, кто будет читать файл. Копия базы с той же конфигурацией, другая конфигурация 1С, сайт, банк или складская система ждут разный XML. Ниже — каждый способ с настройкой и подводными камнями.

Какой способ выгрузки XML подходит под вашу задачу

Сначала ответьте себе на два вопроса: куда пойдёт файл и будет ли выгрузка регулярной.

СпособКогда братьЧто получитсяОграничения
📦 «Выгрузка и загрузка данных XML»Перенос объектов между базами с одинаковой конфигурациейXML во внутреннем формате платформыЗагрузить можно только в такую же конфигурацию
🔄 EnterpriseData через синхронизациюОбмен между типовыми конфигурациями (БП, УТ, УНФ, КА, ERP)Сообщение обмена по формату EnterpriseDataНужна поддержка формата в обеих программах
🧩 Правила Конвертации данныхНетиповые базы, обмен со старыми конфигурациямиXML по правилам из Конвертации данных 2.xПравила надо разработать или найти готовые
⌨️ Командная строкаНочная выгрузка по расписанию, выгрузка конфигурации в файлыXML данных или исходники метаданныхНужна своя обработка для данных
💻 ЗаписьXML и XDTOСайт, банк, маркетплейс, любая внешняя система со своей схемойXML ровно по требуемой структуреНужен программист

Перед первой выгрузкой проверьте права. Чтобы открыть внешнюю обработку из меню, у пользователя должно быть право «Интерактивное открытие внешних обработок». Без него пункт «Открыть» не сработает даже у бухгалтера с полными правами на учёт.

Выгрузка XML штатной обработкой «Выгрузка и загрузка данных XML»

Это самый быстрый способ вытащить XML из 1С, когда принимающая база — копия той же конфигурации. Например, нужно перенести 300 новых элементов номенклатуры из тестовой базы в рабочую или передать документы из филиала.

Обработка не встроена в типовые конфигурации. Её берут из комплекта инструментов разработчика на диске ИТС: для 8.3 это файл ВыгрузкаЗагрузкаДанныхXML83.epf.

Порядок выгрузки

  1. Сохраните файл обработки на диск, например в D:\Tools\.
  2. В 1С откройте Главное меню → Файл → Открыть и выберите .epf.
  3. Если появится предупреждение защиты от опасных действий, подтвердите открытие, если доверяете файлу.
  4. На вкладке выгрузки укажите имя файла: D:\Export\nomenklatura.xml.
  5. Задайте период — он нужен для документов. Справочники выгружаются целиком.
  6. В дереве метаданных отметьте флажками нужные объекты.
  7. Нажмите «Выгрузить данные» и дождитесь сообщения о завершении.

Что важно знать до загрузки

  • 🔗 Обработка выгружает и объекты, на которые ссылаются выбранные данные. Выгрузили документы реализации — в файл попадут и контрагенты, и номенклатура из них.
  • 🧾 В режиме загрузки объекты записываются без проведения и без проверки заполнения. Документы потом нужно перепровести.
  • 🆔 Объекты сопоставляются по внутреннему идентификатору. Если элемент с таким же GUID уже есть в приёмнике, он будет перезаписан.

Перед загрузкой XML в рабочую базу сделайте её резервную копию. Перезапись по GUID молча заменит реквизиты существующих элементов, а отменить это нечем.

Как выгрузить данные из 1С в XML в формате EnterpriseData

EnterpriseData — универсальный формат обмена, который понимают современные типовые конфигурации на БСП: Бухгалтерия предприятия 3.0, Управление торговлей 11, УНФ, Комплексная автоматизация, ERP. Если нужен обмен между ними, свою схему изобретать не надо.

Файл получается при синхронизации через каталог:

  1. Откройте Администрирование → Синхронизация данных.
  2. Включите флажок «Синхронизация данных», если он снят.
  3. Создайте новую синхронизацию и выберите программу-получателя из списка.
  4. Тип подключения — через локальный или сетевой каталог. Укажите папку, например \\fileserver\exchange\buh-ut\.
  5. Настройте правила отправки: с какой даты и какие разделы учёта передавать.
  6. Запустите синхронизацию вручную или задайте расписание.

В папке появится сообщение обмена. Если в настройках подключения включено сжатие, вместо .xml вы увидите .zip с XML внутри.

Сопоставление полей

При первом обмене программа попросит сопоставить уже существующие справочники: контрагентов, номенклатуру, склады. Это делают один раз. Дальше объекты связываются автоматически.

Сопоставление полей
ИНН и КПП контрагента→Контрагент в приёмнике
Код и наименование номенклатуры→Номенклатура
Наименование склада→Склад
Номер договора и дата→Договор контрагента

Не сопоставляйте вручную сотни позиций по одной. Сначала проверьте, что совпадают артикулы или ИНН — тогда программа сопоставит большую часть сама.

Выгрузка XML по правилам Конвертации данных

Когда базы разные и EnterpriseData не поддерживается — нетиповая доработанная конфигурация, старая база, отраслевое решение — помогает связка из двух частей:

  • 📐 правила обмена — XML-файл, который программист собирает в конфигурации «Конвертация данных 2.x»;
  • ⚙️ обработка «Универсальный обмен данными в формате XML» — V8Exchan83.epf, тот же комплект инструментов разработчика.

Как выполняется выгрузка

  1. Откройте V8Exchan83.epf через Файл → Открыть в базе-источнике.
  2. На вкладке выгрузки загрузите файл правил обмена.
  3. Обработка покажет список правил выгрузки — отметьте нужные.
  4. Задайте период и имя файла данных.
  5. Нажмите «Выгрузить данные».

В приёмнике открываете ту же обработку, переходите на вкладку загрузки, указываете файл данных и загружаете. Правила уже сохранены внутри файла данных, отдельно их подставлять не нужно.

Готовые правила для популярных пар конфигураций иногда входят в поставку типовых решений. Если пара нетиповая, правила придётся заказывать у программиста.

Выгрузка XML из 1С через командную строку

Из командной строки удобно запускать регулярные выгрузки по расписанию Windows. Есть два разных сценария, их часто путают.

Выгрузка конфигурации в XML-файлы

Это не данные, а исходники: справочники, документы, формы, модули в виде дерева XML-файлов. Нужно для Git, сравнения версий, EDT. В Конфигураторе это команда Конфигурация → Выгрузить конфигурацию в файлы. Из командной строки:

"C:\Program Files\1cv8\8.3.xx.xxxx\bin\1cv8.exe" DESIGNER /F "D:\Bases\Buh" /N "Администратор" /P "пароль" /DumpConfigToFiles "D:\Export\Config" /Out "D:\Export\dump.log"

Для серверной базы вместо /F укажите /S "srv1c\buh".

Выгрузка данных по расписанию

Платформа не умеет сама выгружать данные базы в XML одной командой. Делают так: пишут внешнюю обработку, которая при открытии выполняет выгрузку и закрывает программу, и запускают её параметром /Execute:

"C:\Program Files\1cv8\8.3.xx.xxxx\bin\1cv8.exe" ENTERPRISE /F "D:\Bases\Buh" /N "Обмен" /P "пароль" /Execute "D:\Tools\export.epf" /C "D:\Export\nomenklatura.xml" /DisableStartupMessages

Строку после /C обработка читает через свойство глобального контекста ПараметрЗапуска. В конце процедуры выгрузки вызывают ЗавершитьРаботуСистемы(Ложь), чтобы окно не висело.

Заведите для выгрузки отдельного пользователя с минимальными правами и не храните пароль администратора в bat-файле. Файл с паролем должен лежать в папке, доступ к которой есть только у службы планировщика.

Как сформировать XML кодом через объект ЗаписьXML

Когда XML нужен сайту, банку или складской системе, структура задаётся получателем. Штатные обработки тут бесполезны: нужен свой код. Базовый инструмент — объект ЗаписьXML. Он пишет файл последовательно, поэтому справляется и с десятками тысяч элементов без нехватки памяти.

Пример выгружает элементы справочника «Номенклатура» с кодом и наименованием:

&НаСервере
Процедура ВыгрузитьНоменклатуруНаСервере(ИмяФайла)

    Параметры = Новый ПараметрыЗаписиXML("UTF-8", "1.0", Истина);
    Запись = Новый ЗаписьXML;
    Запись.ОткрытьФайл(ИмяФайла, Параметры);
    Запись.ЗаписатьОбъявлениеXML();
    Запись.ЗаписатьНачалоЭлемента("Номенклатура");

    Выборка = Справочники.Номенклатура.Выбрать();
    Пока Выборка.Следующий() Цикл
        Если Выборка.ЭтоГруппа Тогда
            Продолжить;
        КонецЕсли;
        Запись.ЗаписатьНачалоЭлемента("Товар");
        Запись.ЗаписатьАтрибут("Код", СокрЛП(Выборка.Код));
        Запись.ЗаписатьНачалоЭлемента("Наименование");
        Запись.ЗаписатьТекст(Выборка.Наименование);
        Запись.ЗаписатьКонецЭлемента(); // Наименование
        Запись.ЗаписатьКонецЭлемента(); // Товар
    КонецЦикла;

    Запись.ЗаписатьКонецЭлемента(); // Номенклатура
    Запись.Закрыть();

КонецПроцедуры

Результат выглядит так:

<?xml version="1.0" encoding="UTF-8"?>
<Номенклатура>
  <Товар Код="00-00000123">
    <Наименование>Бумага офисная А4</Наименование>
  </Товар>
</Номенклатура>

Три приёма, без которых код ломается на реальных данных

  • 🖥️ Где лежит файл. Процедура с &НаСервере пишет на диск сервера 1С, а не на компьютер пользователя. В клиент-серверной базе пишите во временный файл (ПолучитьИмяВременногоФайла("xml")), помещайте его во временное хранилище и передавайте на клиент.
  • 🔢 Числа и даты. Не пишите число как есть: ЗаписатьТекст(Формат(Сумма, "ЧГ=0; ЧРД=.")) даст 1500.50 вместо 1 500,50. Дату — через XMLСтрока(Дата), получится 2026-10-07T00:00:00.
  • 🔤 Имена элементов. Получатель почти всегда ждёт латиницу: <Item>, <Name>. Кириллические имена допустимы в XML, но многие внешние парсеры на них спотыкаются.

Для выгрузки в строку, а не в файл, вместо ОткрытьФайл вызовите УстановитьСтроку(), а результат заберите из Закрыть() — метод вернёт готовый текст.

XML по чужой схеме: XDTO-пакеты и сериализатор

Если получатель прислал XSD-схему, вручную собирать каждый элемент через ЗаписьXML долго и рискованно: одна опечатка в имени тега — и файл не пройдёт проверку. Удобнее загрузить схему в конфигурацию как XDTO-пакет.

Как подключить схему

  1. В Конфигураторе откройте ветку Общие → XDTO-пакеты.
  2. Через контекстное меню выберите импорт XML-схемы и укажите файл .xsd.
  3. Платформа создаст пакет с пространством имён из схемы. Типовую конфигурацию для этого лучше дорабатывать через расширение.

Заполнение и запись

URI = "http://example.ru/orders";   // targetNamespace из схемы
ТипЗаказ = ФабрикаXDTO.Тип(URI, "Order");
Заказ = ФабрикаXDTO.Создать(ТипЗаказ);
Заказ.Number = "000123";
Заказ.Date = ТекущаяДатаСеанса();

Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл(ИмяФайла, "UTF-8");
ФабрикаXDTO.ЗаписатьXML(Запись, Заказ);
Запись.Закрыть();

Перед записью можно вызвать Заказ.Проверить(): метод сверит объект со схемой и выбросит исключение, если обязательное поле пустое или значение не подходит по типу. Так ошибку видит программист, а не служба поддержки получателя.

Сериализатор для обмена между базами 1С

Если нужно просто перенести объект в другую базу 1С, схема не нужна. СериализаторXDTO.ЗаписатьXML(Запись, СправочникОбъект) запишет объект целиком во внутреннем формате платформы. Так же устроена штатная обработка из второго раздела.

ИнструментСтруктура XMLКто задаёт схему
ЗаписьXMLЛюбая, собираете вручнуюПрограммист в коде
ФабрикаXDTO + пакетСтрого по XSDПолучатель данных
СериализаторXDTOВнутренний формат 1СПлатформа

Ошибки при выгрузке XML и как их снять

Диагностика: выберите симптом

Если файл всё равно не принимают, откройте его в любом браузере. Браузер сразу покажет строку с нарушенной разметкой — незакрытый тег или лишний символ.

Частые вопросы

Как выгрузить декларацию или отчёт в ФНС в XML?
Откройте отчёт в разделе регламентированных отчётов и нажмите в его форме «Выгрузить». Программа сохранит XML по формату ФНС с правильным именем файла. Этот файл подходит для загрузки в программу оператора или личный кабинет.
Можно ли выгрузить в XML всю базу целиком?
Для полной копии базы XML не нужен — используйте выгрузку в .dt через Конфигуратор. Обработка выгрузки XML рассчитана на выборочный перенос объектов и на больших объёмах работает медленно.
Чем открыть выгруженный XML, чтобы посмотреть содержимое?
Подойдёт браузер, Notepad++ или любой текстовый редактор с подсветкой. Excel тоже откроет файл, но разложит вложенные элементы по столбцам не всегда понятно.
Почему в XML из штатной обработки нет печатных форм и файлов?
Обработка выгружает данные объектов: реквизиты и табличные части. Печатные формы строятся в момент печати и в базе не хранятся, а присоединённые файлы лежат в отдельных справочниках — их нужно отметить в дереве метаданных отдельно.
Работает ли выгрузка XML в базе на сервисе 1С:Фреш?
Открытие внешних обработок там ограничено правилами сервиса. Для переноса данных пользуйтесь встроенной выгрузкой данных сервиса или синхронизацией через EnterpriseData.