Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1С: Лабораторная работа №3.doc
Скачиваний:
38
Добавлен:
23.03.2016
Размер:
476.16 Кб
Скачать

Отчет по клиентам

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

Рис. 12. Макет отчета по оплатам клиентов

Текст процедуры формирования отчета, выполняется при нажатии кнопки Сформировать. Листинг процедуры, генерирующий отчет приведен в листинге 2.

Листинг 2. Процедура формирования отчета по оплатам клиентов

&НаСервере

Процедура СформироватьНаСервере(ТабДок)

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

Запрос.Текст = "ВЫБРАТЬ

|ВнесениеОплатыЗаКурсы.Ссылка.Клиент КАК Клиент,

|СУММА(ВнесениеОплатыЗаКурсы.ВнесеннаяСумма)

|КАК ОплаченнаяСумма

|ИЗ

|Документ.ВнесениеОплаты.ОплатаКурсов

|КАК ВнесениеОплатыЗаКурсы

|СГРУППИРОВАТЬ ПО

|ВнесениеОплатыЗаКурсы.Ссылка.Клиент";

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДанные = РезультатЗапроса.Выбрать();

Макет = Отчеты.ОплатаКлиентов.ПолучитьМакет("Макет");

// Заголовок

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

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

// Шапка

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

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

// Выполнить запрос

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

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

ОбластьСтрока.Параметры.Клиент = ВыборкаДанные.Клиент;

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

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

КонецЦикла;

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

&НаКлиенте

Процедура Сформировать(Команда)

ТабДок = Новый ТабличныйДокумент;

СформироватьНаСервере(ТабДок);

ТабДок.Показать();

ТабДок.ОтображатьСетку = Ложь;

ТабДок.Защита = Ложь;

ТабДок.ТолькоПросмотр = Ложь;

ТабДок.ОтображатьЗаголовки = Ложь;

ТабДок.Показать();

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

Из листинга запроса видно, что обращение производилось не только к табличной части ОплатаКурсов документа ВнесениеОплаты, но к самому документу, для получения реквизитов. Для этого было использовано поле Ссылка на документ, например:

|ВнесениеОплатыЗаКурсы.Ссылка.Клиент КАК Клиент

На уровне объектов БД информация о документе хранится в двух таблицах – в основной таблице документа и табличной части документа. В таблице табличной части имеется поле Ссылка, которое представляет ссылку на документ, которому подчинена рассматриваемая запись табличной части.

После формирования отчета, получим результат оплаты с группировкой по клиентам (Рис.13).

Рис. 13. Отчет с группировкой по клиентам

Задание для самостоятельного выполнения

  1. Создайте отчет ОтчетПОКлиетам с тремя секциями:

  • Заголовок – текст «Отчет по оплатам клиентов»;

  • Шапка – с двумя ячейками с текстом «Клиент» и «Оплаченная сумма»;

  • Строка – с двумя параметрами «Клиент» и «ОплаченнаяСумма».

  1. Напишите процедуру обслуживающую кнопку Сформировать, воспользовавшись примером, приведенным выше.

  2. Просмотрите полученный отчет в режиме 1С: Предприятие.