При выводе отчетов и печатных форм в 1С пользователи и разработчики нередко сталкиваются с ситуацией, когда табличный документ при печати неожиданно обрезается по горизонтали: пропадают колонки начиная со второй или третьей, либо таблица печатается не полностью, несмотря на установленный ландшафтный режим и опцию масштабирования по ширине страницы. Разберем по шагам, почему возникает эта проблема и как правильно настроить печать табличного документа.
Проанализируем типовой сценарий: пользователь открывает печатную форму или отчет, устанавливает курсор на определенную секцию (например, заголовок, шапку с отборами) или выделяет диапазон ячеек и отправляет документ на печать. Если в диалоге печати активна опция печати только выделенного диапазона, платформа 1С строго ограничивает область вывода границами выделения.
Ситуация усугубляется, если в макете для секции отборов или шапки задан индивидуальный формат строк (собственная сетка колонок). В 1С разные строки табличного документа могут иметь независимую разметку колонок. Если выделить строку с индивидуальной разметкой, где ширина первой или второй колонки занимает всю ширину листа, остальные колонки таблицы с данными просто не попадут в область печати.
Чтобы решить эту проблему со стороны пользователя:
Если таблица обрезается даже при печати всего документа, настроим параметры страницы программно в коде формирования отчета или печатной формы. Рассмотрим, какие свойства объекта ТабличныйДокумент отвечают за корректное размещение колонок на листе:
АвтоМасштаб — при значении Истина платформа автоматически пропорционально уменьшает масштаб документа так, чтобы он уложился в заданное количество страниц по ширине.ОриентацияСтраницы — переключает лист в альбомную или книжную ориентацию.КоличествоСтраницПоШирине — указывает, в сколько листов по горизонтали должен поместиться документ.Посмотрим на пример правильного заполнения параметров табличного документа перед выводом:
ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
ТабличныйДокумент.АвтоМасштаб = Истина;
ТабличныйДокумент.КоличествоСтраницПоШирине = 1;
ТабличныйДокумент.ЭкземпляровНаСтранице = 1;
ТабличныйДокумент.ПолеСлева = 5;
ТабличныйДокумент.ПолеСправа = 5;
ТабличныйДокумент.ПолеСверху = 5;
ТабличныйДокумент.ПолеСнизу = 5;
Уменьшение полей страницы позволяет освободить дополнительное пространство для широких таблиц и избежать лишнего уменьшения шрифта при автомасштабировании.
Выясним еще одну причину: в процессе формирования документа могло быть ошибочно установлено свойство ОбластьПечати. Если это свойство заполнено, 1С будет выводить на принтер только указанный диапазон ячеек, отсекая остальные данные.
Чтобы документ печатался целиком, очистим это свойство в коде:
ТабличныйДокумент.ОбластьПечати = Неопределено;
Разберем рекомендации по созданию макетов табличных документов, чтобы избежать сбоев при печати:
Объединить(), а не создание отдельного формата строк для каждой секции.Платформа 1С кэширует параметры печати (размер полей, ориентацию, масштаб) индивидуально для каждого отчета в профиле пользователя. Если однажды пользователь вручную изменил параметры страницы на некорректные, они будут применяться снова и снова.
Чтобы сбросить кэш параметров: