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

Разработка и Конфигурация · 12 мин

Как в 1С добавить формат XML: практическое руководство

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

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

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

Определяем задачу: какой сценарий работы с XML вам нужен

Прежде чем что-то настраивать, важно понять, какая из четырех типовых задач стоит перед вами. Первая — разовая выгрузка или загрузка данных (справочники, документы) для переноса между базами. Вторая — регулярный обмен по правилам, например синхронизация «Управления торговлей» и «Бухгалтерии». Третья — добавление XML как формата сохранения отчета или печатной формы. Четвертая — разработка собственной выгрузки в XML по заданной схеме, например для интеграции со сторонней системой.

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

Маршрут решения

Как выбрать действие

Нужно один раз перенести данные между базами одной конфигурацииИспользуйте обработку «Выгрузка и загрузка данных XML» из раздела «Администрирование»
Требуется регулярный обмен между разными конфигурациямиНастройте план обмена и правила конвертации через «Синхронизацию данных»
Нужен свой формат XML по внешней схемеСоздайте XDTO-пакет в конфигураторе и напишите выгрузку встроенным языком
Нужно сохранять отчет или табличный документ в XMLИспользуйте команду сохранения с выбором типа файла или метод Записать табличного документа

Разовая выгрузка и загрузка данных через типовую обработку

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

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

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

Настройка регулярного обмена данными через план обмена

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

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

Для обмена между разными конфигурациями применяются правила конвертации, созданные в «1С:Конвертация данных». Типовые правила поставляются вместе с конфигурациями; если структура доработана, правила нужно актуализировать, иначе часть реквизитов не перенесется.

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

Добавление XML как формата сохранения отчетов и табличных документов

Табличный документ в 1С (результат отчета, печатная форма) можно сохранить в XML средствами платформы без доработок. В режиме предприятия откройте сформированный отчет, выберите «Файл» → «Сохранить» или «Сохранить копию» и в диалоге укажите тип файла. Доступность XML-формата зависит от версии платформы: современные релизы поддерживают сохранение табличных документов в формате XML (включая формат электронных таблиц), наряду с MXL, XLSX, PDF и HTML.

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

bsl
ТабДок = Новый ТабличныйДокумент;
// ... формирование отчета ...
ТабДок.Записать("C:\Выгрузки\Отчет.xml", ТипФайлаТабличногоДокумента.XML);

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

Собственный формат XML: XDTO-пакеты и программная запись

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

Альтернатива — ручная запись XML через объект ЗаписьXML. Этот способ гибче и не требует описания схемы, но вся ответственность за корректность структуры ложится на разработчика: платформа не проверит, что обязательный элемент записан.

bsl
Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл("C:\Выгрузки\Товары.xml", "UTF-8");
Запись.ЗаписатьОбъявлениеXML();
Запись.ЗаписатьНачалоЭлемента("Товары");
Для Каждого Строка Из ТаблицаТоваров Цикл
    Запись.ЗаписатьНачалоЭлемента("Товар");
    Запись.ЗаписатьАтрибут("Код", Строка(Строка.Код));
    Запись.ЗаписатьАтрибут("Наименование", Строка.Наименование);
    Запись.ЗаписатьКонецЭлемента();
КонецЦикла;
Запись.ЗаписатьКонецЭлемента();
Запись.Закрыть();

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

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

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

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

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

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

Документ отображается как дерево элементов без сообщений об ошибке разбора

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

Браузер сообщает об ошибке синтаксиса XML — ищите незакрытый тег или запрещенный символ

Кодировка файла
Норма

Кириллица читается корректно, в объявлении указана UTF-8

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

Иероглифы или знаки вопроса — файл записан не в той кодировке

Загрузка в базу-приемник
Норма

Объекты создаются, ссылки разрешаются, журнал регистрации чист

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

Ошибки «Объект не найден» или обрыв загрузки — версии конфигураций различаются

Наиболее частая проблема — несовпадение версий конфигураций источника и приемника при переносе данных. Вторая по частоте — спецсимволы (&, <, >, кавычки) в строковых данных при ручной записи XML: объект ЗаписьXML экранирует их автоматически, а вот конкатенация строк «вручную» — нет, поэтому собирать XML строковым сложением не следует. Третья типичная ошибка — выгрузка без зависимых объектов: документ перенесся, а контрагент остался в старой базе, и ссылка оказалась битой.

Типичные ошибки
01
Сборка XML конкатенацией строк вместо ЗаписьXML — спецсимволы ломают структуру документа
02
Загрузка данных в рабочую базу без копии и теста — необратимая порча данных при несовпадении версий
03
Выгрузка документов без связанных справочников — в приемнике появляются битые ссылки
04
Игнорирование журнала регистрации при обмене — ошибки остаются незамеченными, данные расходятся
05
Изменение типовой конфигурации вместо расширения — потеря поддержки и сложности при обновлении

Ограничения и альтернативные подходы

XML — не единственный и не всегда оптимальный формат. Для интеграции с веб-сервисами и сайтами все чаще используется JSON, который платформа также поддерживает штатно (объекты ЗаписьJSON, ЧтениеJSON). Для обмена между базами 1С на одной платформе эффективнее штатный формат EnterpriseData или прямое COM/HTTP-подключение без промежуточных файлов.

Учитывайте также ограничения по объему: выгрузка больших таблиц (сотни тысяч записей) в один XML-файл приводит к росту времени формирования и потребления памяти. В таких случаях разбивайте выгрузку на порции или используйте потоковую запись с последовательной выборкой данных запросом.

Сравнение вариантов выгрузки

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

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

План обмена с правилами конвертации

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

XDTO-пакет + встроенный язык

Дает строгий контроль схемы для внешних систем; требует разработки и прав на изменение конфигурации

Ручная запись через ЗаписьXML

Максимальная гибкость без описания схемы; валидацию структуры придется обеспечивать самостоятельно

Если задача разовая и данные неструктурированные, рассмотрите выгрузку в табличный документ с сохранением в XLSX — для ручной обработки это зачастую проще, чем XML. XML оправдан там, где файл будет читать другая программа.

Итог

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

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

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

Можно ли выгрузить в XML данные между разными конфигурациями, например из УТ в БП?

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

Почему при загрузке XML возникает ошибка «Ошибка формата потока»?

Чаще всего файл поврежден при передаче (обрыв копирования, пересылка архивом с ошибкой) или создан в несовместимой версии конфигурации. Проверьте, что файл открывается как корректный XML, и что версии конфигураций источника и приемника совпадают. Если файл большой — попробуйте сформировать выгрузку заново.

Как выгрузить в XML только часть данных, а не весь справочник?

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

Нужны ли права администратора для работы с XML-выгрузкой?

Для типовой обработки выгрузки/загрузки обычно требуются права администратора или роль с доступом к сервисным обработкам. Сохранение табличного документа в файл доступно любому пользователю. Работа в конфигураторе (XDTO-пакеты, расширения) требует прав на администрирование и изменение конфигурации.

Чем отличается XML-файл обмена от файла, сохраненного из табличного документа?

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

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

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