После этих действий форма примет вид изображенный на рисунке 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. |
Внесите соответствующие изменения в текст процедуры ПечатьЧерезЗапрос(Кнопка) и проверьте ее работоспособность. |
Для надежности приводим текст данной процедуры (Сравните со своим вариантом):
Процедура ПечатьЧерезЗапрос(Кнопка)
// Вставить содержимое обработчика.
//Создаем объект запрос
Запрос = Новый Запрос();
//Формируем текст запроса
Запрос.Текст =
"ВЫБРАТЬ Курсы.Период, Курсы.Курс
|ИЗ РегистрСведений.Курсы КАК Курсы
|ГДЕ Курсы.Период >= &Период
|УПОРЯДОЧИТЬ ПО Период УБЫВ";
//Устанавливаем значение параметра
Запрос.УстановитьПараметр("Период",
Константы.ДатаРегистрации.Получить());
//И выполняем запрос
Результат = Запрос.Выполнить();
// Обработка результата
Выборка=Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(""+Выборка.Период+Символы.Таб+Выборка.Курс);
КонецЦикла;
КонецПроцедуры
Что мы узнали
В этой главе мы рассмотрели основы работы с объектом "Запрос".
Для выполнения запроса необходимо составить его текст на специальном языке запросов.
Более подробно работу с объектом и язык запросов мы рассмотрим в последующих главах.
| Поделиться: |
Поиск по сайту:
Читайте также:
Деталирование сборочного чертежа
Когда производственнику особенно важно наличие гибких производственных мощностей?
Собственные движения и пространственные скорости звезд