Форматы выгрузки данных в 1С: XML, JSON, CSV, MXL
Содержание
Тип файла в 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С со всем оформлением
ТабДок.Записать("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С | внутри компании, нужны расшифровки и оформление |
XLSX | Excel, Google Таблицы | отдать человеку для просмотра и правки |
PDF | любой просмотрщик | печать, пересылка без изменений |
XML | 1С и внешние системы | обмен данными, выгрузка в госсистемы |
JSON | веб-сервисы, API | интеграция с сайтом, мобильным приложением |
CSV | Excel, скрипты | простая выгрузка прайса, таблицы значений |
DBF | старое ПО, банки | обмен с программами, которым нужен dBase |
Если сомневаетесь между форматами обмена, двигайтесь от вопроса «кто приёмник».
Кодировка и параметры сохранения
Главный источник проблем при обмене — кодировка. Если отправитель пишет в UTF-8, а приёмник читает как windows-1251, кириллица превращается в нечитаемый набор символов.
Кодировку задают явно:
- в
ЗаписьXML.ОткрытьФайл()— третьим параметром, например"UTF-8"или"windows-1251"; - в
ЗаписьТекста— значением перечисленияКодировкаТекста:UTF8,UTF16,ANSI(это и есть windows-1251 на русской системе),OEM.
Правила простые:
- 📥 Выгружаете для другой системы — узнайте её требуемую кодировку заранее и укажите ту же.
- 🌐 Для
XMLиJSONпо умолчанию беритеUTF-8— это стандарт обмена. - 🗃 Для
CSVпод Excel на русской Windows чаще нуженANSI(windows-1251), иначе кириллица в таблице «поедет». - ⚙️ Разделитель и десятичную точку согласуйте с приёмником: где-то ждут запятую, где-то точку.
Отдельная ловушка — метка порядка байтов (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.Можно ли выгрузить сразу несколько справочников в один файл?
Какую кодировку ставить для обмена?
XML и JSON — UTF-8, это стандарт. Для CSV под Excel на русской системе чаще нужен ANSI (windows-1251). Главное — чтобы отправитель и приёмник использовали одну и ту же.