Форматы выгрузки данных в 1С: XML, JSON, CSV, MXL

· 9 мин

Содержание

Тип файла в 1С задаётся в момент сохранения. Для таблицы на экране — в диалоге Главное меню → Файл → Сохранить как, в выпадающем списке «Тип файла». В коде — вторым параметром метода Записать() у табличного документа или через отдельные объекты ЗаписьXML, ЗаписьJSON, ЗаписьТекста.

Выбор зависит от того, кто откроет файл дальше. Человеку для просмотра и правки нужен XLSX или MXL. Другой программе для обмена — XML, JSON или CSV. Старому бухгалтерскому ПО и банкам иногда до сих пор нужен DBF. Ниже — чем форматы отличаются, где какой уместен и как не получить «кракозябры» вместо кириллицы.

Какие форматы умеет сохранять 1С

Платформа 8.3 делит выгрузку на две ветки: табличный документ (то, что вы видите как отчёт или печатную форму) и программную сериализацию данных в структурированный файл.

Табличный документ сохраняется в такие типы:

  • 📊 MXL — родной формат 1С. Полностью сохраняет оформление, формулы ячеек, группировки и расшифровки. Откроется только в 1С.
  • 📗 XLSX — современный Excel. Универсальный вариант для передачи людям.
  • 📄 XLS — старый Excel (формат Excel 97–2003), нужен редко.
  • 📘 ODS — таблица OpenOffice/LibreOffice.
  • 🧾 PDF — для печати и пересылки без правок.
  • 🌐 HTML — для публикации или вставки в письмо.
  • 📝 TXT — простой текст, значения через табуляцию.
  • 🗃 DBF — таблица dBase, для обмена со старыми программами.

Вторая ветка — выгрузка прикладных данных (справочников, документов, их реквизитов) для обмена с другой базой или системой. Здесь работают текстовые структурированные форматы: XML, JSON, CSV, а также DBF через объект XBase.

Простое правило: если файл откроет человек — берите XLSX. Если файл прочитает программа — XML или JSON. Если это внутренний обмен между базами 1С — стандартный формат EnterpriseData (тот же XML под капотом).

XML и сериализация через XDTO

XML — основной формат обмена в экосистеме 1С. На нём построены типовые правила конвертации, обмен между Бухгалтерией и ЗУП, выгрузка в госсистемы.

Записать произвольные данные в XML можно двумя способами.

Ручная запись узлов — когда вы сами описываете структуру:

Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл("C:\Обмен\nomenklatura.xml", "UTF-8");
Запись.ЗаписатьОбъявлениеXML();
Запись.ЗаписатьНачалоЭлемента("Товар");
Запись.ЗаписатьАтрибут("Код", "000123");
Запись.ЗаписатьТекст("Карандаш чернографитный");
Запись.ЗаписатьКонецЭлемента();
Запись.Закрыть();

Сериализация через XDTO — когда нужно выгрузить объект целиком, со всеми реквизитами:

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

XDTO (XML Data Transfer Objects) — это механизм, который описывает структуру данных пакетами типов. Прикладной объект автоматически превращается в XML по схеме конфигурации, а на приёмнике так же разбирается обратно. Именно на XDTO-пакетах построен формат EnterpriseData, через который обмениваются типовые конфигурации.

Читается XML симметрично — объектом ЧтениеXML и методом СериализаторXDTO.ПрочитатьXML().

При записи через XDTO принимающая база должна понимать типы отправителя. Если выгружаете справочник с ссылочными реквизитами, ссылки на другие объекты поедут как GUID — на приёмнике их ещё нужно сопоставить с существующими элементами.

Табличный документ и формат MXL

MXL — это формат самого табличного документа 1С. В нём сохраняется всё: объединённые ячейки, условное оформление, именованные области, расшифровки, по которым можно провалиться в исходный документ.

Открыть MXL можно только в 1С — через Файл → Открыть или программно методом Прочитать(). Для коллег, у которых нет 1С, MXL бесполезен — им нужен XLSX или PDF.

Сохранить таблицу вручную:

  1. Откройте отчёт или печатную форму на экране.
  2. Главное меню → Файл → Сохранить как.
  3. В поле «Тип файла» выберите нужный формат.
  4. Укажите имя и папку, нажмите «Сохранить».

В коде тот же результат даёт метод Записать(), где второй параметр — значение перечисления ТипФайлаТабличногоДокумента:

ТабДок = Отчёт.СформироватьДокумент();

// Родной формат 1С со всем оформлением
ТабДок.Записать("C:\Выгрузка\otchet.mxl", ТипФайлаТабличногоДокумента.MXL);

// Для передачи в Excel
ТабДок.Записать("C:\Выгрузка\otchet.xlsx", ТипФайлаТабличногоДокумента.XLSX);

// Для печати и пересылки
ТабДок.Записать("C:\Выгрузка\otchet.pdf", ТипФайлаТабличногоДокумента.PDF);

Если второй параметр не указать, 1С сохранит в MXL.

При выгрузке в XLSX формулы и расшифровки теряются — остаются только значения ячеек и базовое оформление. Если нужна «живая» таблица с расшифровками, оставляйте MXL и передавайте её тому, у кого есть 1С.

JSON, CSV и DBF: когда нужны они

Не всё решается через XML. Под разные задачи у платформы есть свои инструменты.

