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