Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PBP_Glava_4.doc
Скачиваний:
7
Добавлен:
10.09.2019
Размер:
292.35 Кб
Скачать

Глава 4. Объект "Запрос"

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

Объект Запрос встроенного языка системы предоставляет еще более эффективный механизм обработки данных: для обработки необходимых данных объект формирует временную таблицу, структура и содержимое которой полностью определяется текстом запроса.

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

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

В этой главе мы рассмотрим основы применения объекта и написание текста запроса на примере п.3 постановки задачи. Для этого мы напишем полный аналог процедуры ПечатьКурсаУЕ(…) из модуля формы списка регистра сведений "Курсы".

4.1. Создание запроса "вручную"

Забегая вперед, скажем, что в системе имеется необходимый набор конструкторов, которые облегчают процесс создания объектов в конфигурации. Но для лучшего понимания работы Конструктора запросов (который мы рассмотрим в последующих главах) один из отчетов мы сделаем полностью "вручную" - практически без применения конструкторов.

Упражнение 4.1.

В форме списка регистра сведений "Курсы" выделите мышью кнопку на нижней панели инструментов и заполните ее свойства следующими значениями:

Свойство

Значение

Имя:

ПечатьЧерезЗапрос

Тип:

Действие

Действие:

ПечатьЧерезЗапрос

Текст:

Печать через запрос

Подсказка:

Печать через запрос

Пояснение:

Печать через запрос

Отображение:

Надпись

После этих действий форма примет вид изображенный на рисунке 4.1.

Сначала выполните подготовительные действия самостоятельно.

Рис. 4.1. Результат выполнения Упражнения №4.1

      1. Написание текста запроса и его выполнение

Методически, работа с объектом типа Запрос строится следующим образом:

// Создаем объект запрос Запрос = Новый Запрос(); Запрос.Текст = "Здесь мы запишем текст запроса"; // Если текст запроса содержит некоторые параметры, то перед // его выполнением необходимо им присвоить конкретные значения: Запрос.УстановитьПараметр("Параметр1",ЗначениеПараметра1); …………………………………………………………… Запрос.УстановитьПараметр("ПараметрN",ЗначениеПараметраN); Результат = Запрос.Выполнить(); // Обработка результата

Текст запроса всегда начинается с ключевого слова ВЫБРАТЬ языка запросов, за которым через запятую следует указать: из каких реквизитов каких объектов запрос должен сделать выборку.

Так, в нашем случае нам нужны свойства Период и Курс регистра сведений Курсы. Поэтому мы можем записать следующий текст:

Запрос.Текст ="ВЫБРАТЬ |РегистрСведений.Курсы.Период, РегистрСведений.Курсы.Курс";

Если мы сейчас выполним запрос, то объект построит следующую таблицу, содержащую результат запроса:

Период

Курс

28.12.2007

25,2600

01.01.2008

24,8500

01.01.2009

23,7844

31.01.2009

23,6222

02.03.2009

23,5729

01.04.2009

23,3801

01.05.2009

23,1021

31.05.2009

23,7090

30.06.2009

23,3483

30.07.2009

23,2450

18.08.2009

23,3532

Для удобства написания текста запроса можно таблице, из которой объект будет выбирать записи, дать краткое название – псевдоним, применив ключевое слово КАК:

Запрос.Текст = " ВЫБРАТЬ Курсы.Период, Курсы.Курс |ИЗ РегистрСведений.Курсы КАК Курсы";

Сейчас в выборку попадают все записи, что есть в регистре (за все возможные периоды). Для того чтобы записи удовлетворяли какому-либо условию, можно в тексте запроса после оператора ВЫБРАТЬ применить ключевое слово ГДЕ, после которого написать условие отбора записей.

В учебных целях мы ограничим выборку датой регистрации объединения:

Запрос.Текст = "ВЫБРАТЬ Курсы.Период, Курсы.Курс |ИЗ РегистрСведений.Курсы КАК Курсы |ГДЕ Курсы.Период >= &Период";

Обратим внимание на знак & перед именем параметра запроса.

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

// Создаем объект запрос Запрос = Новый Запрос(); // Формируем текст запроса Запрос.Текст = "ВЫБРАТЬ Курсы.Период, Курсы.Курс |ИЗ РегистрСведений.Курсы КАК Курсы |ГДЕ Курсы.Период >= &Период"; // Устанавливаем значение параметра Запрос.УстановитьПараметр("Период", Константы.ДатаРегистрации.Получить()); // И выполняем запрос Результат = Запрос.Выполнить();

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

Запрос.Текст = "ВЫБРАТЬ Курсы.Период, Курсы.Курс |ИЗ РегистрСведений.Курсы КАК Курсы |ГДЕ Курсы.Период >= &Период |УПОРЯДОЧИТЬ ПО Период УБЫВ";

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]