Есть в Axapte 3 SP6 class LedgerRRGOperationBalanceTotal_RU метод 
X++:
public AmountMST calc()
{
    AmountMST   sumTmp, balanceAmountMST;
    balanceAmountMST = 0;
    if (m_PEriodType == LedgerRRGBalancePeriodType_RU::Incoming)
        m_CalculateDate -=  1;
    while select  m_AccountList
    outer join    m_LedgerTrans
        where m_LedgerTrans.TransDate  <= m_CalculateDate          &&
              m_AccountList.AccountNum == m_LedgerTrans.AccountNum &&
              m_LedgerTrans.PeriodCode == PeriodCode::Regular
    {
        if (this.checkTransaction(m_LedgerTrans.TransType,
                                  m_LedgerTrans.OperationsTax,
                                  m_LedgerTrans.Correct,
                                  m_LedgerTrans.Dimension,
                                  ''))
        {
            if (m_currencyForCalc == LedgerRRGCurrencyForCalc_RU::AmountMST)
            {
                sumTmp = m_LedgerTrans.AmountMST;
            }
            else
            {
                sumTmp = m_LedgerTrans.AmountMSTSecond;
            }
            balanceAmountMST    += (m_AccountList.ReverseSign ? (-1) : 1) * sumTmp;
        }
    }
    return  balanceAmountMST;
}Как его можно оптимизировать? Ощутимо долго цикл пробегается по LedgerTrans, да при этом еще вызывает postLoad каждый раз.