Показать сообщение отдельно
Старый 04.02.2009, 17:48   #2  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Data Dictionary \ Maps \ PriceDiscHeading \ Methods

X++:
server void  updateFinalDisc(PriceDiscLine   priceDiscLine)
{
    PriceDisc               priceDisc;

    InventTableModule       inventTableModule;

    AmountCur               balanceEndDisc;
    ModuleInventPurchSales  moduleType = priceDiscLine.moduleType();
    ;

    while select sum(LineAmount) from priceDiscLine
                 group by ItemId
                 where priceDiscLine.SalesPurchId   == this.SalesPurchId
                    && priceDiscLine.ItemId
                 join inventTableModule
                      group by EndDisc
                      where inventTableModule.ItemId     == priceDiscLine.ItemId  &&
                            inventTableModule.ModuleType == moduleType            &&
                            inventTableModule.EndDisc    == NoYes::Yes
    {
        balanceEndDisc += priceDiscLine.LineAmount;
    }

.........................................
Зачем такой сложный расчёт balanceEndDisc?
Явно не для производительности...
Разве это не эквивалентно чему-то вроде вот этого: (или я туплю?)
X++:
          select sum(LineAmount) from priceDiscLine
                 where priceDiscLine.SalesPurchId   == this.SalesPurchId
                    && priceDiscLine.ItemId
                 join tableId from inventTableModule
                      where inventTableModule.ItemId     == priceDiscLine.ItemId  &&
                            inventTableModule.ModuleType == moduleType            &&
                            inventTableModule.EndDisc    == NoYes::Yes;

          balanceEndDisc = priceDiscLine.LineAmount;
__________________
Zhirenkov Vitaly