Проблема, с которой сталкиваются многие пользователи и разработчики на платформе 1С:Предприятие 7.7, заключается в несовершенстве встроенных механизмов экспорта табличных документов. При сохранении отчета или первичного документа в формате XLS средствами платформы, итоговый файл часто открывается в современном Microsoft Excel с нарушением границ ячеек, потерей шрифтов и «разъезжающимся» форматированием. Разберем подробно, почему это происходит и какие существуют способы решения этой задачи, от простых пользовательских хитростей до серьезных программных доработок.
Прежде чем переходить к решениям, проанализируем ситуацию с технической стороны. Платформа 1С 7.7 была разработана в то время, когда актуальным стандартом был Microsoft Excel 95. Именно этот формат (известный как BIFF5) используется в методе Записать() для табличных документов. Современные версии Excel (2007, 2013, 2016, 2019, 2021 и Office 365) воспринимают этот формат как глубоко устаревший. При попытке пересохранить такой файл, Excel применяет свои алгоритмы конвертации, которые не всегда корректно обрабатывают объединенные ячейки и специфические настройки листов 1С. В результате документ становится нечитаемым.
Рассмотрим самый надежный и популярный в профессиональной среде способ — внедрение бесплатного движка Йоксель. Это мощное расширение, которое полностью заменяет стандартный табличный редактор 1С и позволяет работать с форматами Excel на гораздо более качественном уровне.
Проанализируем преимущества этого подхода:
Для реализации этого метода программисту необходимо подключить внешнюю компоненту и использовать её объекты. Пример логики сохранения через Йоксель может выглядеть так:
// Загрузка компоненты
ЗагрузитьВнешнююКомпоненту("yoksel.dll");
// Создание объекта Конвертер
Конвертер = СоздатьОбъект("ТабличныйДокумент");
// Загрузка стандартной таблицы 1С в объект Йокселя
Конвертер.ЗагрузитьИзТаблицы(Таб);
// Сохранение в формате Excel 97
Конвертер.Записать("C:\MyFiles\Report.xls", 1);
Если на рабочем месте установлен Microsoft Excel, мы можем использовать метод прямой передачи данных. Вместо того чтобы полагаться на механизмы 1С, мы заставим саму программу Excel создать документ и заполнить его данными. Это гарантирует 100% сохранение визуального стиля.
Разберем по шагам, как работает этот алгоритм:
Excel.Application.xlsx).Посмотрим на пример кода, реализующий перенос данных:
Эксель = СоздатьОбъект("Excel.Application");
Книга = Эксель.Workbooks.Add();
Лист = Книга.Worksheets(1);
Для Стр = 1 По Таб.ВысотаТаблицы() Цикл
Для Кол = 1 По Таб.ШиринаТаблицы() Цикл
ТекЗначение = Таб.Область(Стр, Кол).Текст;
Лист.Cells(Стр, Кол).Value = ТекЗначение;
// Здесь также можно передать цвет, жирность и границы
КонецЦикла;
КонецЦикла;
Книга.SaveAs("C:\Output\Document.xlsx", 51); // 51 - код формата XLSX
Эксель.Quit();
Важный момент: данный способ работает медленнее остальных, но обеспечивает наилучшее качество для сложных отчетов с большим количеством объединений.
Малоизвестный, но эффективный лайфхак заключается в использовании промежуточного формата. Выясним причину: Excel прекрасно умеет интерпретировать HTML-таблицы. Если сохранить документ 1С как .html, а затем открыть его в Excel, то структура документа часто сохраняется лучше, чем при прямом сохранении в .xls.
Пошаговая инструкция для пользователя:
Если редактирование документа в дальнейшем не требуется, а важно лишь сохранить внешний вид «один в один», лучше всего использовать печать на виртуальный PDF-принтер. Рассмотрим такие программы, как PDFCreator или Bullzip PDF Printer.
Они устанавливаются в систему как обычные принтеры. При нажатии кнопки «Печать» в 1С менеджер выбирает этот принтер, и программа формирует электронный документ. Это исключает любые проблемы с «поехавшей» версткой, так как PDF сохраняет документ в векторном виде.
Существует также внешняя компонента mxl2xls.dll. Она предназначена для быстрой конвертации файлов формата .mxl (родной формат 1С) в полноценные файлы Excel. Преимущество этого метода в том, что он работает автономно и очень быстро, не требуя установленного Excel на сервере или компьютере пользователя.
Проанализировав все варианты, подведем итог:
Использование современных методов расширения возможностей 1С 7.7 позволяет значительно продлить жизнь старым конфигурациям и сделать работу пользователей комфортной и эффективной.