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




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


Рис. 4.1. Результат выполнения Упражнения №4.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

 

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

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

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

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

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

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

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

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

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

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

 

Выборка данных из результата запроса

Метод.Выбрать(…) возвращает ссылку на объект типа РезультатЗапроса, который среди прочих имеет метод открывающий выборку результатов:

 

Выборка=Результат.Выбрать();
Пока Выборка.Следующий() Цикл
...=Выборка.Период;
...=Выборка.Курс;
....................
КонецЦикла;

Именами свойств записи, которую мы выбрали по методу.Следующий() будут те имена реквизитов источников данных (или их псевдонимов), которые мы указали в тексте запроса.

 

 

Упражнение №4.2.
 
Внесите соответствующие изменения в текст процедуры ПечатьЧерезЗапрос(Кнопка) и проверьте ее работоспособность.

 

Для надежности приводим текст данной процедуры (Сравните со своим вариантом):

 

Процедура ПечатьЧерезЗапрос(Кнопка)

// Вставить содержимое обработчика.

//Создаем объект запрос

Запрос = Новый Запрос();

//Формируем текст запроса

Запрос.Текст =

"ВЫБРАТЬ Курсы.Период, Курсы.Курс

|ИЗ РегистрСведений.Курсы КАК Курсы

|ГДЕ Курсы.Период >= &Период

|УПОРЯДОЧИТЬ ПО Период УБЫВ";

//Устанавливаем значение параметра

Запрос.УстановитьПараметр("Период",

Константы.ДатаРегистрации.Получить());

//И выполняем запрос

Результат = Запрос.Выполнить();

// Обработка результата

Выборка=Результат.Выбрать();

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

Сообщить(""+Выборка.Период+Символы.Таб+Выборка.Курс);

КонецЦикла;

КонецПроцедуры

Что мы узнали

В этой главе мы рассмотрели основы работы с объектом "Запрос".

Для выполнения запроса необходимо составить его текст на специальном языке запросов.

Более подробно работу с объектом и язык запросов мы рассмотрим в последующих главах.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-08-20 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту:

Обратная связь