d9e5a92d

ЗАПРОСЫ

Запрос -- это обращение к системе 1С с просьбой выбрать определенные данные из базы данных. Например, с помощью запроса можно быстро организовать выбор всех сотрудников с определенной должностью. Для организации запроса необходимо выполнить следующие действия.


Запрос = СоздатьОбъект(Запрос);

ТекстЗапроса = текст запроса на особом языке запросов

Запрос.Выполнить(ТекстЗапроса);

//далее идет обработка результатов запроса

С помощью переменных запроса происходит обращение к требуемым данным. Переменные запроса чаще всего ссылаются на справочники и документы. Кроме того можно ссылаться на журналы расчетов, регистры, бухгалтерские счета.

|ФИО = Справочник.Сотрудники.Наименование;

|Долж = Справочник.Сотрудники.Должность;

|ДатаПриема = Справочник.Сотрудники.ДатаПриема;

|ДатаУвольнения = Справочник.Сотрудники.ДатаУвольнения;

|;

Практически в любом запросе есть ключевое слово Группировка. Оно означает, что нужно выбрать из таблицы только те записи, у которых значение определенного поля различается. Этот запрос выберет из справочника Сотрудники список используемых должностей и отсортирует этот список по алфавиту.

Запрос = СоздатьОбъект("Запрос");

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

|Долж = Справочник.Сотрудники.Должность;

|Группировка Долж упорядочить по Долж.Наименование;

|";

Запрос.Выполнить(ТекстЗапроса);



Пока Запрос.Группировка(Долж)=1 Цикл

............Сообщить(Запрос.Долж);

КонецЦикла;

Этот запрос совершает очень полезную работу: он группирует всех сотрудников по должностям. Заметьте, что сначала идет группировка по должности, а затем по сотруднику, это очень важно. Обратите внимание на переменную запроса Сотр. Она ссылается на строку справочника Сотрудники. Чтобы вывести ФИО сотрудника используется обращение к атрибуту объекта: Сотр.Наименование.

Запрос = СоздатьОбъект(Запрос);

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

|Сотр = Справочник.Сотрудники.ТекущийЭлемент;

|Долж = Справочник.Сотрудники.Должность;

|Группировка Долж упорядочить по Долж.Наименование;

|Группировка Сотр упорядочить по Сотр.Наименование;

|;

Запрос.Выполнить(ТекстЗапроса);



Пока Запрос.Группировка(Долж)=1 Цикл

............Сообщить(Запрос.Долж);

............Пока Запрос.Группировка(Сотр)=1 Цикл

................Сообщить(...... + Запрос.Сотр.Наименование);

............КонецЦикла;

КонецЦикла;

Этот запрос совершает очень полезную работу: он подсчитывает, сколько сотрудников работает по каждой должности. Другие возможные функции приведены в Синтакс-помощнике.

Запрос = СоздатьОбъект(Запрос);

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

|Долж = Справочник.Сотрудники.Должность;

|Группировка Долж упорядочить по Долж.Наименование;

|Функция Колво = Счётчик();

|;

Запрос.Выполнить(ТекстЗапроса);



Пока Запрос.Группировка(Долж)=1 Цикл

...Сообщить(По должности + Строка(Запрос.Долж) +

.............. работает + Строка(Запрос.Колво) + чел.);

КонецЦикла;

Запрос = СоздатьОбъект(Запрос);

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

|Сотр = Справочник.Сотрудники.ТекущийЭлемент;

|КодДолж = Справочник.Сотрудники.Должность.Код;

|Группировка Сотр упорядочить по Сотр.Наименование;

|Условие (КодДолж = 7);

|;

Запрос.Выполнить(ТекстЗапроса);

Пока Запрос.Группировка(Долж)=1 Цикл

............Сообщить(Запрос.Сотр);

КонецЦикла;



Содержание раздела