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

Разработка и Конфигурация · 10 мин

Как прочитать MXL файл в 1С: способы открытия и обработки

Как прочитать MXL файл в 1С: открытие в конфигураторе, чтение программно через ТабличныйДокумент.Прочитать, конвертация в Excel и решение типичных проблем.

MXL — это внутренний формат табличного документа платформы 1С:Предприятие. В нём хранятся макеты печатных форм, сохранённые отчёты, прайс-листы и любые данные, выведенные через объект «Табличный документ». Платформа использует MXL по умолчанию при сохранении макетов в конфигураторе и при выгрузке отчётов на диск.

Проблема в том, что MXL не открывается стандартными средствами Windows: двойной клик по файлу вызовет лишь диалог выбора программы. Excel его тоже не понимает напрямую. Поэтому чтение MXL всегда проходит через платформу 1С — либо интерактивно, либо программно, либо через конвертацию в другой формат.

Ниже разобраны все рабочие способы: от простого открытия в режиме «Предприятие» до программного чтения с обходом ячеек и пакетной конвертации в Excel. Выберите вариант под свою задачу — разовый просмотр, регулярная загрузка данных или автоматическая обработка.

Что такое MXL и когда он встречается

MXL — бинарный (в старых версиях — текстово-структурированный) формат, в котором платформа сериализует объект «ТабличныйДокумент». В файле хранятся не только значения ячеек, но и оформление: шрифты, границы, объединённые ячейки, параметры страницы, именованные области и расшифровки.

Типичные источники MXL-файлов: сохранённые пользователями отчёты (кнопка «Сохранить» в форме отчёта), выгруженные макеты печатных форм, файлы обмена между базами, архивы печатных форм первичных документов. Иногда MXL присылают контрагенты, работающие в 1С, — например, прайс или акт сверки, выгруженный «как есть».

Как открыть MXL интерактивно без программирования

Самый простой способ — открыть файл в режиме «1С:Предприятие». Запустите любую базу (подойдёт даже пустая или учебная), затем в главном меню выберите «Файл — Открыть» и укажите MXL-файл. Платформа отобразит табличный документ с полным сохранением форматирования.

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

Если файлов много и они приходят регулярно, имеет смысл назначить 1С программой по умолчанию для расширения .mxl через «Открыть с помощью» в проводнике Windows. Тогда файл будет открываться двойным кликом в толстом клиенте.

Порядок действий для разового просмотра
  1. 1
    Запустите любую информационную базу в режиме «1С:Предприятие»
  2. 2
    Откройте меню «Файл» и выберите пункт «Открыть» (Ctrl+O)
  3. 3
    Укажите MXL-файл на диске
  4. 4
    Проверьте, что данные и форматирование отобразились корректно
  5. 5
    При необходимости сохраните копию в XLSX или PDF через «Файл — Сохранить как»

Программное чтение MXL через ТабличныйДокумент.Прочитать

Для загрузки данных из MXL внутри прикладного кода используется метод Прочитать() объекта «ТабличныйДокумент». Минимальный пример:

ТабДок = Новый ТабличныйДокумент;

ТабДок.Прочитать("C:\Обмен\price.mxl");

// Значение конкретной ячейки

ЗначениеЯчейки = ТабДок.Область("R2C3").Текст;

// Обход всех строк с данными

Для НомерСтроки = 2 По ТабДок.ВысотаТаблицы Цикл

Наименование = ТабДок.Область("R" + НомерСтроки + "C1").Текст;

Цена = ТабДок.Область("R" + НомерСтроки + "C3").Текст;

// дальнейшая обработка: поиск в справочнике, запись в регистр и т.д.

КонецЦикла;

Обратите внимание на адресацию: область задаётся в формате «R{строка}C{колонка}», нумерация начинается с единицы. Метод ВысотаТаблицы возвращает число заполненных строк, ШиринаТаблицы — число колонок. Для числовых значений текст ячейки нужно приводить к типу Число с обработкой возможных ошибок преобразования.

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

bsl
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(ИмяФайла);
Для Стр = 2 По ТабДок.ВысотаТаблицы Цикл
    Текст = ТабДок.Область("R" + Стр + "C1").Текст;
КонецЦикла;

Чтение MXL без установленной платформы и конвертация

