Показать сообщение отдельно
Старый 05.06.2007, 10:22   #43  
kashperuk is offline
kashperuk
Senior SDE, Dynamics AX
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,353 / 2061 (77) +++++++++
Регистрация: 30.05.2004
Адрес: Копенгаген, Дания
Вчера наткнулся в методе Classes\InventAdjustPost\updateTotal на очень удививший меня код.

X++:
protected  void updateTotal()
{
    InventSettlement        inventSettlement;
    InventTrans             inventTrans;
    ProjLedger              projLedger;

    while select forcePlaceHolders forceSelectOrder sum(costAmountadjustment) from inventSettlement
        index hint DateVoucherIdx
        group by itemId,balanceSheetPosting,balanceSheetAccount,operationsPosting,operationsAccount,dimension
        where inventSettlement.transDate              == transDate    &&
              inventSettlement.voucher                == voucher      &&
              inventSettlement.costAmountAdjustment   != 0            &&
              inventSettlement.InventTransCurrency_RU == inventTransCurrency &&
              inventSettlement.posted                 == NoYes::No
    join inventTrans
        index hint recId
        group projId,projAdjustRefId,inventTransId
        where inventTrans.RecId == inventSettlement.TransRecId
    {
        if (correspondenceEnable)
        {
            this.updateMap_RU(inventSettlement,inventTrans);
        }
        else
        {
            projLedger = this.newProjLedger_RU(inventTrans.ProjId,
                                               inventTrans.InventTransId,
                                               inventTrans.ProjAdjustRefId);
            this.updateTrans(inventSettlement, ledgerVoucher,projLedger);
        }
    }
    this.updateTrans_RU();
}
Обратите внимание на группировку в join запросе по inventTrans - там используется group, но нету by

Это вообще нормально??