Почему при сохранении отчета из 1С в Excel ячейки становятся сдвоенными и как это исправить?

Программист 1С v8.3 (Управляемые формы)
← На главную

Многие пользователи и разработчики сталкиваются с досадной ситуацией: отчет в 1С выглядит идеально, но после сохранения в формат Excel (XLS или XLSX) структура таблицы «разваливается». Вместо одной аккуратной колонки мы получаем две или более объединенных ячеек. Это не только портит визуальный вид, но и делает невозможным дальнейшую обработку данных (сортировку, фильтрацию или использование формул).

В этой статье мы подробно разберем, почему один и тот же отчет на разных компьютерах может сохраняться по-разному, и проанализируем технические методы решения этой проблемы.

Причина 1: Системное масштабирование Windows (DPI)

Проанализируем ситуацию: на одном компьютере отчет сохраняется «один в один», а на другом — с объединением ячеек. Одной из самых скрытых причин является настройка масштабирования экрана. Если в Windows установлено значение, отличное от 100% (например, 125% или 150%), алгоритм формирования печатной формы 1С начинает пересчитывать ширину колонок в пикселях с учетом коэффициента масштабирования.

Посмотрим, как это работает: движок 1С пытается максимально точно передать визуальное расположение элементов. При несовпадении внутренних единиц измерения 1С и сетки Excel возникают погрешности округления. Чтобы «попасть» в нужную ширину, 1С вынуждена создавать дополнительные микро-колонки в Excel и объединять их.

Решение: Установите масштаб экрана 100% в настройках Windows на компьютере, где происходит сохранение, и проверьте результат. Если это невозможно, придется корректировать макет отчета.

Причина 2: Влияние драйвера принтера по умолчанию

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

Разберем по шагам, почему это важно:

  1. 1С опрашивает драйвер принтера для расчета ширины символов выбранного шрифта.
  2. Если на разных ПК установлены разные принтеры (например, физический HP на одном и виртуальный PDF-принтер на другом), расчет ширины колонок будет отличаться на несколько пикселей.
  3. При экспорте в Excel эти «лишние» пиксели превращаются в дробление колонок.

Рекомендация: Попробуйте установить на всех проблемных рабочих местах одинаковый виртуальный принтер (например, «Microsoft Print to PDF») в качестве принтера по умолчанию.

Причина 3: Невидимые или слишком узкие колонки в макете

Рассмотрим структуру самого макета 1С. Часто при разработке отчетов для создания отступов или выравнивания заголовков программисты используют очень узкие колонки (шириной 1 или 2 единицы). Excel не всегда может корректно интерпретировать колонку шириной менее определенного порога. Чтобы сохранить общую геометрию таблицы, движок экспорта создает в Excel вспомогательную сетку, из-за чего основные ячейки становятся объединенными.

Проанализируем макет в конфигураторе:

Причина 4: Свойство «Автомасштаб» и параметры страницы

Если в свойствах табличного документа или в настройках печати включена опция Автомасштаб (или «По ширине страницы»), 1С пытается динамически подогнать таблицу под границы печатного листа. При сохранении в файл это часто приводит к тому, что сетка Excel «рвется», и создаются объединенные ячейки для компенсации масштабирования.

Посмотрим на пример кода, который программно отключает эти настройки перед сохранением:


// ТабДок - это наш ТабличныйДокумент
ТабДок.АвтоМасштаб = Ложь;
ТабДок.РазмерСтраницы = "Custom"; // Отключаем привязку к формату бумаги
ТабДок.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.XLSX);

Установка АвтоМасштаб = Ложь гарантирует, что 1С передаст в Excel реальные размеры ячеек без попыток втиснуть их в виртуальный лист бумаги.

Причина 5: Переход на формат XLSX

Разберем различия форматов. Старый формат XLS (Excel 97-2003) имеет жесткие ограничения и использует устаревшие алгоритмы позиционирования. Современный формат XLSX (OpenXML) поддерживается платформой 1С гораздо лучше. В современных релизах платформы (начиная с 8.3.10+) алгоритмы сохранения в XLSX были значительно переработаны для минимизации объединения ячеек.

Важно: Всегда предлагайте пользователям сохранять отчеты именно в формате XLSX. Это само по себе решает проблему в 50% случаев.

Причина 6: Выравнивание текста и перенос

Проанализируем ситуацию с длинными текстами. Если в ячейке установлен «Перенос текста» и выравнивание «По правому краю», а ширина колонки подогнана впритык к тексту, Excel может интерпретировать это как необходимость расширения области за счет соседней ячейки. Это провоцирует создание объединенной области.

Совет: Делайте колонки в макете 1С чуть шире (на 1-2 единицы), чем того требует самый длинный текст. Это создаст необходимый «запас» для движка экспорта.

Итог совместной работы

Мы выяснили, что проблема сдвоенных ячеек редко связана с версией самого Excel. Чаще всего это результат сложного взаимодействия настроек Windows, драйверов печати и особенностей верстки макета в 1С.

Для исправления ситуации выполните следующие действия:

  1. Проверьте, что масштаб экрана в Windows равен 100%.
  2. Используйте формат XLSX вместо XLS.
  3. Отключите Автомасштаб в параметрах страницы табличного документа.
  4. В конфигураторе проверьте макет на наличие микро-колонок и добейтесь того, чтобы границы всех секций (шапка, строки, подвал) были выровнены по одной сетке колонок.

Соблюдение этих правил позволит вам получать чистые, пригодные для анализа файлы Excel без лишних объединений.

← На главную