В начало

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

 

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

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

 

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

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

 

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

 

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

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

 

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

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

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

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

      Запросекст =

      "ВЫБРАТЬ

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

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

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

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

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

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

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

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

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

      |           Цена,

      |           Сумма

      |     )

      |ИЗ

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

      |ГДЕ

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

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

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

 

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

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

     

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

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

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

 

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

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

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

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

            КонецЕсли;

 

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

 

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

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

 

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

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

           

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

 

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

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

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

                 

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

            КонецЦикла;

 

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

      КонецЦикла;

     

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

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

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

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

     

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

 

 

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

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