Еще, для справки:
Например, если запаковать
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()).