Показать сообщение отдельно
Старый 09.07.2014, 20:09   #7  
iCloud is offline
iCloud
Enjoy!
Аватар для iCloud
MCP
Злыдни
 
195 / 108 (4) +++++
Регистрация: 06.03.2012
Адрес: Moscow/Ukraine/Malta
Еще, для справки:
Например, если запаковать QueryRun в табличное поле с типом Container, например из формы SysQueryForm. То после, распаковав QueryRun - перебрать ренджи можно только с помощью queryFilterCount():
X++:
//Пакуем все фильтры в map
if(SysQuery::queryHasFilters(sourceQuery))
{
    filtersCount = sourceQuery.queryFilterCount();            
    while(filtersCount)
    {
        qFilter = sourceQuery.queryFilter(filtersCount);                
        Debug::assert(qFilter != null);                
        tableId = qFilter.dataSource().table();
        fieldId = fieldName2id(tableId, qFilter.field());
        queryValue = qFilter.value();
                    
        if(! filterMap.exists([tableId, fieldId]))
            filterMap.insert([tableId, fieldId], queryValue);
                    
        filtersCount--;
    }
}
Получается, что после того как QueryRun был инициализирован new QueryRun(q) (формируем запрос с помощью addRange) все Range которые попали после оператора WHERE отныне есть фильтры и перебрать их возможно только вышеуказанным способом (имею ввиду через queryFilterCount()).

Последний раз редактировалось iCloud; 09.07.2014 в 20:14.
За это сообщение автора поблагодарили: skuull (1).