1С-Предприятие 8.0. Практическое пособие разработчика

       

Редактирование макета документа ОказаниеУслуги


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

Добавим новую область для вывода итоговой суммы документа. Выделим мышью две пустые строки и выполним команду Таблица

Имена
Назначить имя...

Выделим мышью две строки и зададим имя области

Назовем область "Всего". В созданной области, в колонке "Цена", напишем "Всего", а в колонке "Сумма" напишем "ВсегоПоДокументу". [110]

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

Укажем, что в ячейке будет находиться не текст, а параметр...

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

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

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

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

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



Теперь откроем модуль формы документа "ОказаниеУслуги" – "ФормаДокумента". Найдем в нем процедуру "Печать" и после цикла добавим в нее следующие строки (новые строки выделены жирным шрифтом):

Процедура Печать(Элемент)

//{{_КОНСТРУКТОР_ПЕЧАТИ_ЭЛЕМЕНТ(Печать)

// Данный фрагмент построен конструктором.

// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

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

Макет = Документы.ОказаниеУслуги.ПолучитьМакет("Печать");




// Заголовок

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

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

// Шапка

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

Область.Параметры.Номер = Номер;

Область.Параметры.Дата = Дата;

Область.Параметры.Склад = Склад;

Область.Параметры.Клиент = Клиент;

Область.Параметры.Мастер = Мастер;

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

// тчНоменклатура

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

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

Для Каждого ТекСтрокаПереченьНоменклатуры Из ПереченьНоменклатуры Цикл

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

   Область.Параметры.Номенклатура = ТекСтрокаПереченьНоменклатуры.Номенклатура;

   Область.Параметры.Количество = ТекСтрокаПереченьНоменклатуры.Количество;

   Область.Параметры.Цена = ТекСтрокаПереченьНоменклатуры.Цена;

   Область.Параметры.Сумма = ТекСтрокаПереченьНоменклатуры.Сумма;

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

КонецЦикла;

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

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

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

ТабДок.ОтображатьСетку = Ложь;

ТабДок.Защита = Ложь;

ТабДок.ТолькоПросмотр = Ложь;

ТабДок.ОтображатьЗаголовки = Ложь;

ТабДок.Показать();

//}}_КОНСТРУКТОР_ПЕЧАТИ_ЭЛЕМЕНТ

КонецПроцедуры

Смысл добавленного фрагмента прост: мы получаем новую область "Всего" (ту, которую мы только что добавили к макету). Затем [112] параметру "ВсегоПоДокументу", находящемуся в этой области, мы присваиваем значение суммы табличной части документа по колонке "Сумма" (обращение к табличной части документа выполняется по имени – "ПереченьНоменклатуры"). В заключение мы выводим область в итоговый табличный документ, который будет показан на экране и распечатан пользователем.

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

А теперь, для того, чтобы наш документ "ОказаниеУслуги", выглядел вполне законченным, добавим итоговую сумму по документу и на экранную форму, чтобы пользователь мог видеть ее в процессе заполнения табличной части документа. [113]


Содержание раздела