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("зРасход"); ...