Программы. Игры. Браузеры. Windows. Архиваторы

Опции печати и параметры страницы 1с 77. Использование настроек параметров печати

Если Вы сталкивались с данным свойством Табличного документа, то думаю заметили, что не совсем очевидно как оно устанавливается и где хранится. В этой статье я расскажу об этом.

ИмяПараметровПечати и КлючПараметровПечати - это по сути одно свойство, просто ИмяПараметровПечати использовалось в 8.1 и осталось для совместимости, а КлючПараметровПечати это название для платформы 8.2.

В этой статье я буду использовать свойство ИмяПараметровПечати как более привычное, но все что здесь написано справедливо и для КлючПараметровПечати.

Как происходит сохранение параметров печати?

Рассмотрим простой отрывок кода (листинг):

ТабДок = Новый ТабличныйДокумент;
ТабДок.ПолеСверху = 5;
ТабДок.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Реализация_Печать";

В нём мы создали табличный документ и установили свойство "ПолеСверху" равное 5. Далее мы указали для свойства "ИмяПараметровПечати" значение "ПАРАМЕТРЫ_ПЕЧАТИ_Реализация_Печать", эта текстовая строка является ключом в хранилище настроек(об этом позже). Выполняя этот код программа посмотрит существует ли для этого табличного документа и этого пользователя настройка печати, если нет то запишет, а если есть, то параметры будут взяты уже из сохраненной.

Как изменить параметры печати?

Параметры печати можно изменить только в пользовательском режиме открыв окно "Параметры страницы"

Здесь Вы видите параметры которые сохраняются для печати здесь же их можно изменить, после изменения нужно нажать "ОК".

Программно изменить уже существующую настройку нельзя, т.к. она хранится в виде объекта с которым 1С не умеет работать "НеизвестныйОбъект". Чтобы установить свои параметры нужно удалить существующую настройку и тогда при печати запишутся те параметры которые Вы указали выше установки свойства "ИмяПараметровПечати". В моем примере сохранится только отступ сверху 5 мм. При этом остальные параметры могут оказаться не пустыми, а заполненными по умолчанию.

Как удалить параметры печати?

Настройка сохраняется в системном Хранилище настроек и чтобы её удалить нужно, вызвать метод "Удалить" указав "Ключ объекта" и "Имя пользователя". Если пользователя не указать, то эта настройка удалиться для всех пользователей. При указании Ключа объекта есть особенность это не просто строка которую Вы указали при создании табличного документа, а дополненная в начале следующим:

"Общее/НастройкиПечатиТабличногоДокумента"

В моем случае чтобы удалить настройку нужно написать следующее:

КлючОбъекта = "Общее/НастройкиПечатиТабличногоДокумента/ПАРАМЕТРЫ_ПЕЧАТИ_Реализация_Печать";
ИмяПользователя = "Администратор";
ХранилищеСистемныхНастроек.удалить(КлючОбъекта,ИмяПользователя);

Обратите внимание ! ИмяПользователя это строка, а не объект Пользователь.

Большинство обучающих материалов по программированию в системе 1С при описании формированияпечатных форм на основе объекта «Табличный документ» ограничиваются выводом готовой формы на экран. Для пользователей же куда более важным является то, как документ будет выглядеть в распечатанном виде. Здесь, кроме хорошо сверстанного макета, играют роль и установки параметров печати.

Почти все параметры, доступные в диалогах настройки печати (настройки принтера, свойства страницы), можно указать непосредственно при формировании табличного документа.

Рассмотрим свойства и методы табличного документа, относящиеся к настройкам печати (в приведенных примерах «ТабДок» это объект типа «Табличный документ»).

Свойство «ИмяПринтера» позволяет задать для печати принтер, отличный от установленного по умолчанию. Имя должно совпадать с именем принтера, заданным в системе:

ТабДок . ИмяПринтера = "HP LaserJet 3050 Series PCL 6" ;

При печати пакета документовможно сэкономить время, установив признак разбора по копиям:

ТабДок . РазборПоКопиям =истина;

Число копий можно указать так:

