Из MXL в Excel, из XML в JSON: как 1С сохраняет, конвертирует и обменивает данные в нужном формате
Содержание
Формат отчёта в 1С меняют в момент сохранения: откройте сформированный отчёт, нажмите кнопку «Сохранить» (значок дискеты) или Ctrl+S и в поле «Тип файла» выберите нужный — XLSX, XLS, PDF, DOCX, ODS, HTML, TXT или родной MXL. Данные между XML, JSON, DBF и Excel переводят обработкой на встроенном языке, а формат обмена между базами задаётся версией EnterpriseData или CommerceML в настройках синхронизации.
Типичная ситуация: главбух просит оборотно-сальдовую ведомость «в Excel, а не вашим 1С-файлом», банк ждёт выписку в XML, а сайт магазина — каталог в CommerceML. Задача одна — изменить формат данных, — но решается в трёх разных местах программы. Разбираем все три плюс облачную 1С:Fresh.
Какие форматы понимает 1С 8.3 и для чего каждый
Платформа 8.3 работает с форматами на трёх уровнях: сохранение табличных документов (отчёты, печатные формы), чтение и запись файлов из кода и обмен между программами.
| Формат | Где встречается | Когда выбирать |
|---|---|---|
| MXL | Табличный документ 1С | Хранить отчёт так, чтобы открыть его в 1С без потерь, с расшифровками |
| XLSX | Сохранение отчётов, загрузка из файла | Передать таблицу бухгалтеру или аудитору для работы в Excel |
| XLS | Сохранение отчётов | Только для очень старых программ: лимит 65 536 строк |
| ODS | Сохранение отчётов | Для LibreOffice и «Р7-Офис» |
| Печатные формы, отчёты | Отправить документ контрагенту, чтобы его не правили | |
| DOCX | Печатные формы | Договор или письмо, которые нужно доредактировать |
| HTML | Отчёты | Опубликовать таблицу на внутреннем портале |
| TXT | Отчёты, выгрузки | Простой список для другой программы |
| XML | Обмены, регламентированная отчётность, банк | Структурированный обмен по схеме |
| JSON | HTTP-сервисы, REST-интеграции | Обмен с веб-сервисами, маркетплейсами, сайтами |
| DBF | Старые системы, банковские и складские программы | Интеграция с наследием на FoxPro и Clipper |
Если файл нужен только для чтения человеком — берите PDF. Если с ним будут считать — XLSX. MXL оставляйте для коллег, у которых тоже есть 1С.
Как изменить формат отчёта при сохранении: XLSX, PDF, HTML
Обычный отчёт: ОСВ, анализ счёта, продажи
- Сформируйте отчёт кнопкой «Сформировать».
- Нажмите «Сохранить» на командной панели отчёта или
Ctrl+S. - В окне сохранения раскройте список «Тип файла».
- Выберите формат: «Лист Excel 2007-…» (XLSX), «Adobe PDF», «HTML документ» и т. д.
- Укажите папку и имя файла, нажмите «Сохранить».
В интерфейсе «Такси» то же самое доступно через главное меню (кнопка с тремя полосками в заголовке окна): Файл → Сохранить как.
Печатная форма документа: счёт, акт, ТОРГ-12
Печатные формы открываются в отдельном окне просмотра. На его панели есть кнопка «Сохранить» — она предлагает отметить один или несколько форматов галочками и сразу записывает файлы в выбранную папку. Рядом — кнопка отправки по почте: там формат вложения выбирается так же.
Удобный приём: отметьте сразу PDF и DOCX. PDF уйдёт клиенту, DOCX останется вам для правок.
Отчёт выглядит не так после сохранения
Формат меняет файл, но не макет. Если в PDF таблица обрезана справа, сначала настройте печать:
- 📄 главное меню →
Файл → Параметры страницы; - 🔄 ориентация «Альбомная»;
- 📏 масштаб «По ширине страницы».
После этого сохраните отчёт в PDF заново — ширина подстроится под лист.
При сохранении в XLSX, PDF или HTML пропадают расшифровки: кликнуть по сумме и провалиться в документы уже не получится. Нужна интерактивность — сохраняйте в MXL.
Конвертация данных между форматами: XML ↔ JSON, DBF ↔ Excel
Готовой кнопки «перевести XML в JSON» в типовых конфигурациях нет. Такие задачи решают внешней обработкой: прочитать файл одним объектом встроенного языка, записать другим. Объекты для этого есть в платформе:
| Формат | Чтение | Запись |
|---|---|---|
| XML | ЧтениеXML | ЗаписьXML |
| JSON | ЧтениеJSON + ПрочитатьJSON() | ЗаписьJSON + ЗаписатьJSON() |
| DBF | XBase | XBase |
| XLSX, XLS, ODS | ТабличныйДокумент.Прочитать() | ТабличныйДокумент.Записать() |
| Текст, CSV | ЧтениеТекста | ЗаписьТекста |
Работа с JSON появилась в платформе 8.3.6, так что на актуальных релизах она доступна везде.
Пример: JSON-файл → таблица Excel
Допустим, сервис отдаёт массив товаров вида [{"code":"001","name":"Бумага","price":350}, …]. Обработка ниже читает его и сохраняет в XLSX.
&НаСервере
Процедура JSONвExcel(ПутьJSON, ПутьXLSX)
Чтение = Новый ЧтениеJSON;
Чтение.ОткрытьФайл(ПутьJSON, "UTF-8");
Товары = ПрочитатьJSON(Чтение, Истина); // массив соответствий
Чтение.Закрыть();
ТД = Новый ТабличныйДокумент;
ТД.Область(1, 1, 1, 1).Текст = "Код";
ТД.Область(1, 2, 1, 2).Текст = "Наименование";
ТД.Область(1, 3, 1, 3).Текст = "Цена";
НомерСтроки = 1;
Для Каждого Товар Из Товары Цикл
НомерСтроки = НомерСтроки + 1;
ТД.Область(НомерСтроки, 1, НомерСтроки, 1).Текст = Товар.Получить("code");
ТД.Область(НомерСтроки, 2, НомерСтроки, 2).Текст = Товар.Получить("name");
ТД.Область(НомерСтроки, 3, НомерСтроки, 3).Текст = Формат(Товар.Получить("price"), "ЧГ=0");
КонецЦикла;
ТД.Записать(ПутьXLSX, ТипФайлаТабличногоДокумента.XLSX);
КонецПроцедуры
Второй параметр ПрочитатьJSON(Чтение, Истина) превращает объекты в Соответствие — так безопаснее, если в ключах встречаются символы, недопустимые в именах свойств структуры.
Обратный путь, Excel → JSON: ТД.Прочитать(ПутьXLSX), затем цикл по строкам с ТД.Область(Строка, Колонка, Строка, Колонка).Текст, сборка массива структур и ЗаписатьJSON(Запись, Массив).
Пример: DBF → XLSX
DBF из старых программ почти всегда в кодировке DOS. Если её не указать, вместо кириллицы получатся «кракозябры».
&НаСервере
Процедура DBFвExcel(ПутьDBF, ПутьXLSX)
Файл = Новый XBase;
Файл.Кодировка = КодировкаXBase.OEM; // для DBF из Windows-программ — ANSI
Файл.ОткрытьФайл(ПутьDBF, , Истина); // только чтение
ТД = Новый ТабличныйДокумент;
НомерСтроки = 0;
Файл.Первая();
Пока Не Файл.ВКонце() Цикл
НомерСтроки = НомерСтроки + 1;
ТД.Область(НомерСтроки, 1, НомерСтроки, 1).Текст = Файл.CODE;
ТД.Область(НомерСтроки, 2, НомерСтроки, 2).Текст = Файл.NAME;
Файл.Следующая();
КонецЦикла;
Файл.ЗакрытьФайл();
ТД.Записать(ПутьXLSX, ТипФайлаТабличногоДокумента.XLSX);
КонецПроцедуры
CODE и NAME замените на реальные имена полей вашего DBF. Их видно в любой программе просмотра DBF или в коллекции Файл.Поля.
XML ↔ JSON
Для плоского XML (одинаковые записи с полями) схема та же: ЧтениеXML в цикле Пока Чтение.Прочитать() собирает массив структур, а ЗаписатьJSON() сохраняет его. Для XML со сложной вложенной схемой надёжнее загрузить XSD-схему в пакет XDTO и работать с объектами XDTO — так структура не развалится.
Ссылки на справочники и документы ЗаписатьJSON() напрямую не записывает. Перед выгрузкой превратите их в строку (наименование, код) или в уникальный идентификатор.
Смена формата обмена данными: EnterpriseData и CommerceML
EnterpriseData — обмен между конфигурациями 1С
Синхронизация БП 3.0 с УТ 11, КА 2 или ERP идёт через универсальный формат EnterpriseData. Это XML по общей схеме, у которой есть версии.
Выбирать версию руками не нужно. При синхронизации обе базы сообщают, какие версии формата поддерживают, и обмен идёт по самой новой общей. Отсюда правило:
- 🔄 нужна новая версия формата — обновите обе конфигурации до актуальных релизов;
- ⚠️ одна база сильно отстала — обмен либо откатится на старую версию, где нет новых объектов, либо выдаст ошибку о несовместимости;
- 📋 настройки синхронизации живут в разделе
Администрирование → Синхронизация данных.
После обновления одной из баз запустите синхронизацию вручную и проверьте протокол. Обычно версия переключается сама.
CommerceML — обмен с сайтом
Для интернет-магазина 1С выгружает каталог, цены и остатки в CommerceML — это тоже XML, но по схеме для электронной торговли. Версий схемы несколько, и сайт с 1С должны поддерживать одну.
В УТ 11 и КА 2 обмен с сайтом настраивается в том же разделе синхронизации данных. В карточке узла обмена выбирается версия схемы: ставьте ту, которую поддерживает модуль обмена на стороне сайта. Если сайт ждёт одну версию, а 1С шлёт другую, товары часто загружаются без характеристик или цен.
Автоматизация: как менять формат без ручной работы
Рассылки отчётов
В конфигурациях на БСП (БП 3.0, ЗУП 3.1, УТ 11) есть механизм «Рассылки отчетов». В рассылке задают отчёт, вариант настроек, формат файла (XLSX, PDF, MXL и другие), получателей и расписание.
Пример: каждый понедельник в 8:00 ОСВ за прошлую неделю уходит директору в PDF и бухгалтеру в XLSX. Доставка — на почту, в сетевую папку или на FTP.
Регламентное задание
Если формат нестандартный — например, JSON для маркетплейса, — код конвертации из примеров выше выносят в регламентное задание. Оно работает на сервере 1С по расписанию и кладёт файл в общую папку.
Для файловой базы регламентные задания выполняются только при запущенном клиенте, поэтому на сервере это надёжнее.
Запуск из командной строки
Обработку конвертации можно запустить планировщиком Windows без участия человека:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F "D:\Bases\Buh" /N "Робот" /P "пароль" /Execute "D:\Obr\Konvert.epf" /DisableStartupMessages
/F— путь к файловой базе (для серверной —/S "сервер\база");/Nи/P— пользователь и пароль;/Execute— какую внешнюю обработку открыть при старте.
В модуле обработки делают процедуру, которая запускается при открытии формы, выполняет конвертацию и закрывает программу командой ЗавершитьРаботуСистемы(Ложь).
Пароль в bat-файле лежит открытым текстом. Заведите для робота отдельного пользователя с минимальными правами — только на чтение нужных данных.
Форматы в облачной 1С:Fresh и веб-клиенте
В 1С:Fresh и при работе через браузер программа работает на сервере, а у вас только окно. Отсюда отличия:
- 📥 Сохранение отчёта. Формат выбирается так же, но файл не пишется в папку напрямую — браузер скачивает его в «Загрузки».
- 🧩 Расширение для работы с файлами. При первом сохранении браузер может предложить установить расширение . С ним можно выбирать папку, без него файлы идут через загрузки.
- 🚫 Нет COM. Объект
Excel.Applicationи другие COM-объекты в облаке не работают. Excel читайте только черезТабличныйДокумент.Прочитать(). - 🔒 Внешние обработки. Свою обработку конвертации в сервис просто так не открыть: её подключают через «Дополнительные отчеты и обработки», и она проходит проверку поставщиком сервиса.
- 🔄 Обмены. Синхронизация между приложениями Fresh идёт тем же EnterpriseData; версии форматов поднимает сам сервис при обновлении приложений.
Пути к файлам на сервере в облаке недоступны. Файл сначала загружают на сервер (НачатьПомещениеФайла), а результат отдают пользователю через ПолучитьФайл.
Ошибки при смене формата и как их обойти
Ещё одна частая ловушка — объединённые ячейки. Отчёт с шапкой из объединённых ячеек в XLSX выглядит красиво, но фильтр и сводная таблица в Excel по нему работают плохо. Для анализа включите в настройках отчёта упрощённый вид или выведите отчёт без группировок и итогов.
Частые вопросы
Можно ли задать формат сохранения отчётов по умолчанию?
Как открыть в 1С файл Excel или PDF?
Файл → Открыть — файл станет табличным документом 1С. PDF платформа как таблицу не читает: данные из него нужно сначала перевести в Excel сторонней программой.