yes, the _qbds is datasource of the view. Here, I provide more details:
public void handleIncludeHavingRestFilter1(Query _q, QueryBuildDataSource _qbds, real _value1)
{
//_value1 = 3.72 for example
_q.clearHavingFilters();
//this works
str sqlS1 = _q.getSQLStatement();
/*
SELECT T1.ACCOUNTNUM,T1.ACCOUNTGROUP,T1.NAME,T1.VATNUM,T1.DATAAREAID,SUM(T2.DEBIT),SUM(T2.CREDIT),SUM(T2.REST),SUM(T2.PREVDEBIT),SUM(T2.PREVCREDIT),SUM(T2.PREVREST),SUM(T2.NEWDEBIT),SUM(T2.NEWCREDIT),SUM(T2.NEWREST),T2.ACCOUNTGROUP,T2.VATNUM
FROM DCM_APR_CUSTVENDUNIONVIEW T1
LEFT OUTER JOIN DCM_APR_CUSTVENDTRANSBALUNIONVIEW T2 ON (((T2.PARTITION=5637144576) AND (T2.DATAAREAID IN (N'BIN') )) AND (((((((T2.RECTYPE=?) AND (T2.TRANSDATE<?)) OR ((T2.RECTYPE=?) AND ((T2.TRANSDATE>=?) AND (T2.TRANSDATE<=?)))) AND (T2.CUSTVENDRECTYPE=?)) AND (T1.ACCOUNTNUM=T2.ACCOUNTNUM AND (T1.DATAAREAID = T2.DATAAREAID) AND (T1.PARTITION = T2.PARTITION))) AND (T1.DATAAREAID=T2.DATAAREAID AND (T1.DATAAREAID = T2.DATAAREAID) AND (T1.PARTITION = T2.PARTITION))) AND (T1.CUSTVENDRECTYPE=T2.CUSTVENDRECTYPE AND (T1.DATAAREAID = T2.DATAAREAID) AND (T1.PARTITION = T2.PARTITION))))
WHERE (((T1.PARTITION=5637144576) AND (T1.DATAAREAID IN (N'BIN') )) AND ((T1.CUSTVENDRECTYPE=?) AND ((((((((T1.ACCOUNTNUM=?) OR (T1.ACCOUNTNUM=?)) OR (T1.ACCOUNT
NUM=?)) OR (T1.ACCOUNTNUM=?)) OR (T1.ACCOUNTNUM=?)) OR (T1.ACCOUNTNUM=?)) OR (T1.ACCOUNTNUM=?)) OR (T1.ACCOUNTNUM=?))))
GROUP BY T1.ACCOUNTNUM,T1.ACCOUNTGROUP,T2.ACCOUNTGROUP,T1.NAME,T1.VATNUM,T2.VATNUM,T1.DATAAREAID
ORDER BY T1.ACCOUNTNUM,T1.ACCOUNTGROUP,T2.ACCOUNTGROUP,T1.NAME,T1.VATNUM,T2.VATNUM,T1.DATAAREAID
*/
_q.addHavingFilter(
_qbds,
fieldStr(DCM_APR_CustVendTransBalUnionView, Rest),
AggregateFunction::Sum
).value(queryValue(_value1));
//this doesn't work
str sqlS2 = _q.getSQLStatement();
/*
SELECT T1.ACCOUNTNUM,T1.ACCOUNTGROUP,T1.NAME,T1.VATNUM,T1.DATAAREAID,SUM(T2.DEBIT),SUM(T2.CREDIT),SUM(T2.REST),SUM(T2.PREVDEBIT),SUM(T2.PREVCREDIT),SUM(T2.PREVREST),SUM(T2.NEWDEBIT),SUM(T2.NEWCREDIT),SUM(T2.NEWREST),T2.ACCOUNTGROUP,T2.VATNUM
FROM DCM_APR_CUSTVENDUNIONVIEW T1
LEFT OUTER JOIN DCM_APR_CUSTVENDTRANSBALUNIONVIEW T2 ON (((T2.PARTITION=5637144576) AND (T2.DATAAREAID IN (N'BIN') )) AND (((((((T2.RECTYPE=?) AND (T2.TRANSDATE<?)) OR ((T2.RECTYPE=?) AND ((T2.TRANSDATE>=?) AND (T2.TRANSDATE<=?)))) AND (T2.CUSTVENDRECTYPE=?)) AND (T1.ACCOUNTNUM=T2.ACCOUNTNUM AND (T1.DATAAREAID = T2.DATAAREAID) AND (T1.PARTITION = T2.PARTITION))) AND (T1.DATAAREAID=T2.DATAAREAID AND (T1.DATAAREAID = T2.DATAAREAID) AND (T1.PARTITION = T2.PARTITION))) AND (T1.CUSTVENDRECTYPE=T2.CUSTVENDRECTYPE AND (T1.DATAAREAID = T2.DATAAREAID) AND (T1.PARTITION = T2.PARTITION))))
WHERE (((T1.PARTITION=5637144576) AND (T1.DATAAREAID IN (N'BIN') )) AND ((T1.CUSTVENDRECTYPE=?) AND ((((((((T1.ACCOUNTNUM=?) OR (T1.ACCOUNTNUM=?)) OR (T1.ACCOUNTNUM=?)) OR (T1.ACCOUNTNUM=?)) OR (T1.ACCOUNTNUM=?)) OR (T1.ACCOUNTNUM=?)) OR (T1.ACCOUNTNUM=?)) OR (T1.ACCOUNTNUM=?))))
GROUP BY T1.ACCOUNTNUM,T1.ACCOUNTGROUP,T2.ACCOUNTGROUP,T1.NAME,T1.VATNUM,T2.VATNUM,T1.DATAAREAID
HAVING (SUM(T2.REST)=?)
ORDER BY T1.ACCOUNTNUM,T1.ACCOUNTGROUP,T2.ACCOUNTGROUP,T1.NAME,T1.VATNUM,T2.VATNUM,T1.DATAAREAID
*/
//Database error: [Microsoft][ODBC Driver 17 for SQL Server]String data, right truncation
//In Tracer I see the condition as: HAVING (SUM(T2.REST)=3014709)
}