Введение в конфигурирование 1Cv8 - Основные объекты


Сводная таблица


Одна из интересных возможностей при работе с данными, имеющими сложную иерархию, заключается в работе со сводными таблицами. Рассмотрим эту возможность на примере отчета «Анализ продаж».

Процедура ВыполнитьОтчет (ТабДок) Экспорт Макет = ПолучитьМакет ("ПродолжениеМакет");

 

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

 

ТабДок. Вывести (Секция);

 

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

 

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

 

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

 

ТекстЗагтроса = "ВЫБРАТЬ |Контрагент Как Поставщик, Товары |ИЗ Документ. Приходная

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

 

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

 

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



 

Пока ВыборкаОсновиая. Следующий () Цикл СекцияП. Параметры. Наименование = ВыборкаОсновная. Поставшик;

 

ТабДок. Вывести (СекцияП);

 

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

 

Пока ВыборкаДетальная. Следующий () Цикл Секция. Параметры. Наименование = ВыборкаДетальная. Номенклатура;

 

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

 

ТабДок. Вывести (Секция, ВыборкаДетальная. Уровень ());

 

КонецЦикла;

 

КонецЦикла;

 

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

Создайте новый отчет, определите у него два реквизита «НачПериода» и «КонПериода», имеющие тип «Дата».

Создайте форму отчета, в диалог формы поместите элемент управления «Поле табличного документа» (определив ему имя «ПТД»). Выделите диапазон ячеек в поле табличного документа, зайдите в пункт главного меню программы «Таблица», выберите раздел «Встроенные таблицы», далее пункт «вставить сводную таблицу».

Диалог формы после всех действий должен выглядеть следующим образом:

Текст     процедуры,     исполняемой     при     нажатии     на     кнопку «Сформировать», следующий:

Процедура КнопкаСформироватьНажатие (Элемент) Запрос = Новый Запрос;

 

Запрос. Текст = "ВЫБРАТЬ |            Ссылка, Контрагент КАК Покупатель, |            Ссылка. КонтактноеЛицо КАК Контакт, |            Номенклатура КАК Номенклатура, |            Количество, |            Сумма | из |            Документ. Расходная. Товары |Где ссылка. Дата Между &НачПериода И &КонПериода






|ИТ0ГИ СУММА (Количество), СУММА (Сумма) ПО |           Покупатель, Номенклатура, |            Контакт [АВТОУПОРЯДОЧИВАНИЕ";

 Запрос. УстановитьПараметр ("НачПериода", НачПериода);

 Запрос. УстановитьПараметр ("КонПериода", КонецДня (КонПериода));

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

 СводнаяТаблица = ЭлементыФормы. ПТД. ВстроеиныеТаблицы. СводнаяТаблица1;

 СводнаяТаблица. ИсточникДанных = Результат;

 Если СводнаяТаблица. Колонки. Количество () = 0  И Сводная Таблица. Строки. КоличествоО — 0 И СводнаяТаблица. Данные. Количество () = 0 Тогда // Зададим начальное расположение измерений          на осях СводнаяТаблица. Обновление = Ложь;

 Сводная Таблица. Колонки. Добавить ("Покупатель");

 СводнаяТаблица. Строки. Добавить ("Номенклатура");

 СводнаяТаблица. Данные. Добавить ("Количество");

 СводнаяТаблица. Данные. Добавить (" Сумма");

 СводнаяТаблица. Обновление = Истина;

 КонецЕсли;

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

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


Содержание раздела