Редактирование макета в режиме «Конфигуратор»

Лабораторная работа №8

Макеты.

На этом занятии вы познакомитесь с очередным новым объектом конфигурации – Макет. Вы узнаете о его назначении и создадите макет документа, на основе которого будет формироваться печатная форма документа.

Что такое макет

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

 

Макет может содержать табличный или текстовый документ, двоичные данные, HTML-документ или Active Document, графическую или географическую схему, схему компоновки данных или макет оформления схемы компоновки данных.

 

Макеты могут существовать как сами по себе (общие макеты), так и быть подчинены какому-либо объекту конфигурации.

 

Одно из предназначений макета, подчиненного объекту конфигурации и содержащего табличный документ, – создание печатной формы этого объекта. Создание печатной формы заключается в конструировании ее составных частей – именованных областей, из которых затем «собирается» готовая печатная форма.

 

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

 

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

Макет печатной формы в режиме «Конфигуратор»

 

Наша цель будет заключаться в создании печатной формы документа Оказание услуги. Откроем в конфигураторе окно редактирования объекта конфигурации Документ ОказаниеУслуги.

Перейдем на закладку Макеты, нажмем кнопку Конструкторы и запустим конструктор печати (рис. 8.1).

 

 

Рис. 8.1.Запуск конструктора печати

 

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

 

Рис. 8.2.Конструктор печати.Шаг1


Нажмем Далее.


На втором шаге нажатием кнопки  определим, что все реквизиты нашего документа будут отображены в шапке печатной формы (рис. 8.3).

 

 

Рис. 8.3.Конструктор печати.Шаг2

 

Нажмем Далее.

 

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

(рис. 8.4).

 

 

Рис. 8.4.Конструктор печати.Шаг3


 

Нажмем Далее.


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

 

Рис. 8.5.Конструктор печати.Шаг5

 

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

 

В конфигураторе откроется модуль команды Печать, модуль менеджера документа ОказаниеУслуги и макет этого документа (рис. 8.6).


 

 

 

Рис. 8.6.Макет документа«Оказание услуги»


Заметим, что разработчик может создать макет печатной формы с нуля и для ее вывода создать соответствующую команду и кнопку в форме документа, но в данном случае всю работу сделал за нас конструктор печати:

 

Создан макет печатной формы документа ОказаниеУслуги с именем Печать (см. рис. 8.6).

 Создана команда документа ОказаниеУслуги с именем Печать. В модуль этой команды помещен обработчик, вызывающий процедуру печати документа, выполняющуюся на сервере. Сама процедура печати помещена в модуль менеджера документа ОказаниеУслуги (рис. 8.7).

 

 

Рис. 8.7.Структура документа«Оказание услуги»

 

в дереве объектов конфигурации

 

В командную панель формы документа ОказаниеУслуги помещена команда Печать для формирования печатной формы документа (рис. 8.8).

 

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

 

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

 

 

Рис. 8.8.Макет документа«Оказание услуги»

 

В режиме «1С:Предприятие»

Запустим «1С:Предприятие» в режиме отладки и откроем документ Оказание услуги № 1.

 

Обратите внимание, что в командной панели документа появилась новая кнопка Печать (рис. 8.9).


 

Рис. 8.9.Форма документа«Оказание услуги»с новой кнопкой«Печать»


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

 

Нажмем эту кнопку (в форме списка или в форме документа) и увидим печатную форму нашего документа (рис. 8.10).

 

Рис. 8.10.Печатная форма документа«Оказание услуги»

 

Как видите, конструктор сформировал вполне подходящую печатную форму для нашего документа. Единственное, чего не хватает в данной форме, это итоговой суммы документа.

 

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

Редактирование макета в режиме «Конфигуратор»

Прежде всего, добавим итоговую сумму в печатную форму документа ОказаниеУслуги.

 

Откроем конфигуратор, раскроем дерево документа Оказание Услуги и дважды щелкнем на макете Печать.

 

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

 

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

 

Добавим новую область для вывода итоговой суммы документа. Выделим мышью две пустые строки под табличной частью документа и выполним пункт главного меню Таблица - Имена - Назначить имя… (рис. 8.11).

 

