Показать сообщение отдельно
Старый 10.04.2013, 09:51   #9  
avm is offline
avm
Участник
 
6 / 10 (1) +
Регистрация: 25.02.2003
Для себя решили проблему путем внесения изменения в метод post класса LedgerVoucher.
X++:
                  if (reversal && sourceRecid && !correspondenceEnabled)
//                if (reversal && sourceRecid)  mav bugFix
                {
                    ledgerTrans.reverseSettlement(sourceRecid);
                }
При сторнировании проводки в форме "Проводки по счету" вызвав пукнт меню "Сторнировать проводку", переменная sourceRecid равна recId сторнируемой проводки. Далее происходит поиск предыдущего сопоставления сторируемой проводки с последующим удалением найденного сопоставления и создание нового сопоставления сторнируемой проводки со сторно проводкой.

Результат сопоставленные проводки не переоцениваются алгоритмом курсовой разницы (КР) счетов ГК.
Ниже код из класса LedgerExchAdj метода run().
X++:
                while select ledgerTrans
                    where ledgerTrans.AccountNum   == ledgerTable.AccountNum   &&
                          ledgerTrans.TransDate    >= searchDate               &&
                          ledgerTrans.TransDate    <= toDate                   &&
                         (ledgerTrans.CurrencyCode >= fromCur || ! fromCur)  &&
                         (ledgerTrans.CurrencyCode <= toCur   || ! toCur)
                    notexists join legderTransSettlement 
                       where ledgerTrans.RecId == legderTransSettlement.TransRecId
Если возникнет потребность исключить из расчета КР проводки, можно их сопоставить в форме сопоставлений проводок ГК.