Разработка и Конфигурация · 12 мин
Как в 1С добавить формат XML: практическое руководство
Практическая инструкция: как в 1С добавить формат XML — настройка обмена, выгрузка и загрузка данных, работа с XDTO-пакетами, типовые ошибки и проверка результата.
Формат XML в 1С используется повсеместно: обмен данными между конфигурациями, выгрузка отчетности в контролирующие органы, интеграция с сайтами и банками, перенос справочников между базами. «Добавить формат XML» может означать разные задачи — от простой выгрузки документа в файл до настройки плана обмена или описания собственной схемы данных через XDTO.
Путь решения зависит от того, что именно требуется: выгрузить данные в XML один раз, настроить регулярный обмен, добавить XML как формат сохранения печатной формы или отчета либо реализовать программную выгрузку через встроенный язык. Ниже разобраны все основные сценарии с конкретными действиями и проверками результата.
Определяем задачу: какой сценарий работы с XML вам нужен
Прежде чем что-то настраивать, важно понять, какая из четырех типовых задач стоит перед вами. Первая — разовая выгрузка или загрузка данных (справочники, документы) для переноса между базами. Вторая — регулярный обмен по правилам, например синхронизация «Управления торговлей» и «Бухгалтерии». Третья — добавление XML как формата сохранения отчета или печатной формы. Четвертая — разработка собственной выгрузки в XML по заданной схеме, например для интеграции со сторонней системой.
От сценария зависит инструмент: типовые механизмы доступны пользователю без доработок, тогда как собственный формат потребует работы в конфигураторе и, возможно, прав на изменение конфигурации. Если конфигурация находится на поддержке без возможности изменения, для доработок используйте механизм расширений — он не снимает конфигурацию с поддержки.
Как выбрать действие
Разовая выгрузка и загрузка данных через типовую обработку
В большинстве типовых конфигураций на платформе 1С:Предприятие 8.3 есть встроенная обработка «Выгрузка и загрузка данных XML». Она находится в разделе «Администрирование» → «Сервис» либо доступна через «Все функции» → «Обработки». Обработка предназначена для переноса данных между информационными базами с одинаковой конфигурацией — например, из рабочей базы в копию для тестирования.
Порядок выгрузки: откройте обработку, на закладке «Выгрузка» укажите имя файла, отметьте флажками объекты метаданных (справочники, документы, регистры), при необходимости настройте отборы по периоду или организации, затем нажмите «Выгрузить данные». Платформа сформирует XML-файл, содержащий сериализованные объекты с сохранением ссылочной целостности.
Загрузка выполняется зеркально: на закладке «Загрузка» выберите файл и нажмите «Загрузить данные». Перед загрузкой в рабочую базу обязательно сделайте резервную копию — операция перезаписывает существующие объекты с совпадающими уникальными идентификаторами, и откатить её штатными средствами нельзя.
Настройка регулярного обмена данными через план обмена
Если XML нужен как транспорт для постоянной синхронизации — например, между «1С:Управление торговлей» и «1С:Бухгалтерия» — используйте механизм планов обмена. В типовых конфигурациях настройка выполняется в разделе «Администрирование» → «Синхронизация данных» (название раздела может отличаться в зависимости от конфигурации).
Мастер настройки предложит выбрать программу-корреспондента, способ подключения (через файл, каталог, FTP или прямое подключение) и правила выгрузки. При обмене через файл система формирует XML-пакет сообщения обмена: он содержит служебный заголовок и измененные данные. Регистрация изменений ведется автоматически — в выгрузку попадают только новые и измененные объекты с момента последней синхронизации.
Для обмена между разными конфигурациями применяются правила конвертации, созданные в «1С:Конвертация данных». Типовые правила поставляются вместе с конфигурациями; если структура доработана, правила нужно актуализировать, иначе часть реквизитов не перенесется.
- 1Откройте «Администрирование» → «Синхронизация данных» и включите использование синхронизации
- 2Создайте новую настройку, выберите программу-корреспондента и вариант подключения «через каталог»
- 3Укажите общий сетевой каталог для XML-файлов обмена, доступный обеим базам
- 4Выполните начальную выгрузку данных и загрузите её во вторую базу
- 5Настройте расписание автоматического обмена и проверьте журнал регистрации на ошибки
Добавление XML как формата сохранения отчетов и табличных документов
Табличный документ в 1С (результат отчета, печатная форма) можно сохранить в XML средствами платформы без доработок. В режиме предприятия откройте сформированный отчет, выберите «Файл» → «Сохранить» или «Сохранить копию» и в диалоге укажите тип файла. Доступность XML-формата зависит от версии платформы: современные релизы поддерживают сохранение табличных документов в формате XML (включая формат электронных таблиц), наряду с MXL, XLSX, PDF и HTML.
Программно сохранение выполняется методом табличного документа с указанием типа файла. Это удобно, когда XML-выгрузку отчета нужно встроить в регламентное задание или кнопку формы.
ТабДок = Новый ТабличныйДокумент;
// ... формирование отчета ...
ТабДок.Записать("C:\Выгрузки\Отчет.xml", ТипФайлаТабличногоДокумента.XML);Учитывайте ограничение: сохраненный таким способом XML описывает структуру табличного документа (ячейки, форматирование, объединения), а не прикладные данные. Для машинной обработки контрагентами или сторонними системами обычно нужна выгрузка именно данных — через XDTO или произвольную запись XML.
Собственный формат XML: XDTO-пакеты и программная запись
Когда внешняя система требует XML строго определенной структуры (по XSD-схеме), в конфигураторе создается XDTO-пакет. Откройте конфигуратор, в дереве конфигурации найдите ветку «Общие» → «XDTO-пакеты», добавьте новый пакет и импортируйте схему из XSD-файла либо опишите типы вручную. После этого объекты выгрузки создаются и сериализуются встроенным языком с автоматической валидацией по схеме.
Альтернатива — ручная запись XML через объект ЗаписьXML. Этот способ гибче и не требует описания схемы, но вся ответственность за корректность структуры ложится на разработчика: платформа не проверит, что обязательный элемент записан.
Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл("C:\Выгрузки\Товары.xml", "UTF-8");
Запись.ЗаписатьОбъявлениеXML();
Запись.ЗаписатьНачалоЭлемента("Товары");
Для Каждого Строка Из ТаблицаТоваров Цикл
Запись.ЗаписатьНачалоЭлемента("Товар");
Запись.ЗаписатьАтрибут("Код", Строка(Строка.Код));
Запись.ЗаписатьАтрибут("Наименование", Строка.Наименование);
Запись.ЗаписатьКонецЭлемента();
КонецЦикла;
Запись.ЗаписатьКонецЭлемента();
Запись.Закрыть();Для чтения XML используются объекты ЧтениеXML (потоковый разбор) или ЧтениеXML в связке с фабрикой XDTO, когда документ соответствует пакету. Потоковое чтение предпочтительнее для больших файлов: оно не загружает документ в память целиком.
Проверка результата и типичные ошибки
После формирования XML-файла проверьте его до передачи дальше. Минимальный набор проверок: файл открывается в браузере или текстовом редакторе без ошибок разбора; кодировка соответствует ожиданиям приемника (чаще всего UTF-8); обязательные элементы и атрибуты присутствуют; при обмене через план обмена в журнале регистрации нет ошибок отправки и получения.
Как проверить результат
Документ отображается как дерево элементов без сообщений об ошибке разбора
Браузер сообщает об ошибке синтаксиса XML — ищите незакрытый тег или запрещенный символ
Кириллица читается корректно, в объявлении указана UTF-8
Иероглифы или знаки вопроса — файл записан не в той кодировке
Объекты создаются, ссылки разрешаются, журнал регистрации чист
Ошибки «Объект не найден» или обрыв загрузки — версии конфигураций различаются
Наиболее частая проблема — несовпадение версий конфигураций источника и приемника при переносе данных. Вторая по частоте — спецсимволы (&, <, >, кавычки) в строковых данных при ручной записи XML: объект ЗаписьXML экранирует их автоматически, а вот конкатенация строк «вручную» — нет, поэтому собирать XML строковым сложением не следует. Третья типичная ошибка — выгрузка без зависимых объектов: документ перенесся, а контрагент остался в старой базе, и ссылка оказалась битой.
Ограничения и альтернативные подходы
XML — не единственный и не всегда оптимальный формат. Для интеграции с веб-сервисами и сайтами все чаще используется JSON, который платформа также поддерживает штатно (объекты ЗаписьJSON, ЧтениеJSON). Для обмена между базами 1С на одной платформе эффективнее штатный формат EnterpriseData или прямое COM/HTTP-подключение без промежуточных файлов.
Учитывайте также ограничения по объему: выгрузка больших таблиц (сотни тысяч записей) в один XML-файл приводит к росту времени формирования и потребления памяти. В таких случаях разбивайте выгрузку на порции или используйте потоковую запись с последовательной выборкой данных запросом.
Сравнение вариантов выгрузки
Подходит для переноса между одинаковыми конфигурациями; не работает между разными конфигурациями
Оптимален для регулярной синхронизации разных конфигураций; требует настройки и поддержки правил
Дает строгий контроль схемы для внешних систем; требует разработки и прав на изменение конфигурации
Максимальная гибкость без описания схемы; валидацию структуры придется обеспечивать самостоятельно
Если задача разовая и данные неструктурированные, рассмотрите выгрузку в табличный документ с сохранением в XLSX — для ручной обработки это зачастую проще, чем XML. XML оправдан там, где файл будет читать другая программа.
Что важно запомнить
Способ добавления XML в 1С выбирается по задаче: типовая обработка — для разового переноса, план обмена — для регулярной синхронизации, XDTO или ЗаписьXML — для собственного формата. Перед загрузкой данных всегда делайте резервную копию и тестируйте на копии базы.
Частые вопросы
Можно ли выгрузить в XML данные между разными конфигурациями, например из УТ в БП?
Да, но не обработкой «Выгрузка и загрузка данных XML» — она работает только между идентичными конфигурациями. Для разных конфигураций настраивается синхронизация данных с правилами конвертации (типовые правила обычно уже включены в поставку) либо используется «1С:Конвертация данных» для создания собственных правил.
Почему при загрузке XML возникает ошибка «Ошибка формата потока»?
Чаще всего файл поврежден при передаче (обрыв копирования, пересылка архивом с ошибкой) или создан в несовместимой версии конфигурации. Проверьте, что файл открывается как корректный XML, и что версии конфигураций источника и приемника совпадают. Если файл большой — попробуйте сформировать выгрузку заново.
Как выгрузить в XML только часть данных, а не весь справочник?
В типовой обработке выгрузки используйте отборы: для документов — по периоду и организации, для справочников — по конкретным элементам или группам. При программной выгрузке отбор задается условиями запроса, которым выбираются данные перед записью в файл.
Нужны ли права администратора для работы с XML-выгрузкой?
Для типовой обработки выгрузки/загрузки обычно требуются права администратора или роль с доступом к сервисным обработкам. Сохранение табличного документа в файл доступно любому пользователю. Работа в конфигураторе (XDTO-пакеты, расширения) требует прав на администрирование и изменение конфигурации.
Чем отличается XML-файл обмена от файла, сохраненного из табличного документа?
Файл плана обмена содержит прикладные данные и служебные блоки (номера сообщений, состав данных) — он предназначен для загрузки в другую базу. XML табличного документа описывает внешний вид отчета: ячейки, текст, форматирование. Загрузить такой файл как данные в другую базу нельзя.
Можно ли автоматизировать выгрузку XML по расписанию?
Да. Для синхронизации данных расписание настраивается прямо в настройке обмена. Для собственной выгрузки создается регламентное задание, вызывающее процедуру формирования и записи файла. В файловом режиме работы регламентные задания выполняются только при запущенном сеансе с соответствующими настройками — учитывайте это при планировании.