ТабДок . КоличествоЭкземпляров = 5 ;

Разумеется, можно задать поля:

ТабДок . ПолеСлева = 20 ; //Поле слева 20мм, остальные поля 10мм (по умолчанию)

Еще несколько свойств страницы:

ТабДок . ОриентацияСтраницы = ОриентацияСтраницы . Ландшафт ;
ТабДок . ЭкземпляровНаСтранице = 2 ; //на листе будет размещено 2 страницы
ТабДок . Автомасштаб =истина; //аналогично настройкам масштаба «по ширине страницы»

При необходимости можно указать конкретное значение масштабирования в процентах (свойство «МасштабПечати» ).

Свойство «РазмерСтраницы» позволяет задать стандартные форматы страницы - “ A 3”, “A4”, “ A 5” (полный список вариантов доступен в справке 1С).

ТабДок . РазмерСтраницы = "A3" ; // буква А должна быть английской

Для нестандартного размера бумаги (Custom) можно указать значения высоты и ширины страницы (в мм):

ТабДок . РазмерСтраницы = "Custom" ; //нестандартный размер
ТабДок . ВысотаСтраницы = 350 ;
ТабДок . ШиринаСтраницы = 350 ;

Также в табличном документе доступно управление выводом колонтитулов и их содержимым. Для этого служат свойства «ВерхнийКолонтитул» и «НижнийКолонтитул». Например:

ТабДок . ВерхнийКолонтитул . Выводить =истина; //будет напечатан верхний колонтитул
ТабДок . РазмерКолонтитулаСверху = 7 ; //размер колонтитула 7мм (по умолчанию 10мм)
ТабДок . ВерхнийКолонтитул . ВертикальноеПоложение = ВертикальноеПоложение . Верх ;
ТабДок . ВерхнийКолонтитул . НачальнаяСтраница = 2 ; //колонтитул выводится со второй страницы
ШрифтКолонтитула =Новый Шрифт ("Courier New" , 8 ,Истина);
ТабДок . ВерхнийКолонтитул . Шрифт = ШрифтКолонтитула ; //наклонный шрифт
ТабДок . ВерхнийКолонтитул . ТекстВЦентре = "Верхний колонтитул" ;
ТабДок . ВерхнийКолонтитул . ТекстСправа = "Стр.[&НомерСтраницы] из [&СтраницВсего]" ; //нумерация страниц
ТабДок . ВерхнийКолонтитул . ТекстСлева = "[&Дата]" ; //текущая дата

Сформированный документ отправляется на печать с помощью метода «Напечатать()». Возможно два варианта вызова.

1) Непосредственно на принтер:

ТабДок . Напечатать (. НеИспользовать );
ТабДок . Напечатать (истина);

2) Перед печатью будет выведен диалог печати:

ТабДок . Напечатать (РежимИспользованияДиалогаПечати . Использовать );
ТабДок . Напечатать (ложь);

Кроме того можно управлять и разбиением документа на страницы. Оценитьколичество страниц в документе по настройкам текущего принтера можно так:

ТабДок . КоличествоСтраниц ();

С помощью методов «ПроверитьВывод()» и «ПроверитьПрисоединение()» можно определить, умещается ли табличный документ или массив областей табличного документа на странице в высоту и в ширину при текущих настройках принтера.

Надо иметь ввиду, что работа последних трех методов зависит от установленного принтера. Если методу не удается его найти, вызывается исключение.

Принудительно вставить разрывы страниц позволяют методы «ВывестиВертикальныйРазделительСтраниц()» и «ВывестиГоризонтальныйРазделительСтраниц()» .

Таким образом, можно управлять постраничным выводом на печать и контролировать заполнение страницы:

Если Не ТабДок . ПроверитьВывод (МассивВыводимыхОбластей ) Тогда
ТабДок . ВывестиГоризонтальныйРазделительСтраниц ();
КонецЕсли;

