
- •2.10 Лабораторная работа № 10. Конструктор запросов.
- •2.10.1. Теоретические сведения
- •2.10.1.1 Отчет «РеестрДокументовОказаниеУслуги»
- •2.10.1.2 Отчет «Рейтинг услуг»
- •2.10.1.3 Отчет «ВыручкаМастеров»
- •2.10.1.4 Отчет «ПереченьУслуг»
- •2.10.1.5 Отчет «РейтингКлиентов»
- •2.10.1.5.1 Диаграмма
- •2.10.1.5.2 Создание отчета «РейтингКлиентов»
- •2.10.1.6 Универсальный отчет
- •2.10.2 Задание на лабораторную работу
- •2.10.3 Контрольные вопросы
2.10 Лабораторная работа № 10. Конструктор запросов.
Цель работы. Получение навыков построения отчетов при работе с конструктором запросов.
2.10.1. Теоретические сведения
2.10.1.1 Отчет «РеестрДокументовОказаниеУслуги»
Первым отчетом, на основе которого мы начнем знакомиться с конструктором запросов, будет отчет «РеестрДокументовОказаниеУслуги». Этот отчет просто будет выводить список существующих в базе данных документов «ОказаниеУслуги» в порядке их дат и номеров.
Создадим в конфигураторе новый объект конфигурации Отчет «РеестрДокументовОказаниеУслуги». Перейдем на закладку «Макет» и запустим конструктор выходной формы.
Рис. 1
Рис. 2
В качестве источника данных для запроса выберем объектную (ссылочную) таблицу документов «ОказаниеУслуги». Из этой таблицы выберем следующие поля:
• «Дата»,
• «Номер»,
• «Склад»,
• «Мастер»,
• «Клиент»:
Рис. 3
Обратите внимание, что при выборе полей «Склад», «Мастер» и «Клиент» в список выбранных полей подбираются также поля «Склад.Представление», «Мастер.Представление» и «Клиент.Представление». Дело в том, что в общем случае подразумевается, что эти поля будут выводиться в ячейки табличного документа. Поскольку соответствующие поля «Склад», «Мастер» и «Клиент» являются ссылочными, то в случае, если в качестве значения параметра для вывода будет передано значение-ссылка, система будет выполнять дополнительный запрос для получения представления этого поля (которое и будет выведено в документ), в результате чего выводотчета замедлится. Поэтому система, при выборе ссылочных полей, предлагает сразу же включить в список выбранных полей и представления ссылочных полей, в расчете на то, что именно они и будут использованы для вывода в документ.
После этого перейдем на закладку «Порядок» и укажем, что результат запроса должен быть сначала упорядочен по значению поля «Дата», а затем - по значению поля «ОказаниеУслуги.Ссылка»:
Рис. 4
Перейдем на закладку «Отчет» и сбросим флаг «Использовать построитель отчета»:
Рис. 5
Нажмем «ОК». Конструктор сформирует форму отчета и макет.
Рис. 6
Откроем модуль формы и найдем в нем процедуру «РеестрДокументовОказаниеУслуги». В этой процедуре как раз формируется текст запроса, который будет использован для получения интересующих нас данных:
Рис. 7
Текст запроса начинается, как говорилось выше, с части описания запроса. Описание запроса начинается с обязательного ключевого слова «ВЫБРАТЬ». Затем следует список полей выборки, в котором описываются поля, которые должны содержаться в результате запроса. Этот список может содержать как собственно поля, так и некоторые выражения, вычисляемые на основе значений полей.
После ключевого слова «ИЗ» указываются источники данных - исходные таблицы запроса, содержимое которых обрабатывается в запросе. В данном случае это объектная (ссылочная) таблица «Документ.ОказаниеУслуги». После ключевого слова «КАК» указываетсяпсевдоним источника данных. В нашем случае это «ОказаниеУслуги». В дальнейшем к этому источнику данных можно будет обращаться в тексте запроса, используя псевдоним. Такое обращение мы видим в описании полей выборки.
Поля выборки также могут иметь псевдонимы, по которым в дальнейшем в тексте запроса можно обращаться к этому полю. В нашем случае это псевдонимы «Дата» и «Номер». После части описания запроса в нашем примере следует часть упорядочивания результатов. Предложение «УПОРЯДОЧИТЬ ПО» позволяет сортировать строки в результате запроса. После этого ключевого предложения располагается выражение упорядочивания, которое, в общем случае, представляет собой перечисление полей (выражений) и порядка вывода. В нашем случае упорядочивание будет выполняться сначала по полю выборки, обращение к которому выполняется через псевдоним - «Код», а затем по полю - «Номер». В обоих случаях порядок сортировки будет по возрастанию, который является порядком сортировки по умолчанию.
Теперь обратим внимание на то, как выводится результат запроса в табличный документ.
Рис. 8
В форме отчета расположен элемент управления «ПолеТабличногоДокумента» с именем «ТабДок», который заполняется данными на основе макета, сформированного конструктором.
В начале процедуры мы получаем макет отчета, из которого затем получаем существующие в нем области в соответствующие переменные.
Затем мы очищаем табличный документ и выводим в него те области, которые не содержат данных, получаемых из результата запроса:
В последней строке конструктор добавил начало автогруппировки строк. В данном примере у нас нет строк, которые нужно было бы группировать, но по умолчанию конструктор всегда предлагает выполнить группировку строк в табличном документе. На скорость вывода отчета такой вызов влиять не будет, поэтому оставим текст конструктора без изменений. После этого мы получаем выборку из результата запроса, которую перебираем в цикле.
В каждой итерации цикла мы заполняем параметры полученной ранее области макета значениями, полученными из очередной записи выборки результата запроса, и выводим эту область в табличный документ.
В заключение процедуры, мы выводим в табличный документ завершающие области макета.
Теперь запустим 1С:Предприятие в режиме отладки и посмотрим на результат работы нашего отчета:
Рис. 9
Таким образом, на примере этого отчета мы продемонстрировали, как использовать конструктор выходной формы и познакомились с некоторыми основными конструкциями языка запросов.