Общая
схема выполнения запроса
Запрос -- это обращение
к системе 1С с просьбой выбрать определенные данные из базы данных. Например,
с помощью запроса можно быстро организовать выбор всех сотрудников с определенной
должностью. Для организации запроса необходимо выполнить следующие действия.
Запрос
= СоздатьОбъект("Запрос");
ТекстЗапроса = "<текст запроса на особом языке запросов>"
Запрос.Выполнить(ТекстЗапроса);
//далее
идет обработка результатов запроса
Переменные
в запросе
С помощью переменных
запроса происходит обращение к требуемым данным. Переменные запроса чаще
всего ссылаются на справочники и документы. Кроме того можно ссылаться
на журналы расчетов, регистры, бухгалтерские счета.
|ФИО = Справочник.Сотрудники.Наименование;
|Долж = Справочник.Сотрудники.Должность;
|ДатаПриема = Справочник.Сотрудники.ДатаПриема;
|ДатаУвольнения = Справочник.Сотрудники.ДатаУвольнения;
|";
Группировка
и сортировка
Практически
в любом запросе есть ключевое слово Группировка. Оно означает, что нужно
выбрать из таблицы только те записи, у которых значение определенного
поля различается. Этот
запрос выберет из справочника Сотрудники список используемых должностей
и отсортирует этот список по алфавиту.
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = "
|Долж = Справочник.Сотрудники.Должность;
|Группировка Долж упорядочить по Долж.Наименование;
|";
Запрос.Выполнить(ТекстЗапроса);
Пока Запрос.Группировка("Долж")=1 Цикл
............Сообщить(Запрос.Долж);
КонецЦикла;
Двойная
группировка
Этот запрос
совершает очень полезную работу: он группирует всех сотрудников по должностям.
Заметьте, что сначала идет группировка по должности, а затем по сотруднику,
это очень важно. Обратите
внимание на переменную запроса Сотр. Она ссылается на строку
справочника Сотрудники. Чтобы вывести ФИО сотрудника используется обращение
к атрибуту объекта: Сотр.Наименование.
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = "
|Сотр = Справочник.Сотрудники.ТекущийЭлемент;
|Долж = Справочник.Сотрудники.Должность;
|Группировка Долж упорядочить по Долж.Наименование;
|Группировка Сотр упорядочить по Сотр.Наименование;
|";
Запрос.Выполнить(ТекстЗапроса);
Пока Запрос.Группировка("Долж")=1 Цикл
............Сообщить(Запрос.Долж);
............Пока Запрос.Группировка("Сотр")=1 Цикл
................Сообщить("......" + Запрос.Сотр.Наименование);
............КонецЦикла;
КонецЦикла;
Функции
в запросе
Этот запрос
совершает очень полезную работу: он подсчитывает, сколько сотрудников
работает по каждой должности. Другие
возможные функции приведены в Синтакс-помощнике.
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = "
|Долж = Справочник.Сотрудники.Должность;
|Группировка Долж упорядочить по Долж.Наименование;
|Функция Колво = Счётчик();
|";
Запрос.Выполнить(ТекстЗапроса);
Пока Запрос.Группировка("Долж")=1 Цикл
...Сообщить("По должности " + Строка(Запрос.Долж) +
.............." работает " + Строка(Запрос.Колво) + " чел.");
КонецЦикла;
Условие
отбора
Часто требуется ограничить выборку только нужными значениями. Например,
этот запрос выбирает всех сотрудников с определенной должностью.
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = "
|Сотр = Справочник.Сотрудники.ТекущийЭлемент;
|КодДолж = Справочник.Сотрудники.Должность.Код;
|Группировка Сотр упорядочить по Сотр.Наименование;
|Условие (КодДолж = 7);
|";
Запрос.Выполнить(ТекстЗапроса);
Пока Запрос.Группировка("Долж")=1
Цикл
............Сообщить(Запрос.Сотр);
КонецЦикла;
|