В основном все информационные материалы по программированию в 1С при описании создания печатных форм на основе "Табличный документ" ограничиваются простым выводом готовой формы документа на экран. Но этого не всегда достаточно, и на много важнее то, как этот документ будет выглядеть в распечатанной форме на листе бумаги.
Далее будем рассматривать свойства и методы табличного документа, которые непосредственно относятся к настройкам печати. Тут помимо хорошо составленного макета, немаловажную роль играют и сами настройки печати, которые мы меняем в диалоговых окнах. К ним относятся настройки принтера и свойства страницы. Почти все из них можно определить заранее при формировании табличного документа.
Ниже рассмотрим более подробно свойства и методы табличного документа, которые имеют отношение к настройкам печати (В приведенном примере "ТабличныйДок" это объект типа "Табличный документ")
Для того что бы задать принтер для печати, отличный от того, что по умолчанию установлен в системе, используется такое свойство как "ИмяПринтера", причем имя должно полностью совпадать с принтером который установлен в системе:
ТабличныйДок.ИмяПринтера="Kyocera FS-1320D KX";
Можно сэкономить немало времени при печати пакета документов, прописав признак разбора по копиям:
ТабличныйДок.РазборПоКопиям=истина;
Число копий указывается так:
ТабличныйДок.КоличествоЭкземпляров=X; // где X — это число копий
Также возможно задать поля:
ТабличныйДок.ПолеСлева=15; //Поле слева 15мм, остальные поля будут по 10мм (по умолчанию)
Вот еще несколько свойств страницы, которые нам доступны:
ТабличныйДок.ОриентацияСтраницы=ОриентацияСтраницы.Ландшафт; // ландшафтная ориентация страницы ТабличныйДок.ЭкземпляровНаСтранице=3; //на одном листе будет размещено 3 страницы ТабличныйДок.Автомасштаб=истина; //аналогично настройкам масштаба, печать будет распределена по ширине страницы
Если необходимо, то используя описание «МасштабПечати» можно указать конкретное значение для масштабирования, измеряемое в процентах.
ТабличныйДок.МасштабПечати=80; // задается масштаб 80% от натуральной величины
Задать стандартные форматы страницы "А3", "А4", "А5" можно при помощи свойства «РазмерСтраницы». Есть и другие доступные стандартные форматы, полный их список можно найти в справке 1С.
ТабличныйДок.РазмерСтраницы="A4";// буква А должна быть латинской
Помимо этого имеется возможность задать и нестандартные размеры бумаги (Custom). Для этого задаются значения высоты и ширины страницы в миллиметрах:
ТабличныйДок.РазмерСтраницы="Custom";//нестандартный размер бумаги ТабличныйДок.ВысотаСтраницы=250; ТабличныйДок.ШиринаСтраницы=250;
В дополнение к вышеуказанным свойствам, в табличном документе присутствует возможность управлять выводом на печать колонтитулов и указывать их содержимое. Для этого используются свойства «ВерхнийКолонтитул» и «НижнийКолонтитул»:
ТабличныйДок.ВерхнийКолонтитул.Выводить=истина; //печать верхнего колонтитула ТабличныйДок.РазмерКолонтитулаСверху=8; //размер колонтитула 8мм (по умолчанию 10мм) ТабличныйДок.ВерхнийКолонтитул.ВертикальноеПоложение=ВертикальноеПоложение.Верх; ТабличныйДок.ВерхнийКолонтитул.НачальнаяСтраница=2; //печать колонтитула начинается со второй страницы ШрифтКолонтитула=Новый Шрифт("Courier New", 7,,Истина); // Используемый шрифт и его размер ТабличныйДок.ВерхнийКолонтитул.Шрифт=ШрифтКолонтитула; //наклонный шрифт ТабличныйДок.ВерхнийКолонтитул.ТекстВЦентре="Верхний колонтитул"; ТабличныйДок.ВерхнийКолонтитул.ТекстСправа="Стр.[&НомерСтраницы] из [&СтраницВсего]"; //нумерация страниц ТабличныйДок.ВерхнийКолонтитул.ТекстСлева="[&Дата]";//текущая дата
Отправить на печать уже сформированный документ можно использовав метод «Напечатать()». При этом есть два варианта вызова этого метода.
1. Непосредственно на принтер
ТабличныйДок.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать); ТабличныйДок.Напечатать(истина);
2. С выводом диалога перед печатью
ТабличныйДок.Напечатать(РежимИспользованияДиалогаПечати.Использовать); ТабличныйДок.Напечатать(ложь);
Есть возможность управлять разбиением документа на страницы. Оценка количества страниц в документе относительно настроек текущего принтера выполняется так:
ТабличныйДок.КоличествоСтраниц();
Используя такие методы, как «ПроверитьВывод()» и «ПроверитьПрисоединение()» можно заранее определить, умещается ли документ или массив документов на странице по ширине и высоте относительно текущих настроек принтера.
Стоит обратить внимание, что последние три метода ориентируются на настройки текущего установленного принтера, и если методу не удается его найти, вызывается исключение.
Если вам необходимо принудительно вставить разрывы страниц, то вы можете использовать методы «ВывестиВертикальныйРазделительСтраниц()» и «ВывестиГоризонтальныйРазделительСтраниц()».
Это позволяет управлять постраничным выводом и контролировать заполнение страницы:
Если Не ТабличныйДок.ПроверитьВывод(МассивВыводимыхОбластей) Тогда ТабличныйДок.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли;
Разделение методов и свойств по контексту исполнения является важной особенностью платформы. Если вышеуказанные свойства доступны в любом контексте, то методы на тонком клиенте не доступны, за исключением метода «Напечатать()». То есть формирование табличного документа происходит на сервере, а отправляется он при помощи клиентской процедуры.