Редактирование макета
страницаРедактирование макета
В 1C:EDT
Прежде всего добавьте итоговую сумму в печатную форму документа ОказаниеУслуги.
Откройте редактор макета Печать на закладке Макет.
Как видите, макет документа состоит из именованных областей, которые в определенном порядке выводятся на печать.
Те именованные области, которые вы видите слева («Заголовок», «Шапка» и др.), были созданы с помощью конструктора. Но вы можете самостоятельно создавать или удалять области, переименовывать их и т. п.
Добавьте новую область для вывода итоговой суммы документа. Для этого выделите мышью две пустые строки под табличной частью документа и нажмите Таблица > Имена > Назначить имя… в главном меню 1С:EDT (рис. 8.20).

Рис. 8.20. Создание области ячеек для вывода итоговой строки
Назовите область Всего и нажмите ОК.
Чтобы формат добавленных вами строк совпадал с имеющимся форматом заголовка и табличной части документа, измените ширину колонок.
Для этого потяните мышью в заголовке таблицы за правую границу колонки 2 так, чтобы ее ширина совпала с шириной колонки № в шапке таблицы документа. Отпустите мышь.
Платформа предложит создать новый формат для выделенных строк. Согласитесь. Аналогичные действия выполните и для колонок 3, 4, 5 и 6.
В созданной области в колонке Цена напишите ВСЕГО, а в колонке Сумма напишите ВсегоПоДокументу (рис. 8.21).

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

Рис. 8.22. Свойства ячейки «ВсегоПоДокументу»
Каждая ячейка редактируемого вами табличного документа может содержать либо текст, либо некоторый параметр, либо шаблон.
Текст, содержащийся в ячейке, будет показан на экране.
Параметр будет заменен некоторым значением, которое может быть присвоено ему средствами встроенного языка. Текст, содержащийся в ячейке, является именем этого параметра.
Шаблон представляет собой текстовую строку, в определенные места которой будут вставлены значения параметров.
Поэтому, указав для ячейки в качестве заполнения Параметр, вы определили параметр области с именемВсегоПоДокументу, которому будет присвоено определенное значение при формировании печатной формы.
Откройте модуль менеджера документа ОказаниеУслуги.
Найдите в нем процедуру Печать() (созданную конструктором) и отредактируйте ее следующим образом (новые строки выделены жирным шрифтом) – листинг 8.8.
**Листинг 8.**8. Печать формы документа (фрагмент)
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
Шапка = Макет.ПолучитьОбласть("Шапка");
ОбластьПереченьНоменклатурыШапка = Макет.ПолучитьОбласть("ПереченьНоменклатурыШапка");
ОбластьПереченьНоменклатуры = Макет.ПолучитьОбласть("ПереченьНоменклатуры");
ОбластьИтог = Макет.ПолучитьОбласть("Всего");
ТабДок.Очистить();
ВставлятьРазделительСтраниц = Ложь;
Пока Выборка.Следующий() Цикл
Если ВставлятьРазделительСтраниц Тогда
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ТабДок.Вывести(ОбластьЗаголовок);
Шапка.Параметры.Заполнить(Выборка);
ТабДок.Вывести(Шапка, Выборка.Уровень());
ТабДок.Вывести(ОбластьПереченьНоменклатурыШапка);
ВыборкаПереченьНоменклатуры = Выборка.ПереченьНоменклатуры.Выбрать();
СуммаИтог = 0;
Пока ВыборкаПереченьНоменклатуры.Следующий() Цикл
ОбластьПереченьНоменклатуры.Параметры.Заполнить(ВыборкаПереченьНоменклатуры);
ТабДок.Вывести(ОбластьПереченьНоменклатуры, ВыборкаПереченьНоменклатуры.Уровень());
СуммаИтог = СуммаИтог + ВыборкаПереченьНоменклатуры.Сумма;
КонецЦикла;
ОбластьИтог.Параметры.ВсегоПоДокументу = СуммаИтог;
ТабДок.Вывести(ОбластьИтог);
ВставлятьРазделительСтраниц = Истина;
КонецЦикла;
…
Смысл добавленного фрагмента прост. Вы обращаетесь к макету документа ОказаниеУслуги по его имени – Макет.
Используя его метод ПолучитьОбласть(), получаете область Всего (ту, которую вы только что добавили к макету) и сохраняете ее в переменной ОбластьИтог.
В цикле обхода строк табличной части документа, полученных в результате выполнения запроса, вы накапливаете в переменной СуммаИтог значение суммы табличной части документа по колонке Сумма.
Затем вы обращаетесь к параметру ВсегоПоДокументу (ОбластьИтог.Параметры.ВсегоПоДокументу), находящемуся в области Всего, и присваиваете ему значение переменной СуммаИтог.
В заключение вы выводите итоговую область в табличный документ, который будет показан на экране и распечатан пользователем, – ТабДок.Вывести(ОбластьИтог).
Отображение табличного документа на экране выполняется в обработчике команды Печать, в модуле этой команды на клиенте, в то время как сама процедура заполнения печатной формы данными, описанная в модуле менеджера документа, выполняется на сервере.