Difference between revisions of "Query.BegTotals"
m (1 revision imported) |
|
(No difference)
| |
Latest revision as of 07:52, 7 February 2021
| BegTotals (Вычисление значений) | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||
Функция позволяет получить значение столбца агрегации для запроса в линейном режиме (однако, функция может выполняться и для запроса в обычном режиме, к примеру, для нахождения итого по всей таблице запроса). Агрегация выполняется в режиме начальных остатков для текущего уровня группировки таблицы, т.е. находится сумма всех записей уровня ноль, связанных с первой записью текущего уровня группировки в текущей строке таблицы. Функция делает поправку на внутренние группировки по временным значениям (к примеру, по месяцам или дням), так как в случае начального сальдо необходимо использовать только первое из значений таких группировок.
Синтаксис
Query.BegTotals(<Наименование переменной запроса (STRING)>):<Результат вычисления (NUMBER)>
Аргументы
<Наименование переменной запроса (STRING)>- Задает наименование переменной (столбца) запроса для агрегации значения суммы оригинальных строк для первого значения текущего уровня обхода таблицы запроса. Переменная может не быть переменной агрегации в оригинальном запросе, но должна содержать числовые значения.
Возвращаемое значение
Возвращает числовое значение-результат вычисления.
Примеры
Var З Export;
//Функция обхода группировок на основе рекурсии
Function ОбходГруппировок(Уровень)
If Уровень>З.GroupCount Then
Exit;
EndIf;
While З.Next(Уровень) Do
//Получить значение текущей группировки
зЭл:=З.Get(З.Groups(Уровень));
//Получить сальдо агрегации для текущей строки
зНачОст:=З.зНачОст;
зКонОст:=З.зКонОст;
зПриход:=З.зПриход;
зРасход:=З.зРасход;
//Вывод информации в печатную форму отчета
...
//Перейти к следующей группировке
ОбходГруппировок(Уровень+1);
EndDo;
EndFunction
//Выполним запрос с произвольным количеством группировок
ТЗ:=...
З:=Query.Create();
З.Execute(ТЗ);
//Вывести заголовок в печатную форму отчета
...
//Вывод строк группировок
ОбходГруппировок(1);
//Вывод строки итого, работает как линейных, так и для обычных запросов
зНачОст:=З.BegTotals("зНачОст");
зКонОст:=З.EndTotals("зКонОст");
зПриход:=З.Compute("зПриход");
зРасход:=З.Compute("зРасход");
...