Рис. 8.11.Создание области ячеек для вывода итоговой строки

 

Назовем область Всего, нажмем ОК.

 

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

 

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

 

Платформа предложит создать новый формат для выделенных строк. Согласимся.

 

Аналогичные действия выполним и для колонок 3, 4, 5 и 6.

 

В созданной области, в колонке Цена напишем ВСЕГО, а в колонке Сумма напишем ВсегоПоДокументу (рис. 8.12).


 

Рис. 8.12.Создание ячеек для вывода итога


Вызвав палитру свойств для ячейки ВсегоПоДокументу (контекстное меню – Свойства), в свойстве Заполнение укажем, что в этой ячейке будет находиться не текст, а параметр (рис. 8.13).

 

 

Рис. 8.13.Свойства ячейки«ВсегоПоДокументу»

 

Каждая ячейка редактируемого нами табличного документа может содержать либо текст, либо некоторый параметр, либо шаблон.

 

Текст,содержащийся в ячейке,будет показан на экране.

 

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

 

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

 

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

 

Откроем модуль менеджера документа ОказаниеУслуги.

 

Для этого перейдем на закладку Прочее окна редактирования объекта конфигурации Документ ОказаниеУслуги и нажмем кнопку Модуль менеджера (рис. 8.14).

 

Рис. 8.14.Открытие модуля менеджера документа«ОказаниеУслуги»

 

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

Листинг 8.1.Печать формы документа(фрагмент)

ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); Шапка = Макет.ПолучитьОбласть("Шапка");

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

ОбластьИтог = Макет.ПолучитьОбласть("Всего");

ТабДок.Очистить();

ВставлятьРазделительСтраниц = Ложь; Пока Выборка.Следующий() Цикл

Если ВставлятьРазделительСтраниц Тогда ТабДок.ВывестиГоризонтальныйРазделительСтраниц();

КонецЕсли;

ТабДок.Вывести(ОбластьЗаголовок);

Шапка.Параметры.Заполнить(Выборка); ТабДок.Вывести(Шапка, Выборка.Уровень());

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

СуммаИтог = 0;

Пока ВыборкаПереченьНоменклатуры.Следующий() Цикл

ОбластьПереченьНоменклатуры.Параметры.Заполнить(ВыборкаПереченьНоменклатуры);

ТабДок.Вывести(ОбластьПереченьНоменклатуры, ВыборкаПереченьНоменклатуры.Уровень());

СуммаИтог = СуммаИтог + ВыборкаПереченьНоменклатуры.Сумма;

КонецЦикла;

ОбластьИтог.Параметры.ВсегоПоДокументу = СуммаИтог; ТабДок.Вывести(ОбластьИтог);

 

ВставлятьРазделительСтраниц = Истина; КонецЦикла;

 

 

Смысл добавленного фрагмента прост. Мы обращаемся к макету документа ОказаниеУслуги по его имени – Макет.

 

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

 

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

 

Затем    мы обращаемся к параметру ВсегоПоДокументу(ОбластьИтог.Параметры.ВсегоПоДокументу), находящемуся в  области Всего, и  присваиваем ему значение переменной СуммаИтог.

 

В заключение мы выводим итоговую область в табличный документ, который будет показан на экране и распечатан пользователем –ТабДок.Вывести(ОбластьИтог).

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

В режиме «1С:Предприятие»

 

Запустим «1С:Предприятие» в режиме отладки и проверим результат наших изменений (рис. 8.15).

 

Рис. 8.15.Печатная форма документа«Оказание услуги»

 

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


Контрольные вопросы

 

1) Для чего предназначен объект конфигурации«Макет»?

2) Что такое конструктор печати?

 

3) Как создать макет с помощью конструктора печати?

4)  Как изменить табличный документ?

5) Какая разница в заполнении ячейки табличного документатекстом, параметром и шаблоном?

6) Как с помощью встроенного языка вывести в табличный документ новую область?

 


Дата добавления: 2018-06-01; просмотров: 8730; Мы поможем в написании вашей работы!

Поделиться с друзьями:




Мы поможем в написании ваших работ!