а теперь параметры
X++:
Query Query;
QueryRun QueryRun;
InventDim DimCriteria;
InventDimParm ParmCriteria;
InventDimParm ParmGroupBy;
;
////////////// параметры //////////////
DimCriteria.clear();
DimCriteria.InventLocationId = 'your wh';
ParmCriteria.clear();
ParmCriteria.ItemIdFlag = NoYes::Yes;
ParmCriteria.InventLocationIdFlag = NoYes::Yes;
ParmGroupBy.clear();
ParmGroupBy.ItemIdFlag = NoYes::Yes;
////////////// цикл //////////////
Query = InventSum::newQuery(null, 'your item',DimCriteria, ParmCriteria, ParmGroupBy);
QueryRun = new Qureyrun(Query);
while( QueryRun.next() )
{
inventSum = QueryRun.get(tablenum(InventSum));
inventQty += inventSum.availPhysical();
}
info(strfmt('%1', inventQty));
Стал ли код менее понятным?
Нет.
Стал ли код более универсальным?
Да.
Стал ли код правильным?
Еще не совсем. Не хватает проверки на допустимость склада - бывают номенклатуры, для которых склад неактивен.
Но поскольку в "примере" рассматривается только одна номенклатура и только один склад - это несущественно. Вот если бы мы раскрывали цикл по нескольким номенклатурам и складам...
Можно ли этот код использовать в качестве паттерна для дальнейшего использования?
Да.
А ведь достаточно было посмотреть на УЖЕ СУЩЕСТВУЮЩИЕ методы и чуть-чуть подумать...
"fast and dirty", блин