JSON — для обмена с веб-сервисами, мобильными приложениями, внешними API. Поддержка встроена начиная с платформы 8.3.6.

Запись = Новый ЗаписьJSON;
Запись.ОткрытьФайл("C:\Обмен\data.json");
ДанныеДляВыгрузки = Новый Структура("Код, Наименование", "000123", "Карандаш");
ЗаписатьJSON(Запись, ДанныеДляВыгрузки);
Запись.Закрыть();

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

Запись = Новый ЗаписьТекста("C:\Обмен\price.csv", КодировкаТекста.ANSI);
Запись.ЗаписатьСтроку("Код;Наименование;Цена");
Запись.ЗаписатьСтроку("000123;Карандаш;25,50");
Запись.Закрыть();

Для CSV, который будет открываться в Excel на русской Windows, разделителем берите точку с запятой ;, а не запятую. Excel в русской локали воспринимает запятую как десятичный разделитель и ломает разбивку на столбцы.

DBF — таблица dBase. Нужна при обмене с банк-клиентами, старыми учётными программами, госреестрами, которые принимают только .dbf. Работают с ней через объект XBase:

База = Новый XBase;
База.Поля.Добавить("CODE", "S", 9);
База.Поля.Добавить("NAME", "S", 50);
База.СоздатьФайл("C:\Обмен\spr.dbf");
База.Добавить();
База.CODE = "000123";
База.NAME = "Карандаш";
База.Записать();
База.ЗакрытьФайл();

При чтении DBF конец файла проверяют методом ВКонце(), перебирая записи от первой до последней.

Какой формат выбрать под задачу

Коротко — ориентир по типичным сценариям.

ФорматКто откроетКогда брать
MXLтолько 1Свнутри компании, нужны расшифровки и оформление
XLSXExcel, Google Таблицыотдать человеку для просмотра и правки
PDFлюбой просмотрщикпечать, пересылка без изменений
XML1С и внешние системыобмен данными, выгрузка в госсистемы
JSONвеб-сервисы, APIинтеграция с сайтом, мобильным приложением
CSVExcel, скриптыпростая выгрузка прайса, таблицы значений
DBFстарое ПО, банкиобмен с программами, которым нужен dBase

Если сомневаетесь между форматами обмена, двигайтесь от вопроса «кто приёмник».

Куда уходит файл — как выбрать формат?

Кодировка и параметры сохранения

Главный источник проблем при обмене — кодировка. Если отправитель пишет в UTF-8, а приёмник читает как windows-1251, кириллица превращается в нечитаемый набор символов.

Кодировку задают явно:

  • в ЗаписьXML.ОткрытьФайл() — третьим параметром, например "UTF-8" или "windows-1251";
  • в ЗаписьТекста — значением перечисления КодировкаТекста: UTF8, UTF16, ANSI (это и есть windows-1251 на русской системе), OEM.

Правила простые:

  1. 📥 Выгружаете для другой системы — узнайте её требуемую кодировку заранее и укажите ту же.
  2. 🌐 Для XML и JSON по умолчанию берите UTF-8 — это стандарт обмена.
  3. 🗃 Для CSV под Excel на русской Windows чаще нужен ANSI (windows-1251), иначе кириллица в таблице «поедет».
  4. ⚙️ Разделитель и десятичную точку согласуйте с приёмником: где-то ждут запятую, где-то точку.

Отдельная ловушка — метка порядка байтов (BOM) в начале UTF-8 файла. Некоторые парсеры спотыкаются на ней и не читают первую строку. Если приёмник ругается на «лишние символы» в начале XML или JSON, проверьте, не добавляется ли BOM.

Выгрузка прикладных данных из конфигурации

Когда речь не про один отчёт, а про перенос справочников и документов целиком, в типовых конфигурациях есть штатные инструменты — писать XML руками не нужно.

Стандартный обмен между базами 1С настраивается через синхронизацию данных: в разделе Администрирование → Синхронизация данных (название раздела может отличаться по конфигурации). Платформа сама сериализует объекты в формат EnterpriseData и переносит их.

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

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

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

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

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

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

Частые ошибки при выгрузке в файл

Большинство сбоев при выгрузке — не в самой 1С, а на стыке с приёмником.

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

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

В каком формате выгрузить отчёт, чтобы его открыли без 1С?
В XLSX (Excel) или PDF (для печати и просмотра). Формат MXL откроется только в 1С, его коллегам без программы не передавайте.
Чем XML отличается от JSON для обмена?
XML — основной формат внутри экосистемы 1С и для госсистем, на нём построены типовые обмены. JSON компактнее и удобнее для веб-сервисов и мобильных приложений. Для интеграции с сайтом по API чаще берут JSON.
Почему после выгрузки в CSV в Excel всё в одном столбце?
Excel на русской Windows ждёт разделителем точку с запятой. Запишите CSV с ; между полями либо задайте разделитель при импорте в самом Excel.
Можно ли выгрузить сразу несколько справочников в один файл?
Да, через штатную обработку выгрузки данных XML или через настроенную синхронизацию — они переносят набор объектов целиком. Ручная запись в один XML тоже возможна, но её придётся разбирать на приёмнике.
Какую кодировку ставить для обмена?
Для XML и JSON — UTF-8, это стандарт. Для CSV под Excel на русской системе чаще нужен ANSI (windows-1251). Главное — чтобы отправитель и приёмник использовали одну и ту же.