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