Сводная таблица
Одна из интересных возможностей при работе с данными, имеющими сложную иерархию, заключается в работе со сводными таблицами. Рассмотрим эту возможность на примере отчета «Анализ продаж».
Процедура ВыполнитьОтчет (ТабДок) Экспорт Макет = ПолучитьМакет ("ПродолжениеМакет"); Секция = Макет. ПолучитьОбласть ("Шапка"); ТабДок. Вывести (Секция); Секция = Макет. ПолучитьОбласть ("Позиция"); СекцияП = Макет. ПолучитьОбласть ("Поставщик"); Запрос = Новый Запрос; ТекстЗагтроса = "ВЫБРАТЬ |Контрагент Как Поставщик, Товары |ИЗ Документ. Приходная Запрос. Текст = ТекстЗапроса; РезультатЗапроса = Запрос. Выполнить (); ВыборкаОсновная = РезультатЗапроса. Выбрать (); Пока ВыборкаОсновиая. Следующий () Цикл СекцияП. Параметры. Наименование = ВыборкаОсновная. Поставшик; ТабДок. Вывести (СекцияП); ВыборкаДетальная = ВыборкаОсновная. Товары. Выбрать (); Пока ВыборкаДетальная. Следующий () Цикл Секция. Параметры. Наименование = ВыборкаДетальная. Номенклатура; Секция. Параметры. Колво = ВыборкаДетальная. Количество; ТабДок. Вывести (Секция, ВыборкаДетальная. Уровень ()); КонецЦикла; КонецЦикла; КонецПроцедуры |
Создайте новый отчет, определите у него два реквизита «НачПериода» и «КонПериода», имеющие тип «Дата».
Создайте форму отчета, в диалог формы поместите элемент управления «Поле табличного документа» (определив ему имя «ПТД»). Выделите диапазон ячеек в поле табличного документа, зайдите в пункт главного меню программы «Таблица», выберите раздел «Встроенные таблицы», далее пункт «вставить сводную таблицу».
Диалог формы после всех действий должен выглядеть следующим образом:
Текст процедуры, исполняемой при нажатии на кнопку «Сформировать», следующий:
Процедура КнопкаСформироватьНажатие (Элемент) Запрос = Новый Запрос; Запрос. Текст = "ВЫБРАТЬ | Ссылка, Контрагент КАК Покупатель, | Ссылка. КонтактноеЛицо КАК Контакт, | Номенклатура КАК Номенклатура, | Количество, | Сумма | из | Документ. Расходная. Товары |Где ссылка. Дата Между &НачПериода И &КонПериода |
|ИТ0ГИ СУММА (Количество), СУММА (Сумма) ПО | Покупатель, Номенклатура, | Контакт [АВТОУПОРЯДОЧИВАНИЕ"; Запрос. УстановитьПараметр ("НачПериода", НачПериода); Запрос. УстановитьПараметр ("КонПериода", КонецДня (КонПериода)); Результат = Запрос. Выполнить (); СводнаяТаблица = ЭлементыФормы. ПТД. ВстроеиныеТаблицы. СводнаяТаблица1; СводнаяТаблица. ИсточникДанных = Результат; Если СводнаяТаблица. Колонки. Количество () = 0 И Сводная Таблица. Строки. КоличествоО — 0 И СводнаяТаблица. Данные. Количество () = 0 Тогда // Зададим начальное расположение измерений на осях СводнаяТаблица. Обновление = Ложь; Сводная Таблица. Колонки. Добавить ("Покупатель"); СводнаяТаблица. Строки. Добавить ("Номенклатура"); СводнаяТаблица. Данные. Добавить ("Количество"); СводнаяТаблица. Данные. Добавить (" Сумма"); СводнаяТаблица. Обновление = Истина; КонецЕсли; КонецПроцедуры |