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


Способы обхода результатов запроса, группировки в табличном документе


В предыдущем примере в основном использовался линейный способ обхода результата (метод «Выбрать ()» вызывался без явного указания способа обхода). Кроме линейного существует еще иерархический обход и обход результата по группам. Для явного указания способа обхода первым параметром метода «Выбрать» необходимо указать значение системного перечисления «ОбходРезультатаЗапроса».

Определены возможные значения:

•    Прямой

•    ПоГруппировкам

•    ПоГруппировкамСИерархией

Разбираться с порядком обхода будем на примере отчета «ПорядокОбхода»

У отчета необходимо определить два реквизита: НачПериода — тип «Дата» КонПериода — тип «Дата»

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

Текст модуля формы:

Процедура ВыполнитьНажатие (Элемент) ТабДок = ЭлементыФормы. тбл Результат;

 

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

 

ВыполнитьОтчет (ТабДок, ЭлементыФормы. ТПоле, ОбходРезультата);

 

ТабДок. ТолькоПросмотр = Истина;

 

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

 

КонецПроцедуры Процедура ВыбПериодНажатие (Элемент) НастройкаПериода = Новый НастройкаПериода;

 

НастройкаПериода. УстановитьПериод (НачПериода, КонецДня (КонПериода));

 

НастройкаПериода. РедактироватьКакИнтервал = Истина;

 

НастройкаПериода. РедактироватьКакПериод = Истина;

 

НастройкаПериода. ВариантНастройки = ВариантНастройкиПериода. Период;

 

НастройкаПериода. Редактировать ();

 

НачПериода = НастройкаПериода. ПолучитьДатуНачала ();

 

КонПериода = НастройкаПериода. ПолучитьДатуОкончания ();

 

КонецПроцедуры ЭлементыФормы. ОбходРезультата. СписокВыбора. Добавить (ОбходРезультатаЗапроса. ПрямоЙ, "Прямой");

 

ЭлементыФормы. ОбходРезультата. СписокВыбора. Добавить (ОбходРезультатаЗапроса. ПоГруппировкам, "По группировкам");

 

ЭлементыФормы. ОбходРезультата. СписокВыбора. Добавить (ОбходРезультатаЗапроса. ПоГруппировкамСИерархией, "По иерархии");


 

Текст модуля отчета:

 

ПроцедураВыдатьРекурсивно (ВыборкаДетальная, Знач Номер, ТабДок, Секция, ОбходРезультата) Номер=Номер+1;

 

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

 

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

 

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

 

Секция. Параметры. ТипЗаписи = ВыборкаДетальная. ТипЗаписи ();

 

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

 

Секция. Параметры. Номер = Номер;

 

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

 

ВыборкаДетальная2 = ВыборкаДетальная. Выбрать (ОбходРезультата);

 

ВыдатьРекурсивно (ВыборкаДетальная2, Номер, ТабДок, Секция, ОбходРезультата);

 

КонецЦикла;

 

КонецПроцедуры Процедура ВыполнитьОтчет (ТабДок, ТП, ОбходРезультата) Экспорт Перем ОбщиеИтогиСумма;


<


- Начало -  - Назад -  - Вперед -



Книжный магазин