Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
today2 / today2 / Лабраб10.doc
Скачиваний:
281
Добавлен:
08.11.2013
Размер:
41.58 Mб
Скачать

2.10 Лабораторная работа № 10. Конструктор запросов.

Цель работы. Получение навыков построения отчетов при работе с конструктором запросов.

2.10.1. Теоретические сведения

2.10.1.1 Отчет «РеестрДокументовОказаниеУслуги»

Первым отчетом, на основе которого мы начнем знакомиться с конструктором запросов, будет отчет «РеестрДокументовОказаниеУслуги». Этот отчет просто будет выводить список существующих в базе данных документов «ОказаниеУслуги» в порядке их дат и номеров.

Создадим в конфигураторе новый объект конфигурации Отчет «РеестрДокументовОказаниеУслуги». Перейдем на закладку «Макет» и запустим конструктор выходной формы.

Рис. 1

Рис. 2

В качестве источника данных для запроса выберем объектную (ссылочную) таблицу документов «ОказаниеУслуги». Из этой таблицы выберем следующие поля:

• «Дата»,

• «Номер»,

• «Склад»,

• «Мастер»,

• «Клиент»:

Рис. 3

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

После этого перейдем на закладку «Порядок» и укажем, что результат запроса должен быть сначала упорядочен по значению поля «Дата», а затем - по значению поля «ОказаниеУслуги.Ссылка»:

Рис. 4

Перейдем на закладку «Отчет» и сбросим флаг «Использовать построитель отчета»:

Рис. 5

Нажмем «ОК». Конструктор сформирует форму отчета и макет.

Рис. 6

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

Рис. 7

Текст запроса начинается, как говорилось выше, с части описания запроса. Описание запроса начинается с обязательного ключевого слова «ВЫБРАТЬ». Затем следует список полей выборки, в котором описываются поля, которые должны содержаться в результате запроса. Этот список может содержать как собственно поля, так и некоторые выражения, вычисляемые на основе значений полей.

После ключевого слова «ИЗ» указываются источники данных - исходные таблицы запроса, содержимое которых обрабатывается в запросе. В данном случае это объектная (ссылочная) таблица «Документ.ОказаниеУслуги». После ключевого слова «КАК» указываетсяпсевдоним источника данных. В нашем случае это «ОказаниеУслуги». В дальнейшем к этому источнику данных можно будет обращаться в тексте запроса, используя псевдоним. Такое обращение мы видим в описании полей выборки.

Поля выборки также могут иметь псевдонимы, по которым в дальнейшем в тексте запроса можно обращаться к этому полю. В нашем случае это псевдонимы «Дата» и «Номер». После части описания запроса в нашем примере следует часть упорядочивания результатов. Предложение «УПОРЯДОЧИТЬ ПО» позволяет сортировать строки в результате запроса. После этого ключевого предложения располагается выражение упорядочивания, которое, в общем случае, представляет собой перечисление полей (выражений) и порядка вывода. В нашем случае упорядочивание будет выполняться сначала по полю выборки, обращение к которому выполняется через псевдоним - «Код», а затем по полю - «Номер». В обоих случаях порядок сортировки будет по возрастанию, который является порядком сортировки по умолчанию.

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

Рис. 8

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

В начале процедуры мы получаем макет отчета, из которого затем получаем существующие в нем области в соответствующие переменные.

Затем мы очищаем табличный документ и выводим в него те области, которые не содержат данных, получаемых из результата запроса:

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

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

В заключение процедуры, мы выводим в табличный документ завершающие области макета.

Теперь запустим 1С:Предприятие в режиме отладки и посмотрим на результат работы нашего отчета:

Рис. 9

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

Соседние файлы в папке today2