Если на компьютере нет 1С, а содержимое файла нужно посмотреть, вариантов немного. MXL — закрытый формат, поэтому универсальных просмотрщиков для него не существует. Практичные пути: попросить отправителя пересохранить файл в XLSX или PDF, либо установить учебную версию платформы и открыть файл в ней.

Конвертация в Excel выполняется из режима «Предприятие»: откройте MXL, затем «Файл — Сохранить как» и выберите тип «Лист Excel» или XLSX. Программно это делается методом ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX). Такой приём удобен для пакетной обработки: обходите каталог с MXL-файлами и сохраняете каждый в нужном формате.

Куда конвертировать MXL

XLSX

Подходит для дальнейшей обработки данных в Excel или загрузки в другие системы; сохраняет значения ячеек и часть оформления

PDF

Подходит для печати и отправки контрагентам; редактирование данных невозможно

HTML / ODS

Вариант для просмотра в браузере или LibreOffice; возможны искажения сложного форматирования

Типичные проблемы при чтении MXL

Наиболее частая ошибка — «Ошибка формата потока» при вызове Прочитать(). Она означает, что файл повреждён, имеет нулевой размер, либо это вовсе не MXL (например, переименованный XLSX). Проверьте размер файла и попробуйте открыть его интерактивно — платформа покажет ту же ошибку с более подробным описанием.

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

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

Типичные ошибки
01
Чтение файла по клиентскому пути в серверном коде — сервер не видит диск C: пользователя, метод Прочитать() падает с ошибкой доступа
02
Обход строк до произвольного фиксированного номера вместо ВысотаТаблицы — часть данных теряется или читаются пустые строки
03
Прямое преобразование текста ячейки в число без обработки исключений — любая ячейка с пробелом или единицей измерения обрывает загрузку
04
Попытка открыть MXL двойным кликом и выбор случайной программы — файл не читается ничем, кроме платформы 1С

Безопасность и ограничения

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

При программной загрузке данных из MXL в рабочую базу всегда делайте пробный прогон: сначала выведите распознанные строки в сообщение или таблицу значений и сверьте с оригиналом, и только потом записывайте в справочники или документы. Ошибка в смещении колонок приведёт к записи некорректных данных, откат которых потребует восстановления из резервной копии.

Проверка результата чтения

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

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

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

Число прочитанных строк
Норма

Совпадает с фактическим числом строк данных в файле

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

Строк больше или меньше — сбита адресация или есть скрытые/объединённые области

Числовые значения
Норма

Числа распознаются как числа, суммы сходятся с оригиналом

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

Числа пришли текстом с пробелами-разделителями или обрезаны

Кириллица в ячейках
Норма

Текст читается корректно

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

Кракозябры — несовпадение локали или повреждённый файл

FAQ

Чем открыть MXL файл без 1С?

Штатных сторонних просмотрщиков для MXL нет — формат закрытый. Практичный вариант: попросить отправителя пересохранить документ в XLSX или PDF, либо установить учебную версию платформы 1С и открыть файл через «Файл — Открыть» в любой базе.

Чем MXL отличается от XLSX?

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

Метод Прочитать() выдаёт «Ошибка формата потока» — в чём причина?

Файл повреждён, пустой или вовсе не является MXL (например, переименованный Excel). Проверьте размер файла, откройте его интерактивно в режиме «Предприятие» и убедитесь, что путь к файлу доступен тому контексту (клиенту или серверу), где выполняется код.

Как прочитать MXL на сервере 1С, если файл выбрал пользователь?

На клиенте поместите файл во временное хранилище (ПоместитьВоВременноеХранилище или асинхронный НачатьПомещениеФайлаВоВременноеХранилище), передайте адрес в серверную процедуру, там получите двоичные данные, запишите их во временный файл на сервере и вызовите ТабличныйДокумент.Прочитать() для этого файла.

Можно ли обойти ячейки MXL по именам областей, а не по координатам?

Да. Если в файле есть именованные области, их можно получить методом ТабДок.Область("ИмяОбласти"). Список имён доступен через коллекцию областей. Это надёжнее координатной адресации, когда структура файла может меняться, но области сохраняют имена.

Сохраняется ли форматирование при конвертации MXL в Excel?

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

Итог

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

MXL читается только платформой 1С: интерактивно через «Файл — Открыть» или программно методом ТабличныйДокумент.Прочитать(). Для обмена с внешними пользователями конвертируйте файл в XLSX или PDF. Перед массовой загрузкой данных из MXL в базу проверяйте результат на копии и делайте резервную копию.