К статье
Практический материал

Администрирование · 11 мин

Как выгрузить данные из 1С 8.3 в XML

Способы выгрузки данных из 1С 8.3 в XML: типовые обработки, выгрузка документов и справочников, план обмена, код на встроенном языке. Ошибки и проверка результата.

Выгрузка данных из 1С 8.3 в формат XML — одна из самых частых задач при обмене с банками, торговыми площадками, налоговыми сервисами и другими базами 1С. Платформа поддерживает несколько способов: типовые обработки, планы обмена, выгрузку отдельных объектов и программную запись через встроенный язык. Выбор зависит от того, что именно нужно выгрузить — один документ, справочник целиком или полную копию базы.

Важно понимать разницу между двумя подходами. Первый — выгрузка в «родном» формате 1С (EnterpriseData, формат выгрузки информационной базы), которая подходит для переноса данных между базами 1С. Второй — формирование XML по произвольной схеме, например для сайта, маркетплейса или госуслуг, где требуется строго определённая структура файла. Эти задачи решаются разными инструментами, и путать их не стоит.

Перед началом работы убедитесь, что у вашего пользователя есть права на нужные объекты и на выполнение внешних обработок, а сама база доступна в нужном режиме — файловом или клиент-серверном. Для массовых выгрузок рекомендуется сначала сделать резервную копию или хотя бы выполнить тест на копии базы.

Какой способ выгрузки выбрать

Платформа 1С 8.3 предлагает несколько механизмов, и у каждого своя область применения. Неправильный выбор — главная причина того, что файл не принимается системой-получателем или данные переносятся с потерями.

Ориентируйтесь на цель обмена. Если нужно перенести данные между двумя базами 1С одинаковой конфигурации — достаточно типовой обработки выгрузки. Если базы разные (например, из «Управления торговлей» в «Бухгалтерию») — нужны правила обмена через «Конвертацию данных» или универсальный формат EnterpriseData. Если файл требуется сторонней системе (сайт, банк, маркетплейс) — придётся формировать XML по заданной схеме программно или через готовые механизмы конфигурации.

Сравнение способов выгрузки

Типовая обработка «Выгрузка и загрузка данных XML»

Подходит для переноса между идентичными конфигурациями. Ограничение: структуры метаданных баз должны совпадать.

План обмена

Для регулярного автоматического обмена между базами, в том числе разных конфигураций. Требует первоначальной настройки.

XDTO и программная запись

Для выгрузки по произвольной схеме в сторонние системы. Требует навыков программирования на встроенном языке.

Универсальный формат EnterpriseData

Для обмена с сайтами и между типовыми конфигурациями без правил конвертации. Поддерживается не всеми старыми версиями.

Выгрузка всей базы или отдельных данных типовой обработкой

Самый простой способ получить XML-файл — воспользоваться обработкой «Выгрузка и загрузка данных XML». В большинстве типовых конфигураций она доступна через раздел «Администрирование» → «Обслуживание» или через «Все функции» → «Обработки». Если её нет в интерфейсе, обработку можно найти на диске ИТС или в составе дистрибутива конфигурации.

Порядок работы типовой: откройте обработку, на закладке «Выгрузка» укажите имя файла, отметьте флажками нужные объекты метаданных (справочники, документы, регистры), при необходимости задайте период выгрузки документов и нажмите «Выгрузить данные». Результат — один XML-файл, который затем загружается в базу-приёмник той же обработкой на закладке «Загрузка».

Порядок выгрузки типовой обработкой
  1. 1
    Откройте обработку «Выгрузка и загрузка данных XML» (Администрирование → Обслуживание или через Все функции).
  2. 2
    На закладке «Выгрузка» укажите путь и имя XML-файла.
  3. 3
    Отметьте объекты метаданных для выгрузки, задайте период для документов.
  4. 4
    Нажмите «Выгрузить данные» и дождитесь завершения.
  5. 5
    Откройте файл в текстовом редакторе и убедитесь, что он не пустой и содержит данные.

Учтите ограничение: такой файл корректно загрузится только в базу с идентичной структурой метаданных. Если в базе-источнике добавлены реквизиты, которых нет в приёмнике, при загрузке возникнут ошибки или данные потеряются без предупреждения.

Выгрузка документов и справочников через план обмена

Если обмен нужен регулярно — например, ежедневная выгрузка номенклатуры и заказов на сайт или синхронизация двух баз — настройте план обмена. В типовых конфигурациях это делается через «Администрирование» → «Синхронизация данных» → «Настройки синхронизации данных».

При создании настройки вы выбираете формат обмена (универсальный EnterpriseData или формат конкретной конфигурации), состав передаваемых данных и расписание. Платформа сама регистрирует изменённые объекты и формирует XML-сообщения обмена. Выгрузка может выполняться в файл через каталог, по FTP или через веб-сервис.

Преимущество плана обмена — механизм регистрации изменений: в файл попадают только новые и изменённые объекты, а не вся база. Это существенно сокращает объём файлов и время обмена на больших базах.

Выгрузка в XML по произвольной схеме (для сайта, банка, маркетплейса)

Сторонние системы обычно требуют XML строго определённой структуры: с конкретными именами тегов, атрибутами и порядком элементов. Типовые обработки здесь не помогут — файл формируется программно. Есть два основных подхода: XDTO-пакеты и прямая запись через объект «ЗаписьXML».

XDTO-пакет — это описание схемы XML внутри конфигурации. Вы добавляете пакет в дереве метаданных (ветка «Общие» → «XDTO-пакеты»), загружаете в него XSD-схему от системы-получателя и затем в коде создаёте объекты по этой схеме и сериализуете их в файл. Платформа автоматически проверяет соответствие структуре, что снижает риск ошибок.

