Иллюстрированный самоучитель по языку системы 1С:Предприятие

Операторы языка запросов

Пример:

...

|КолВо = Документ.ВидДокумента.Количество;

|Цена = Документ.ВидДокумента.Цена;

|Функция Сум = Сумма(КолВо * Цена);

|Функция Макс = Максимум(Окр(КолВо) * Окр(Цена));

|Функция Средн = Среднее(ФункцияОпределеннаяВМодуле(КолВо, Цена));

...

<strong>Пример:</strong>

// Создание объекта типа Запрос

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

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

"//{{ЗАПРОС(Функции)

|Период с ДатаНач по ДатаКон;

|Оклад = Справочник.Сотрудники.Оклад;

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

|Ктг = Справочник.Сотрудники.Категория;

|Группировка Подр без групп;

|Группировка Ктг без групп;

|Функция Всего = Сумма(Оклад);

|Условие((Ктг.Выбран() = 1) И (Подр.Выбран() = 1));

|"//}}ЗАПРОС

;

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

Возврат;

КонецЕсли;

// ...

Итог = Запрос.Всего;

// ...

Оператор Функция предназначен для вычисления и накопления некоторых численных значений в процессе формирования выборки по запросу.

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

Операторы функций в запросе можно опускать, тогда запрос просто не будет ничего вычислять, а просто во временный набор данных заносятся записи со значениями Группировок. Однако это справедливо только для работы запросов по справочникам и по документам. При работе запроса по регистрам следует помнить, что в этом случае обязательно наличие Функций, причем только в том случае, когда их вычисленные значения отличны от нуля (хотя бы одной из заданных Функций), найденные объекты включаются во временный набор данных, формируемый запросом. Если при работе запроса по регистрам в тексте запроса операторы функций опущены, то программа не выдаст никакого сообщения об ошибке, добросовестно пройдет по всем Группировкам, не вычислит никаких значений Функций и, значит, ничего не запишет во временном файле.

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

В тексте запроса, при описании оператора Функция можно использовать необязательное ключевое слово Когда, использование которого в операторе означает, что вычисление функции следует производить только при условии, что значение логического выражения, заданного в параметре ключевого слова является ИСТИНА. Синтаксис применяемого логического выражения полностью аналогичен синтаксису разрешенному к применению в операторах Условие.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.