Показать сообщение отдельно
Старый 10.11.2011, 13:00   #30  
axalex is offline
axalex
Участник
 
91 / 14 (1) ++
Регистрация: 14.03.2011
Цитата:
Сообщение от AvrDen Посмотреть сообщение
Добрый день!
Периодически при разноске складских журналов возникает ошибка "Неправильное округление величины".
Ошибка возникает в InventJournalTrans/checkAmount
X++:
    if (this.CostAmount != Currency::amount(this.CostAmount))
        ok = checkFailed("@SYS2602");
В строке журнала поле CostAmount стоит сумма 8933,72
При этом в отладчике в поле CostAmount непонятно почему заносится очень странное значение(например 8933,719999999999), т.е. система не округлила сумму. При этом, если изменить в строке журнала сумму на 8933,73, то ошибка не возникает.
X++:
//исправление ошибки округления в складском журнале
static void InventJournalCostAmountRound(Args _args)
{
    InventJournalTrans  inventjournalTrans;
    InventJournalId     inventJournalId = "/*НОМЕР ЖУРНАЛА*/";
    ;

    ttsbegin;
    while select forupdate inventjournalTrans
        where inventjournalTrans.JournalId == inventJournalId
    {
        inventjournalTrans.CostAmount = Currency::amount(inventjournalTrans.CostAmount);
        inventjournalTrans.doUpdate();
    }
    ttscommit;
    info("Округление успешно");
}
__________________
С уважением, Алексей.
За это сообщение автора поблагодарили: vml (1).