Показать сообщение отдельно
Старый 24.09.2008, 22:48   #3  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2480 (88) +++++++++
Регистрация: 20.08.2005
Посмотрите, как реализован метод 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.