Опубликован: 21.09.2010 | Уровень: для всех | Доступ: платный
Лекция 6:

Документы, макеты, журналы документов

< Лекция 5 || Лекция 6: 1234 || Лекция 7 >
Аннотация: Лекция посвящена работе с документами, разработке печатных форм документов, а так же - журналам документов.

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

6.1. Разработка печатной формы документа

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

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

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

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

Второй этап разработки печатной формы - это создание программного кода, который на основе данных документа и макета "собирает" печатную форму.

Разработку печатных форм можно ускорить, воспользовавшись так называемым конструктором печати. Для этого откроем в конфигураторе окно редактирования документа ПоступлениеМатериалов, в этом окне выберем вкладку Макеты, на ней нажмем кнопку Конструкторы, в выпавшем меню выберем пункт Конструктор печати ( рис. 6.1).

Вкладка Макеты окна редактирования свойств документа

Рис. 6.1. Вкладка Макеты окна редактирования свойств документа

Появившееся окно конструктора печати, проведет вас через несколько шагов, необходимых для создания печатной формы. А именно, на первом шаге нужно указать имя процедуры печати и ее расположение. По умолчанию процедура называется Печать, расположена она будет в модуле объекта. Укажем модуль формы документа для хранения процедуры ( рис. 6.2) и нажмем на кнопку Далее.

Начало работы с конструктором печати

Рис. 6.2. Начало работы с конструктором печати

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

Конструктор печати документа, задание параметров шапки печатной формы

Рис. 6.3. Конструктор печати документа, задание параметров шапки печатной формы

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

Нажав в очередной раз кнопку Далее, мы попадаем в окно конструктора печати, которое предназначено для настройки вывода в печатную форму табличной части документа. Логика работы с данным окном ничем не отличается от работы с вышеописанным. На рис. 6.4 вы можете видеть состояние третьего окна конструктора печати после того, как мы настроили его таким образом, чтобы на печать выводились все доступные реквизиты табличной части документа.

Конструктор печати документа, задание параметров табличной части печатной формы

Рис. 6.4. Конструктор печати документа, задание параметров табличной части печатной формы

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

Очередное нажатие кнопки Далее приводит нас к последнему окну конструктора. Здесь мы укажем, что хотим, чтобы в форму документа была добавлена кнопка Печать, рис. 6.5.

Конструктор печати документа, последнее окно, настройка кнопки вызова процедуры печати

Рис. 6.5. Конструктор печати документа, последнее окно, настройка кнопки вызова процедуры печати

Кнопка ОК завершает работу конструктора. Сразу после этого на экране будет отображено окно редактирования макета и окно редактора форм, рис. 6.6.

Редактор форм и редактор макетов

увеличить изображение
Рис. 6.6. Редактор форм и редактор макетов

Обратите внимание на то, что на нижней панели управления формы появилась новая кнопка - Печать. Обратите так же внимание на то, что табличный документ, который представляет собой макет, разбит на именованные области. Здесь мы можем видеть области Заголовок, Шапка, МатериалыШапка, Материалы и Подвал. В этих областях мы можем видеть ячейки, содержащие обычный текст, без каких-либо специальных символов. При выводе именованной области в печатный документ, эти тексты будут выведены в том виде, в котором они представлены в макете, с использованием того же форматирования. Если же в макет выводится ячейка, текст в которой обрамлен значками "<>", в этой ячейке будет выведен какой-либо реквизит документа. В частности, в угловых скобках в данном случае выводятся параметры для вывода их в ячейках.Имена параметров совпадают с соответствующими именами реквизитов документа.

То, что вы сейчас узнали, сделает достаточно простым знакомство с процедурой печати, которая была сформирована автоматически. Напомним, что при работе конструктора печати мы указали, что хранить эту процедуру следует в модуле формы. Найдем процедуру в модуле формы (вкладка Модуль ). Вот как выглядит текст модуля:

Процедура Печать(Элемент)
	//{{_КОНСТРУКТОР_ПЕЧАТИ_ЭЛЕМЕНТ(Печать)
	// Данный фрагмент построен конструктором.
	// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
	ТабДок = Новый ТабличныйДокумент;
	Макет = Документы.ПоступлениеМатериалов.ПолучитьМакет("Печать");
	// Заголовок
	Область = Макет.ПолучитьОбласть("Заголовок");
	ТабДок.Вывести(Область);
	// Шапка
	Шапка = Макет.ПолучитьОбласть("Шапка");
	Шапка.Параметры.Заполнить(ЭтотОбъект);
	ТабДок.Вывести(Шапка);
	// Материалы
	Область = Макет.ПолучитьОбласть("МатериалыШапка");
	ТабДок.Вывести(Область);
	ОбластьМатериалы = Макет.ПолучитьОбласть("Материалы");
	Для Каждого ТекСтрокаМатериалы Из Материалы Цикл
		ОбластьМатериалы.Параметры.Заполнить(ТекСтрокаМатериалы);
		ТабДок.Вывести(ОбластьМатериалы);
	КонецЦикла;
	// Подвал
	Подвал = Макет.ПолучитьОбласть("Подвал");
	Подвал.Параметры.Заполнить(ЭтотОбъект);
	ТабДок.Вывести(Подвал);

	ТабДок.ОтображатьСетку = Ложь;
	ТабДок.Защита = Ложь;
	ТабДок.ТолькоПросмотр = Ложь;
	ТабДок.ОтображатьЗаголовки = Ложь;
	ТабДок.Показать();
	//}}_КОНСТРУКТОР_ПЕЧАТИ_ЭЛЕМЕНТ
