Показать сообщение отдельно
Старый 12.09.2011, 15:18   #14  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
похоже вот такой способ будет работать всегда.
но если на код клиента уже был установлен критерий, то этот способ будет работать медленно.

X++:
boolean findSuperCust(Query _srcQuery, CustAccount _custAccount = "КлиентАБВ")
{
    Query q = new Query(_srcQuery); // создаем копию
    QueryBuildRange qbr;
    QueryRun qr;
    CustTable custTable;

    // устанавливаем новый критерий только если раньше он был не установлен.
    qbr = SysQuery::findOrCreateRange(q.dataSourceTable(tablenum(custTable)),fieldnum(custTable, AccountNum));
    if( !qbr.value()  )
        qbr.value(queryValue(_custAccount));

    // выполняем запрос
    qr = new QueryRun(q);
    while( qr.next() )
    {
        custTable = qr.get(tablenum(CustTable));
        if( custTable.accountNum == _custAccount )
            return true;
    }
    return false;
}
__________________
полезное на axForum, github, vk, coub.