Листинг. (html, txt)

Приступим к разбору тех частей этой процедуры, которые являются для вас новыми. Так, обратите внимание на то, что каждая новая строка текста запроса начинается с вертикальной черты. Если попытаться ввести текст запроса в код модуля, не разбив его таким образом - система выдаст ошибку.

Обратите внимание на блок ИЗ в теле текста запроса:

|ИЗ

| РегистрНакопления.ОстаткиМатериалов.Остатки(&Дата, ЦентрОтветственности = &Ответственный) КАК ОстаткиМатериаловОстатки

Именно здесь задаются параметры виртуальной таблицы - Дата и Ответственный. Причем, просто задать параметры и даже передать их в процедуру, содержащую текст запроса, недостаточно для того, чтобы они были переданы в запрос. Следующими командами параметры, переданные в процедуруОстаткиМатериалов() передаются в запрос.

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

Запрос.УстановитьПараметр("Ответственный", Ответственный);

Обратите внимание на то, что параметры в запрос передают после того, как в свойство запроса Текст записан текст запроса, но до выполнения запроса.

Значительная часть кода процедуры отведена под нужды формирования печатной формы отчета.

Обратите внимание на следующие команды, одна из которых предшествует командам вывода данных в табличное поле, а другая находится после завершения вывода, но перед окончательным отображением таблицы:

ТабДок.НачатьАвтогруппировкуСтрок();

//Команды вывода данных в табличный документ

ТабДок.ЗакончитьАвтогруппировкуСтрок();

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

Уровень записи - это число, которое представляет собой уровень этой записи в иерархии и группировках.

ВыборкаЦентрОтветственности = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Эта команда получает выборку результатов запроса, обходя запрос по группировкам. В дальнейшем мы будем получать данные именно из переменнойВыборкаЦентрОтветственности.

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

Эта команда открывает цикл обхода выборки. Метод Следующий() возвращает Истина, если в выборке еще есть данные, первый его вызов позиционируется на первый элемент выборки. После того, как этот метод возвратит Ложь - это будет означать, что предыдущий вызов метода отработал для последней строки выборки. Первая строка выборки (за счет использования выше командыВыбрать(ОбходРезультатЗапроса.ПоГруппировкам)) получает первую группировку - она представляет собой данные об ответственном сотруднике, по которому будут сгруппированы строки с информацией о номенклатуре.

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

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

С помощью этих команд заполняются параметры области ОбластьЦентрОтветственности, область выводится в табличный документ с использованием информации об уровне записи. В данном случае мы имеем дело с выводом группировки верхнего уровня, метод Уровень() возвращает 0.

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

Этой командой мы получаем из общей выборки детальные данные о номенклатуре и будем выводить их в отчет, используя переменную ВыборкаДетали.

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

ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетали);

ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетали.Уровень());

КонецЦикла;

Этим внутренним циклом, который действует аналогично внешнему, мы заполняем те части отчета, которые имеют отношение к детальной выборке. Метод Уровень() в данном случае возвращает 1.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: