Почему при сохранении печатной формы в Excel не сохраняется масштаб и как это исправить?

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

Часто разработчики сталкиваются с ситуацией, когда печатная форма, идеально настроенная в 1С с использованием свойства АвтоМасштаб, при сохранении в файл формата .xls или .xlsx теряет свои настройки страницы. В результате пользователь видит в Excel «разъехавшуюся» таблицу, которая не умещается на один лист при печати. Давайте разберем, почему это происходит и как мы можем решить эту задачу.

Причина возникновения проблемы

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

Вариант 1: Оптимизация макета под страницу

Самый надежный и «чистый» способ — это подогнать макет под стандартные размеры листа А4. Если мы изначально проектируем печатную форму так, что ее общая ширина (сумма ширин колонок) укладывается в доступную область печати, нам не потребуется программное вмешательство.

Рекомендации по верстке:

  1. Тщательно анализируйте ширину колонок в макете. Измеряйте их в пунктах, чтобы они соответствовали стандартному листу А4 с учетом полей.
  2. Старайтесь избегать лишних пустых столбцов.
  3. Если таблица получается очень широкой, рассмотрите возможность уменьшения размера шрифта или ориентации страницы на Ландшафт.

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

Вариант 2: Программная настройка через COM-объект

Если изменить макет невозможно или таблица динамически меняет количество столбцов, мы можем использовать мощный инструмент — COMОбъект("Excel.Application"). С его помощью мы можем «докрутить» настройки уже сохраненного файла Excel программным путем.

Пошаговый алгоритм действий:

  1. Сначала сохраняем табличный документ в Excel-файл стандартным методом: ТабДокумент.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.XLSX).
  2. Затем создаем COM-объект для работы с приложением Excel.
  3. Открываем созданный файл, получаем объект ActiveSheet и обращаемся к его свойству PageSetup.
  4. Устанавливаем параметры масштабирования для принудительного размещения на одной странице.

Рассмотрим пример кода, который поможет нам реализовать эту логику:


// Предположим, что файл уже сохранен на диске
Попытка
    Excel = Новый COMОбъект("Excel.Application");
    Книга = Excel.Workbooks.Open(ПутьКФайлу);
    Лист = Книга.Worksheets(1);
    
    // Настройка параметров страницы
    Лист.PageSetup.Zoom = Ложь; // Отключаем фиксированный масштаб
    Лист.PageSetup.FitToPagesWide = 1; // Уместить по ширине в 1 страницу
    Лист.PageSetup.FitToPagesTall = 0; // Не ограничивать высоту (авто)
    
    Книга.Save();
    Книга.Close();
    Excel.Quit();
Исключение
    // Обработка ошибок, если Excel не установлен или файл занят
    Сообщить("Ошибка при настройке Excel: " + ОписаниеОшибки());
КонецПопытки;

Важные замечания

При использовании COMОбъект следует учитывать несколько критических факторов:

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

← На главную