Запрос. источники данных запроса
Механизм запросов – это основное средство получения данных из информационной базы. Для формирования запроса используется встроенный язык запросов, который транслируется на язык SQL и передаётся серверу базы данных либо обрабатывается системной самостоятельно. Запрос – основной способ формирования данных для отчётов, а так же запросы используются в объектах: построитель отчетов и в схеме компоновки данных.
Типовой алгоритм работы с запросом на встроенном языке
1) Создаётся объект типа запрос: ЗапросДанных = Новый Запрос
2) Устанавливается текст запроса: ЗапросДанных.Текст = ”Выбрать…”
3) Устанавливаются параметры запроса: ЗапросДанных.УстановитьПараметр("Имя", Значение)
4)Запрос выполняется и формируется его результат: РезультатЗапроса = ЗапросДанных.Выполнить()
5) Осуществляется выборка из результата запроса или результат запроса загружается в таблицу значений или дерево значений: ТаблицаДанных = РезультатЗапроса.Выгрузить(); ВыборкаДанных = РезультатЗапроса.Выбрать();
6) Обрабатываются выбранные или выгруженные данные
Основные источники - таблицы базы данных:
1) Реальная таблица - таблица, существующая в базе данных в соответствии с составом конфигурации. Большинству объектов конфигурации, а так же каждой табличной части, соответствует по одной реальной таблице.
2) Виртуальная таблица – не существует в базе данных, а генерируется из реальных таблиц по определённым алгоритмам во время выполнения запроса. Виртуальные таблицы существуют в частности для периодических регистров сведений-это СрезПервых и СрезПоследних. Виртуальная таблица СрезПервых содержит самые ранние значения ресурсов по всем совокупностям измерений, но не ранее даты, указанной в качестве её параметра. Виртуальная таблица СрезПоследних содержит самые поздние значения ресурсов по всем совокупностям измерений, но не позднее даты, указанной в качестве её параметра. Виртуальные таблицы СрезПервых и СрезПоследних содержат только поле период, измерения и ресурсы.
Пример СрезПервых и СрезПоследних:
Период | Номенклатура | Цена |
02.06.12 | Молоко | |
04.06.12 | Молоко | |
06.06.12 | Сметана | |
08.06.12 | Сметана | |
10.06.12 | Кефир | |
12.06.12 | Молоко |
Виртуальная таблица СрезПервых регистра сведений «Цены» на 07.06.12:
Период | Номенклатура | Цена |
08.06.12 | Сметана | |
10.06.12 | Кефир | |
12.06.12 | Молоко |
Виртуальная таблица СрезПоследних регистра сведений «Цены» на 11.06.12:
Период | Номенклатура | Цена |
10.06.12 | Кефир | |
08.06.12 | Сметана | |
04.06.12 | Молоко |
Пример запроса:
Исходная таблица запроса
Сотрудник | Должность | Пациент | ДатаРождения | Премия |
Шилов К.Д. | Терапевт | Ольга | 12.12.2005 | |
Шилов К.Д. | Терапевт | Сергей | 15.01.2006 | |
Павлов Б.А. | Окулист | Инна | 06.05.2005 | |
Павлов Б.А. | Окулист | Юлия | 13.11.2005 | |
Павлов Б.А. | Окулист | Павел | 08.07.2005 | |
Орлов Д.А. | Офтальмолог | Игорь | 06.07.2006 | |
Орлов Д.А. | Офтальмолог | Андрей | 19.03.2005 |
Тест запроса
ВЫБРАТЬ Таблица.Сотрудник КАК Сотрудник, Таблица.Должность КАК Должность, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Таблица.Пациент) КАК Пациент, СУММА(Таблица.Премия) КАК Премия ИЗ РегистрыСведений.ДанныеСотрудников КАК Таблица СГРУППИРОВАТЬ ПОСотрудник, Должность
Результат запроса
Сотрудник | Должность | Пациент | Премия |
Шилов К.Д. | Терапевт | ||
Павлов Б.А. | Окулист | ||
Орлов Д.А. | Офтальмолог |
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос. Создается этот объект вызовом конструкции Новый Запрос. В двух словах БД можно описать как набор таблиц, которые могут быть связаны между собой. Цель запроса сообщить БД, что мы хотим выбрать и откуда.
Пример запроса:
Запрос.Текст = "
|ВЫБРАТЬ
| Продажи.Товар,
| Продажи.Количество
|ИЗ
| Продажи
|ГДЕ
| Продажи.Количество >= 100";
4.13. Таблицы периодического регистра сведений. Пример реальные виртуальные (цены товаров) срез первых, срез последних(описание)