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