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

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

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

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

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

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

Рис. 22. Добавим Подвал к Табличному полю…

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

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

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

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

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

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

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

Каждая ячейка редактируемого нами табличного документа может

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

КонецЕсли;

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

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

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

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

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

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

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

ВыборкаПереченьНоменклатуры.Уровень());

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

КонецЦикла;

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

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

КонецЦикла;

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

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

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

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

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

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

Запустим 1С:Предприятие в режиме отладки и посмотрим, как теперь выглядит форма документа Оказание услуги №1 (рис. 23):

Рис. 7.4. Форма документа Оказаниеуслуги №1

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

Наши рекомендации