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

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

Как сохранить документы из 1С в XML

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

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

В 1С есть несколько принципиально разных механизмов выгрузки: типовые обработки обмена между конфигурациями, встроенные форматы отчётности (ФНС, ПФР, ФСС), универсальный обмен через правила конвертации и программная выгрузка средствами встроенного языка. Выбор зависит от того, куда пойдёт файл и кто будет его принимать.

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

Определите цель выгрузки перед выбором инструмента

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

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

Если принимающая сторона — другая конфигурация (из «Управления торговлей» в «Бухгалтерию») или вообще сторонняя система, нужны правила конвертации: структура объектов различается, и прямая выгрузка не сработает. Для отчётности в ФНС, ПФР и ФСС используются только утверждённые форматы, которые формируются штатными средствами регламентированной отчётности — самодельный XML инспекция не примет.

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

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

Базы имеют одинаковую конфигурацию и версиюИспользуйте обработку «Выгрузка и загрузка данных XML»
Конфигурации разные (например, УТ → БП)Настройте обмен через правила конвертации данных или типовой план обмена
Файл нужен для ФНС, ПФР или ФССФормируйте выгрузку только из формы регламентированного отчёта
XML читает внешняя система (сайт, WMS, CRM)Согласуйте формат с принимающей стороной и делайте программную выгрузку по согласованной схеме

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

Это самый распространённый способ разовой выгрузки документов между одинаковыми конфигурациями. Обработка входит в состав дистрибутивов многих типовых решений, а также доступна на диске ИТС и в составе «Инструментов разработчика».

Порядок работы следующий. Откройте обработку через меню «Файл → Открыть» в режиме предприятия. На вкладке «Выгрузка» укажите имя файла, в который будут сохранены данные. В дереве объектов метаданных отметьте нужные виды документов — например, «Реализация товаров и услуг» и «Поступление товаров и услуг».

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

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

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

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

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

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

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

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

Выгрузка отчётности и документов для контролирующих органов

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

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

Для документов электронного оборота (счета-фактуры, УПД, акты) выгрузка в XML выполняется через подсистему ЭДО: документ подписывается и отправляется оператору либо сохраняется в файл. Формат файла соответствует действующим приказам ФНС, поэтому вручную редактировать такой XML нельзя — нарушится и структура, и электронная подпись.

Программная выгрузка через встроенный язык

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

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

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

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

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

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

Факт создания файла ещё не означает, что выгрузка прошла успешно. Минимальная проверка включает три шага: файл открывается, структура читается, данные совпадают с источником.

Откройте XML в браузере или текстовом редакторе с поддержкой XML: файл должен начинаться с объявления <?xml version="1.0" encoding="UTF-8"?> и иметь один корневой элемент. Браузер сразу покажет синтаксическую ошибку, если файл оборван или содержит незакрытые теги.

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

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

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

Файл открывается в браузере
Норма

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

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

Браузер показывает ошибку разбора — файл оборван или содержит недопустимые символы

Количество документов
Норма

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

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

Документов меньше — часть не попала в выгрузку из-за отбора или пометки удаления

Суммы и даты
Норма

Значения в XML совпадают со значениями в базе

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

Даты сдвинуты или суммы в другой точности — проблема с форматом сериализации

Загрузка в приёмник
Норма

Документы загружаются без ошибок и создают проводки

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

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

Типичные ошибки и ограничения

Большинство проблем при выгрузке в XML связано не с самим форматом, а с сопутствующими данными. Документ ссылается на контрагента, договор, номенклатуру и склады — если эти объекты не выгружены, в базе-приёмнике документ либо не загрузится, либо загрузится с пустыми ссылками. Обработка «Выгрузка и загрузка данных XML» при включённом режиме выгрузки «при необходимости» подтягивает связанные объекты автоматически — этот режим стоит использовать.

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

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

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

Часто задаваемые вопросы

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

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

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

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

Файл выгрузился, но при загрузке в другую базу ошибки. Что проверить в первую очередь?

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

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

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

Какой кодировкой должен быть XML-файл для загрузки в 1С?

Стандарт — UTF-8, и именно её используют типовые механизмы. Если файл сформирован сторонней системой в другой кодировке (например, windows-1251), кириллица при загрузке может отобразиться некорректно. В таком случае файл пересохраняют в UTF-8 до загрузки или указывают кодировку явно при чтении средствами ЧтениеXML.

Итог

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

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