Показать сообщение отдельно
Старый 07.01.2008, 16:19   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Нет, не могу на это смотерть спокойно.

Во-первых, раз уж чел рассказывает про "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" поскольку при других условиях ему придется писать абсолютно новый код.
Исправил в моем примере.
__________________
полезное на axForum, github, vk, coub.