Нет, не могу на это смотерть спокойно.
Во-первых, раз уж чел рассказывает про "On-hand number", то мог бы хотя бы метод использовать вмето тупого суммирования "непонятных" полей. Код бы получился более коротким и более наглядным. Заодно разобрался бы, что перепутал знаки и пропустил статус Зарегистрировано (хотя в списке полей запроса указал).
X++:
InventDim inventDim;
InventSum inventSum;
InventQty inventQty;
;
while select sum(postedQty), sum(received), sum(deducted), sum(registered), sum(picked), sum(reservPhysical)
from InventSum group by itemId
join InventDim
where inventSum.inventDimId == inventDim.inventDimId
&& inventSum.itemId == 'your item'
&& inventDim.inventLocationId == 'your WH'
{
inventQty += inventSum.availPhysical();
}
info(strfmt('%1', inventQty));
пока писал, нашел еще одну ошибку - он печатает только последнее найденное количество.
Чел даже не предполагает, что цикл может вернуть несколько значений (тогда зачем использует while?).
А все потому, что чел делает свертку по номенклатуре. Воистину "fast and dirty" поскольку при других условиях ему придется писать абсолютно новый код.
Исправил в моем примере.