В начало

«Оказание услуги» с запросом

 

            Есть некая организация, оказывающая различные услуги клиентам.

            Требуется создать простой отчет с автоматическим расчетом итоговой суммы по столбцу «Сумма» табличной части документа.

 

Рис. 1. Документ «ОказаниеУслуг»

Рис. 1. Документ «ОказаниеУслуги»

 

            В конфигураторе с помощью конструктора печати был создан макет печатной формы документа «ОказаниеУслуги». Затем добавлена область «Всего», на которой размещен параметр «ВсегоПоДокументу».

 

Рис.2. Редактирование макета

Рис.2. Редактирование макета

 

Процедура «Печать» в модуле менеджера имеет следующий вид:

Процедура Печать (ТабДок, Ссылка) Экспорт

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

      Запрос = Новый Запрос;

      Запрос.Текст =

      "ВЫБРАТЬ

      |     ОказаниеУслуги.Дата,

      |     ОказаниеУслуги.Клиент,

      |     ОказаниеУслуги.Мастер,

      |     ОказаниеУслуги.Номер,

      |     ОказаниеУслуги.Склад,

      |     ОказаниеУслуги.ПереченьНоменклатуры. (

      |           НомерСтроки,

      |           Номенклатура,

      |           Количество,

      |           Цена,

      |           Сумма

      |     )

      |ИЗ

      |     Документ.ОказаниеУслуги КАК ОказаниеУслуги

      |ГДЕ

      |     ОказаниеУслуги.Ссылка В  (&Ссылка)";

      Запрос.Параметры.Вставить ("Ссылка", Ссылка);

      Выборка = Запрос.Выполнить ().Выбрать ();

 

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

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

     

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

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

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

 

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

            Пока Выборка.Следующий () Цикл

            Если ВставлятьРазделительСтраниц Тогда

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

            КонецЕсли;

 

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

 

            Шапка.Параметры.Заполнить (Выборка);

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

 

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

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

           

            ИтоговаяСумма = 0; //Обнуление ИТОГОВОЙ суммы

 

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

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

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

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

      КонецЦикла;

 

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

      КонецЦикла;

     

      //Вывод области "Всего"

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

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

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

     

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

 

 

Рис. 3. Печатная форма документа «ОказаниеУслуг»

Рис. 3. Печатная форма документа «ОказаниеУслуг»