Показать сообщение отдельно
Старый 22.11.2013, 15:17   #8  
pedrozzz is offline
pedrozzz
Молодой, подающий надежды
Аватар для pedrozzz
MCBMSS
Лучший по профессии 2015
 
164 / 218 (8) ++++++
Регистрация: 18.02.2010
Адрес: Краснодар
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
HAVING в аксапте тоже отсутствует. Поэтому единственная возможность здалать такую выбоорку через аксапту - это разбить ваш запрос на два вложенных.
В 2012 having появился, правда доступен только через объект Query. Небольшой пример, выводит название групп клиентов, в которых меньше 10 участников:
X++:
static void QueryHavingExample(Args _args)
{
    Query                   query;
    QueryBuildDataSource    qbds;
    QueryHavingFilter       havingFilter;
    QueryRun                queryRun;
    CustTable               custTable;
    
    query        = new Query();
    qbds         = query.addDataSource(tableNum(CustTable));
    qbds.addGroupByField(fieldNum(CustTable, CustGroup));
    
    havingFilter = query.addHavingFilter(qbds, fieldStr(CustTable, RecId), AggregateFunction::Count);
    havingFilter.value('< 10');
    
    queryRun     = new QueryRun(query);
    
    while (queryRun.next())
    {
        custTable = queryRun.get(tableNum(CustTable));
        
        info(custTable.CustGroup);
    }
    
    info("done");
}
__________________
Кононов Пётр

Последний раз редактировалось pedrozzz; 22.11.2013 в 15:21.
За это сообщение автора поблагодарили: S.Kuskov (3).