Многие пользователи и разработчики сталкиваются с досадной ситуацией: отчет в 1С выглядит идеально, но после сохранения в формат Excel (XLS или XLSX) структура таблицы «разваливается». Вместо одной аккуратной колонки мы получаем две или более объединенных ячеек. Это не только портит визуальный вид, но и делает невозможным дальнейшую обработку данных (сортировку, фильтрацию или использование формул).
В этой статье мы подробно разберем, почему один и тот же отчет на разных компьютерах может сохраняться по-разному, и проанализируем технические методы решения этой проблемы.
Проанализируем ситуацию: на одном компьютере отчет сохраняется «один в один», а на другом — с объединением ячеек. Одной из самых скрытых причин является настройка масштабирования экрана. Если в Windows установлено значение, отличное от 100% (например, 125% или 150%), алгоритм формирования печатной формы 1С начинает пересчитывать ширину колонок в пикселях с учетом коэффициента масштабирования.
Посмотрим, как это работает: движок 1С пытается максимально точно передать визуальное расположение элементов. При несовпадении внутренних единиц измерения 1С и сетки Excel возникают погрешности округления. Чтобы «попасть» в нужную ширину, 1С вынуждена создавать дополнительные микро-колонки в Excel и объединять их.
Решение: Установите масштаб экрана 100% в настройках Windows на компьютере, где происходит сохранение, и проверьте результат. Если это невозможно, придется корректировать макет отчета.
Выясним неочевидную связь: механизм отображения табличных документов в 1С (объект ТабличныйДокумент) тесно завязан на драйвер принтера, установленного в системе «по умолчанию». 1С берет параметры шрифтов, межстрочных интервалов и метрики именно из текущего драйвера принтера.
Разберем по шагам, почему это важно:
Рекомендация: Попробуйте установить на всех проблемных рабочих местах одинаковый виртуальный принтер (например, «Microsoft Print to PDF») в качестве принтера по умолчанию.
Рассмотрим структуру самого макета 1С. Часто при разработке отчетов для создания отступов или выравнивания заголовков программисты используют очень узкие колонки (шириной 1 или 2 единицы). Excel не всегда может корректно интерпретировать колонку шириной менее определенного порога. Чтобы сохранить общую геометрию таблицы, движок экспорта создает в Excel вспомогательную сетку, из-за чего основные ячейки становятся объединенными.
Проанализируем макет в конфигураторе:
Отступ или ГоризонтальноеПоложение.Если в свойствах табличного документа или в настройках печати включена опция Автомасштаб (или «По ширине страницы»), 1С пытается динамически подогнать таблицу под границы печатного листа. При сохранении в файл это часто приводит к тому, что сетка Excel «рвется», и создаются объединенные ячейки для компенсации масштабирования.
Посмотрим на пример кода, который программно отключает эти настройки перед сохранением:
// ТабДок - это наш ТабличныйДокумент
ТабДок.АвтоМасштаб = Ложь;
ТабДок.РазмерСтраницы = "Custom"; // Отключаем привязку к формату бумаги
ТабДок.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.XLSX);
Установка АвтоМасштаб = Ложь гарантирует, что 1С передаст в Excel реальные размеры ячеек без попыток втиснуть их в виртуальный лист бумаги.
Разберем различия форматов. Старый формат XLS (Excel 97-2003) имеет жесткие ограничения и использует устаревшие алгоритмы позиционирования. Современный формат XLSX (OpenXML) поддерживается платформой 1С гораздо лучше. В современных релизах платформы (начиная с 8.3.10+) алгоритмы сохранения в XLSX были значительно переработаны для минимизации объединения ячеек.
Важно: Всегда предлагайте пользователям сохранять отчеты именно в формате XLSX. Это само по себе решает проблему в 50% случаев.
Проанализируем ситуацию с длинными текстами. Если в ячейке установлен «Перенос текста» и выравнивание «По правому краю», а ширина колонки подогнана впритык к тексту, Excel может интерпретировать это как необходимость расширения области за счет соседней ячейки. Это провоцирует создание объединенной области.
Совет: Делайте колонки в макете 1С чуть шире (на 1-2 единицы), чем того требует самый длинный текст. Это создаст необходимый «запас» для движка экспорта.
Мы выяснили, что проблема сдвоенных ячеек редко связана с версией самого Excel. Чаще всего это результат сложного взаимодействия настроек Windows, драйверов печати и особенностей верстки макета в 1С.
Для исправления ситуации выполните следующие действия:
Соблюдение этих правил позволит вам получать чистые, пригодные для анализа файлы Excel без лишних объединений.