Почему при печати документа из 1С разное количество строк помещается на лист и как это исправить?

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

Часто при разработке печатных форм в 1С:Предприятии мы сталкиваемся с ситуацией, когда казалось бы идентичные макеты ведут себя по-разному: на один лист помещается 33 строки, а на другой, почти такой же — всего 11. Эта проблема типична и связана не столько с количеством столбцов, сколько с параметрами вывода самого ТабличныйДокумент и свойствами ячеек макета. Давайте разберем, как проанализировать эту ситуацию и навести порядок в печатных формах.

Анализ причин изменения количества строк на листе

Первое, что необходимо понять — высота строки в макете не всегда является константой. Если в свойствах ячеек установлено автоматическое определение высоты (свойство ВысотаСтроки равно «Авто»), система будет подстраивать высоту каждой строки под объем текста, который в нее выводится. Если включено свойство РазмещениеТекста в режиме «Переносить», то при наличии длинного текста в одной из ячеек строка «растягивается» по вертикали, занимая место нескольких обычных строк.

Разница в 33 и 11 строк обычно возникает из-за того, что в одном из вариантов макета ячейки имеют настройки переноса, вызывающие неожиданное увеличение высоты строк при заполнении данными. Также причиной может быть использование разных стилей шрифтов или наличие невидимых символов переноса строки в данных табличной части.

Как привести высоту строк к единому виду

Чтобы добиться предсказуемого поведения печатной формы, выполните следующие шаги:

  1. Проверьте ВысотуСтроки в макете. Если вы хотите, чтобы строки всегда были одинаковыми, установите для них фиксированное значение вместо «Авто».
  2. Изучите настройки РазмещениеТекста. Убедитесь, что для всех ячеек, где это возможно, установлены идентичные параметры. Если текст не должен переноситься, лучше отключить эту опцию, чтобы избежать «раздувания» строк.
  3. Проверьте свойства самого ТабличныйДокумент. Возможно, установлены разные значения МасштабПечати или используются разные настройки полей страницы.

Использование вертикальных секций — профессиональный подход

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

Алгоритм реализации вертикальных секций:

  1. Создайте в макете единую область.
  2. Разделите столбцы на логические вертикальные секции (например, «ШапкаОбщая», «ШапкаСкидка», «СтрокаОбщая», «СтрокаСкидка»).
  3. При выводе строк выполняйте цикл, в котором сначала выводится общая часть строки, а затем — условный вывод вертикальной секции со скидкой.

Такой подход исключает ошибки, возникающие при дублировании макетов, и упрощает дальнейшую поддержку кода:


// Пример программного вывода вертикальных секций
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
ОбластьСкидка = Макет.ПолучитьОбласть("Скидка");

Для Каждого СтрокаТЧ Из Документ.Товары Цикл
    ОбластьСтрока.Параметры.Заполнить(СтрокаТЧ);
    ТабДок.Вывести(ОбластьСтрока);
    
    Если Документ.ЕстьСкидка Тогда
        ОбластьСкидка.Параметры.Заполнить(СтрокаТЧ);
        ТабДок.Присоединить(ОбластьСкидка);
    КонецЕсли;
КонецЦикла;

Настройка масштабирования и границ

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


ТабДок = Новый ТабличныйДокумент;
ТабДок.АвтоМасштаб = Истина; // Позволяет 1С самой подобрать оптимальный масштаб
ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт; // Если столбцов слишком много

Заключение: пошаговый план решения

Для исправления вашей проблемы мы рекомендуем:

Работа с табличным документом требует внимания к деталям, но, следуя этим правилам, вы сделаете печатные формы стабильными и удобными для пользователя.

← На главную