Посмотрите, как реализован метод SysQuery::countPrim() и его вызов в SysQuery::countTotal().
Фактически, вам надо будет организовать только передачу идентификатора поля, по которому будет считаться сумма и задавать для него SelectionField с типом SUM.
Обратите внимание, что в этом методе учитывается кол-во датасорсов в Query и если их больше единицы, то подсчет кол-ва идет путем пробега в цикле по всем записям датасорса.
Что бы избежать этого, можно проверить наличие датасорсов, присоединенных по inner или outer join и для них так же сделать сброс настроек, а так же добавить в SelectionFields подсчет кол-ва по recId (или, вместо этого, добавить tableID)
Еще, остается возможное наличие группировок, которые так же необходимо будет отключать
Ну и сам подсчет будет заключаться в передаче в такой метод QueryRun().Query() вашего датасорса с формы, а его вызов вставить в QueryExecute() после super()
__________________
Axapta v.3.0 sp5 kr2
Последний раз редактировалось AndyD; 24.09.2008 в 22:54.
|