Второй вариант — прямая запись. Объект «ЗаписьXML» позволяет последовательно выводить элементы, атрибуты и текст, полностью контролируя итоговый файл. Это гибче, но всю валидацию вы выполняете сами.

bsl
Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл("C:\Обмен\nomenclature.xml", "UTF-8");
Запись.ЗаписатьОбъявлениеXML();
Запись.ЗаписатьНачалоЭлемента("Товары");

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

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

Такой код можно выполнить через внешнюю обработку или консоль кода. Проверьте, что у пользователя есть права на запись файлов в целевой каталог, а в клиент-серверном варианте помните: код, выполняемый на сервере, пишет файл на диск сервера, а не вашего компьютера.

Выгрузка табличных данных и отчётов

Иногда требуется выгрузить не объект базы, а результат запроса или таблицу — например, остатки по складу или прайс. Здесь удобен промежуточный вариант: сформировать таблицу значений запросом, а затем обойти её в цикле и записать в XML тем же объектом «ЗаписьXML».

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

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

Проверка результата и типичные ошибки

После выгрузки обязательно проверьте файл до его отправки или загрузки. Откройте XML в текстовом редакторе или браузере: файл должен начинаться с объявления XML, иметь корректную кодировку (обычно UTF-8) и содержать ожидаемое количество элементов. Браузер сразу покажет синтаксическую ошибку, если структура нарушена.

Контрольные точки

Как проверить результат

Открытие файла в браузере
Норма

Структура отображается без сообщений об ошибке синтаксиса

Тревожный признак

Ошибка разбора XML, указание строки с проблемой

Кодировка
Норма

Русские символы читаемы, в объявлении указана UTF-8 или та, что требует получатель

Тревожный признак

Кракозябры вместо кириллицы

Полнота данных
Норма

Количество элементов совпадает с количеством объектов в выборке

Тревожный признак

Элементов меньше — вероятно, часть данных отсеялась условиями

Проверка на копии
Норма

Файл загружается в тестовую базу без ошибок

Тревожный признак

Ошибки загрузки, незаполненные реквизиты

Типичные ошибки
01
Выгрузка типовой обработкой и попытка загрузить в базу с другой конфигурацией — ошибки загрузки и потеря данных.
02
Запись файла на сервере вместо локального диска в клиент-серверном варианте — файл «теряется», пользователь не может его найти.
03
Неверная кодировка файла — система-получатель отклоняет файл или искажает кириллицу.
04
Незакрытый объект ЗаписьXML (нет вызова Закрыть()) — файл оказывается пустым или обрезанным.
05
Выгрузка без фильтра по периоду на большой базе — многогигабайтный файл и зависание сеанса.

Отдельно отметим спецсимволы. Значения, содержащие символы <, >, & и кавычки, должны корректно экранироваться. При использовании «ЗаписьXML» платформа делает это автоматически, а вот при ручной сборке XML конкатенацией строк — нет, и файл получится невалидным. Поэтому собирать XML «руками» через строки не рекомендуется.

Ограничения и когда нужен специалист

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

Обратитесь к специалисту по 1С, если нужно: настроить обмен между разными конфигурациями с нестандартными правилами, сформировать XML по сложной XSD-схеме с обязательной валидацией (например, для ЭДО или отчётности), организовать обмен по расписанию на клиент-серверной базе или разобраться с ошибками уже работающей синхронизации.

Итог

Что важно запомнить

Для обмена между одинаковыми базами 1С используйте типовую обработку «Выгрузка и загрузка данных XML», для регулярной синхронизации — план обмена, для сторонних систем — программную запись через XDTO или ЗаписьXML. Перед загрузкой всегда делайте резервную копию и проверяйте файл на тестовой базе.

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

Можно ли выгрузить в XML без прав администратора?

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

Чем отличается выгрузка в XML от выгрузки в Excel?

Excel подходит для анализа и печати данных человеком, а XML — для машинного обмена между системами. XML хранит структуру, типы данных и связи объектов, поэтому его используют для интеграций. Для передачи прайса коллеге достаточно Excel, для загрузки на сайт нужен XML.

Файл получился очень большим, что делать?

Ограничьте выгрузку: задайте период для документов, исключите лишние объекты метаданных, используйте план обмена с регистрацией только изменений. Для уже сформированного файла можно применить сжатие в ZIP — большинство механизмов обмена 1С умеют работать с архивами.

Как выгрузить данные из файловой базы, если нет конфигуратора?

Конфигуратор для выгрузки не обязателен: типовая обработка и планы обмена работают в режиме «Предприятие». Конфигуратор понадобится только если нужно добавить XDTO-пакет или изменить код. Разовую программную выгрузку можно выполнить внешней обработкой без изменения конфигурации.

Почему при загрузке XML появляются дубли элементов справочников?

Чаще всего потому, что в базе-источнике и приёмнике у одних и тех же элементов разные внутренние идентификаторы (GUID), а синхронизация по полям поиска (код, наименование) не настроена или не сработала. Перед загрузкой проверьте настройки сопоставления объектов в правилах обмена и выполните сопоставление вручную на этапе первой загрузки.

Можно ли автоматизировать выгрузку по расписанию?

Да. В клиент-серверном варианте используйте регламентные задания, которые формируют файл на сервере. В файловом варианте подойдёт запуск 1С из планировщика Windows с параметром Execute для внешней обработки либо план обмена с настроенным расписанием синхронизации.