Нам понадобилось ставить фильтр по свойствам номенклатуры на форму InventOnHand.
Нахожу, что в executequery вызывается метод для модификации запроса. переписываю executequery:
X++:
void executeQuery()
{
// > добавленный мной кусок -->
QueryBuildDataSource BR;
Query q;
str s='';
QueryBuildRange findOrAddRange(int fNum){
QueryBuildRange ret;
ret=BR.findRange(fNum);
if(!ret) ret=BR.addRange(fNum);
return ret;
}
// > добавленный мной кусок <--
;
element.inventDimSetupObject().modifyQuery(inventSum_DS,inventDim_DS);
// > добавленный мной кусок -->
q=InventSum_ds.query();
BR=q.dataSourceNo(1).addDataSource(tablenum(InventTable));
BR.relations(true);
fItemGroupId =findOrAddRange(fieldnum(InventTable,ItemGroupId));
fModelGroupId =findOrAddRange(fieldnum(InventTable,ModelGroupId));
fDimGroupId =findOrAddRange(fieldnum(InventTable,DimGroupId));
fItemBuyerGroupId=findOrAddRange(fieldnum(InventTable,ItemBuyerGroupId));
InventSum_ds.query(q); // пробовал InventSum_ds.queryrun(new sysqueryrun(q)); - тот же эффект
info(inventsum_ds.query().dataSourceNo(1).toString());
fItemGroupId.value(ItemGroupId.valueStr());
fModelGroupId.value(ModelGroupId.valueStr());
fDimGroupId.value(DimGroupId.valueStr());
fItemBuyerGroupId.value(ItemBuyerGroupId.valueStr());
// > добавленный мной кусок <--
super();
здесь fXXXXXXXX наименования объявленых в ClassDeclaration QueryBuildRange's,
соответствующие XXXXXX - элементы управления для выбора значений фильтра.
фильтрации не происходит, и в info данного метода выводится запрос без прикрепленого InventTable.
Кто-нидь подскажет, что не так делаем?