КонецПроцедуры

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

ТабДок = Новый ТабличныйДокумент;

В переменную ТабДок записываем ссылку на новый объект типа ТабличныйДокумент. Это именно тот документ, который, после работы процедуры, будет содержать готовую печатную форму. Сразу после создания табличный документ не виден пользователю, то есть все действия, которые мы с ним будем производить дальше, выполняются с невидимым документом. После завершения программного формирования документа, мы сделаем его видимым.

Макет = Документы.ПоступлениеМатериалов.ПолучитьМакет("Печать");

В переменную Макет записываем ссылку на макет с именем Печать, который принадлежит нашему документу. Будем использовать эту переменную для доступа к макету.

// Заголовок
	Область = Макет.ПолучитьОбласть("Заголовок");
	ТабДок.Вывести(Область);

В этом участке кода мы сначала получаем именованную область макета, которая носит имя Заголовок. Фактически, метод ПолучитьОбласть объекта Макет возвращает новый табличный документ, который представляет собой область, полученную по имени или другим способом. Ссылка на документ записывается в переменную Область. Используя метод Вывести объекта ТабДок мы выводим полученную область в наш табличный документ.

// Шапка
	Шапка = Макет.ПолучитьОбласть("Шапка");
	Шапка.Параметры.Заполнить(ЭтотОбъект);
	ТабДок.Вывести(Шапка);

В заголовке, если посмотреть на макет, есть лишь текст, содержащий название документа и никаких полей, которые нужно заполнять данными документа. А вот в шапке такие параметры имеются. Область, соответствующую шапке, мы получаем уже рассмотренным методом. А вот следующая команда - Шапка.Параметры.Заполнить(ЭтотОбъект); позволяет заполнить ячейки области, содержащие параметры, реквизитами объекта, переданного в качестве параметра (в данном случае мы имеем дело с объектом ЭтотОбъект - он позволяет получить тот документ, с которым мы в данный момент работаем). Соответствия между параметрами и реквизитами документа устанавливаются по именам. Ячейка, содержащая параметр <Номер> будет заполнена реквизитом документа с именем Номер и так далее.

// Материалы
	Область = Макет.ПолучитьОбласть("МатериалыШапка");
	ТабДок.Вывести(Область);

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

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

Здесь мы видим цикл, который перебирает каждую строку табличной части Материалы. На основе каждой из строк (переменная ТекСтрокаМатериалы ) он заполняет параметры области Материалы и выводит ее в табличный документ.

// Подвал
	Подвал = Макет.ПолучитьОбласть("Подвал");
	Подвал.Параметры.Заполнить(ЭтотОбъект);
	ТабДок.Вывести(Подвал);

Подвал выводится уже знакомым вам образом. Далее настраиваются некоторые свойства формируемого документа, влияющие на его внешний вид:

ТабДок.ОтображатьСетку = Ложь;
	ТабДок.Защита = Ложь;
	ТабДок.ТолькоПросмотр = Ложь;
	ТабДок.ОтображатьЗаголовки = Ложь;
	ТабДок.Показать();

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

Запустим наше прикладное решение в режиме 1С:Предприятие и посмотрим, как выглядит печатная форма для какого-нибудь документа, ПоступлениеМатериалов ( рис. 6.7).

Сформированная печатная форма документа

Рис. 6.7. Сформированная печатная форма документа

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

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

На данном этапе не будем больше улучшать и дорабатывать документ ПоступлениеМатериалов. Займемся еще одним документом нашей конфигурации.

< Лекция 5 || Лекция 6: 1234 || Лекция 7 >
Ринат Гатауллин
Ринат Гатауллин

Здравствуйте. Интересует возможность получения диплома( https://intuit.ru/sites/default/files/diploma/examples/P/955/Nekommerch-2-1-PRF-example.jpg ). Курс пройден. Сертификат не подходит. В сертификате ошибка, указано по датам время прохождения около 14 дней, хотя написано 576 часов.

Вячеслав Кузнецов
Вячеслав Кузнецов

Здравствуйте.

Как оплатить курс?

Павел Окунцев
Павел Окунцев
Россия, Нижневартовск, НГГУ, 2007
Pavel Krupoderov
Pavel Krupoderov
Россия, Казань