Важной характеристикой платформы «1С:Предприятие 8.2» является строгое разделение свойств и методов по контексту исполнения. Если все приведенные выше свойства доступны в любом контексте, то перечисленные методы недоступны на тонком клиенте. Исключением является метод «Напечатать()», доступность которого по понятным причинам ограничена клиентской частью. Это означает, что формирование табличного документа должно происходить на сервере, а отправлять его на печать следует в клиентской процедуре.

В основном все информационные материалы по программированию в 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. С выводом диалога перед печатью
ТабличныйДок.Напечатать(РежимИспользованияДиалогаПечати.Использовать);
ТабличныйДок.Напечатать(ложь);

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

ТабличныйДок.КоличествоСтраниц();

Используя такие методы, как «ПроверитьВывод() » и «ПроверитьПрисоединение() » можно заранее определить, умещается ли документ или массив документов на странице по ширине и высоте относительно текущих настроек принтера.

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

Если вам необходимо принудительно вставить разрывы страниц, то вы можете использовать методы «ВывестиВертикальныйРазделительСтраниц() » и «ВывестиГоризонтальныйРазделительСтраниц() ».

Это позволяет управлять постраничным выводом и контролировать заполнение страницы:

Если Не ТабличныйДок.ПроверитьВывод(МассивВыводимыхОбластей) Тогда
ТабличныйДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;

Разделение методов и свойств по контексту исполнения является важной особенностью платформы. Если вышеуказанные свойства доступны в любом контексте, то методы на тонком клиенте не доступны, за исключением метода «Напечатать() ». То есть формирование табличного документа происходит на сервере, а отправляется он при помощи клиентской процедуры.

Коллеги!

Продолжаем тему оформления отчетов в 1С. Недавно у нашего клиента возникла проблема по передаче документации из 1С 8.3.

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

Аналогичный пример в конфигурации 8.2 мы разобрали в передыдущем выпуске. Сейчас же мы рассмотрим настройки печати, что позволяют все это сделать в конфигурации 8.3.

Тем более, что многое из этого в 8.3 автоматизировано.

Итак, как можно включить указанную выше информацию в печать? Что нужно в этом случае сделать?

Предлагаем наш обзор вариантов, возможно, он будет также полезен и Вам.

Вариант 1. Прямо из самой печатной формы сформированного отчета или документа:

Формируете печатную форму счета на оплату и вызываете через гл. меню – Таблица – Настройка печати – Колонтитулы и настраиваете как нужно.
Так делается разово для любой СФОРМИРОВАННОЙ печатной формы.

Настраиваем поля колонтитулов

Обратите внимание на значки в левом верхнем углу формы:

Это по порядку: номер страницы, количество страниц, дата и время. Становитесь мышкой на нужном месте верхнего или нижнего колонтитула и щелкайте мышкой по нужному значку. После нажатия на кн. ОК при выводе на печать эти данные отобразятся в печатной форме там, где Вы указали.

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

Если Вы не хотите каждый раз настраивать вручную колонтитулы, то можно через раздел Администрирование – Настройка колонтитулов настроить общий вид колонтитулов для печати.

Выглядит это так:

Здесь больше возможностей для вывода информации в печатные формы: добавляется данные «Названия отчета» и «Пользователь». Это как раз наш случай.

Выбор данных в колонтитулы осуществляется, как было описано в варианте 1, только вместо значков мы выбираем текстовые кнопки «Время», «Дата», «Название отчета» и т.д.. Но суть от этого не меняется. После Указания нужной информации в нужных местах формы настройка сохраняется.

При выводе печатной формы на печать все указанные данные будут в ней отображаться.

Вариант 3. Редактирование макета в пользовательском режиме

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

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

Изменение макетов производится в разделе Администрирование – Печатные формы, отчеты, обработки – Макеты печатных форм.

Вот пример редактирования макета Счет-заказ (документ Счет на оплату покупателю):

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

Например, так:

Сохраняем изменения и формируем печатную форму.

И печатаем с изменениями.
Но возможности такого редактирования ограничены.)

Так что вариант 3 удобно использовать для внесения информации постоянной, неизменной, все остальное потребует доработки печатной формы уже программистом.

Но часто и этого бывает достаточно. 🙂

Лучшие статьи по теме