Редактирование формы документа ОказаниеУслуги
Прежде всего, добавим итоговую сумму в печатную форму документа ОказаниеУслуги.
Откроем конфигуратор, раскроем дерево документа Оказание Услуги и дважды щелкнем на макете Печать.
Как видите, макет документа состоит из именованных областей, которые в определенном порядке выводятся на печать.
Те именованные области, которые мы видим слева, были созданы с помощью конструктора. Но разработчик может сам создавать или удалять области, переименовывать их и т. п.
Добавим новую область для вывода итоговой суммы документа. Выделим мышью две пустые строки под табличной частью документа и выполним пункт главного меню Таблица -Имена - Назначить имя…
Рис. 22. Добавим Подвал к Табличному полю…
Назовем область Всего, нажмем ОК.
Чтобы формат добавленных нами строк совпадал с имеющимся форматом заголовка и табличной части документа, изменим ширину колонок.
Для этого потянем мышью в заголовке таблицы за правую границу колонки 2 так, чтобы ее ширина совпала с шириной колонки № в шапке таблицы документа. Отпустим мышь.
Платформа предложит создать новый формат для выделенных строк. Согласимся.
Аналогичные действия выполним и для колонок 3, 4, 5 и 6.
В созданной области, в колонке Цена напишем ВСЕГО, а в колонке Сумма напишем ВсегоПоДокументу (рис. 8.12).
Вызвав палитру свойств для ячейки ВсегоПоДокументу (контекстное меню – Свойства), на закладке Макет в свойстве Заполнение укажем, что в этой ячейке будет находиться не текст, а параметр (рис. 8.13).
Каждая ячейка редактируемого нами табличного документа может
содержать либо текст, либо некоторый параметр, либо шаблон.
Текст, содержащийся в ячейке, будет показан на экране.
Параметр будет заменен некоторым значением, которое может быть присвоено ему средствами встроенного языка. Текст, содержащийся в ячейке, является именем этого параметра.
Шаблон представляет собой текстовую строку, в определенные места которой будут вставлены значения параметров.
Поэтому, указав для ячейки в качестве заполнения Параметр, мы определили параметр области с именем ВсегоПоДокументу, которому присвоим нужное нам значение при формировании печатной формы.
Откроем модуль менеджера документа ОказаниеУслуги.
Для этого перейдем на закладку Прочее окна редактирования объекта конфигурации Документ ОказаниеУслуги и нажмем кнопку Модуль менеджера (рис. 8.14).
Найдем в нем процедуру Печать и отредактируем ее следующим образом (новые строки выделены жирным шрифтом), листинг 8.1.
листинг 8.1.Печать формы документа (фрагмент)
…
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
Шапка = Макет.ПолучитьОбласть("Шапка");
ОбластьПереченьНоменклатурыШапка = Макет.ПолучитьОбласть("ПереченьНоменклатурыШапка");
ОбластьПереченьНоменклатуры = Макет.ПолучитьОбласть("ПереченьНоменклатуры");
ОбластьИтог = Макет.ПолучитьОбласть("Всего");
ТабДок.Очистить();
ВставлятьРазделительСтраниц = Ложь; Пока Выборка.Следующий() Цикл
Если ВставлятьРазделительСтраниц Тогда ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ТабДок.Вывести(ОбластьЗаголовок);
Шапка.Параметры.Заполнить(Выборка); ТабДок.Вывести(Шапка, Выборка.Уровень());
ТабДок.Вывести(ОбластьПереченьНоменклатурыШапка); ВыборкаПереченьНоменклатуры = Выборка.ПереченьНоменклатуры.Выбрать();
СуммаИтог = 0;
Пока ВыборкаПереченьНоменклатуры.Следующий() Цикл
ОбластьПереченьНоменклатуры.Параметры.Заполнить(ВыборкаПереченьНоменклатуры);
ТабДок.Вывести(ОбластьПереченьНоменклатуры,
ВыборкаПереченьНоменклатуры.Уровень());
СуммаИтог = СуммаИтог + ВыборкаПереченьНоменклатуры.Сумма;
КонецЦикла;
ОбластьИтог.Параметры.ВсегоПоДокументу = СуммаИтог; ТабДок.Вывести(ОбластьИтог);
ВставлятьРазделительСтраниц = Истина;
КонецЦикла;
Смысл добавленного фрагмента прост. Мы обращаемся к макету документа ОказаниеУслуги по его имени – Макет.
Используя его метод ПолучитьОбласть(), получаем область Всего (ту, которую мы только что добавили к макету) и сохраняем ее в пере- менной ОбластьИтог.
В цикле обхода строк табличной части документа, полученных в результате выполнения запроса, мы накапливаем в переменной СуммаИтог значение суммы табличной части документа по колонке Сумма.
Затем мы обращаемся к параметру ВсегоПоДокументу (Об- ластьИтог.Параметры.ВсегоПоДокументу), находящемуся в области Всего, и присваиваем ему значение переменной СуммаИтог.
В заключение мы выводим итоговую область в табличный документ, который будет показан на экране и распечатан пользователем – ТабДок.Вывести(ОбластьИтог).
Отображение табличного документа на экране выполняется в обра- ботчике команды Печать, в модуле этой команды на клиенте, в то время как сама процедура заполнения печатной формы данными, описанная в модуле менеджера документа, выполняется на сервере.
Запустим 1С:Предприятие в режиме отладки и посмотрим, как теперь выглядит форма документа Оказание услуги №1 (рис. 23):
Рис. 7.4. Форма документа Оказаниеуслуги №1
Подобным образом, используя свойства элементов управления и задавая их значения, разработчик имеет возможность создать экранную форму любого дизайна и поведения.