Показать сообщение отдельно
Старый 09.02.2011, 14:01   #1  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Анализ счета обрезает копейки у сумм достигающих миллиарда и больше в стандартной AX2009
Если смотреть Анализ счета за Год, то суммы бывают достаточно приличные. И очень не приятно когда обрезаются хвосты. Все дело в том, что тип AmountMSTLong стал иметь свойство DisplayLenght() == 15, вместо 20 как было в 3-ей версии.
Если ничего не трогать то в классе RLedgerSheetEngine_AccountReview :

метод InsertRow() вместо
X++:
//BP Deviation documented
    formListItem = new FormListItem(strRFix(strfmt("%1", amount), amountDictType.displayLength()));
    formListItem.subItem(#Value2);
    formListItem.idx(idx);
    listControl.setItem(formListItem);

    amount = ledgerTransCredit.exists(rowAccount) ? ledgerTransCredit.lookup(rowAccount) : 0;

    //BP Deviation documented
    formListItem = new FormListItem(strRFix(strfmt("%1", amount), amountDictType.displayLength()));
    formListItem.subItem(#Value3);
    formListItem.idx(idx);
    listControl.setItem(formListItem);
надо поставить :
X++:
//BP Deviation documented
    // kos 3 - 2009 обрезает копейки у миллиардов и больше
    //formListItem = new FormListItem(strRFix(strfmt("%1", amount), amountDictType.displayLength()));
    formListItem = new FormListItem(strfmt("%1", amount), amountDictType.displayLength());
    // kos 3 - 2009 обрезает копейки у миллиардов и больше
    formListItem.subItem(#Value2);
    formListItem.idx(idx);
    listControl.setItem(formListItem);

    amount = ledgerTransCredit.exists(rowAccount) ? ledgerTransCredit.lookup(rowAccount) : 0;

    //BP Deviation documented
    // kos 3 - 2009 обрезает копейки у миллиардов и больше
    //formListItem = new FormListItem(strRFix(strfmt("%1", amount), amountDictType.displayLength()));
    formListItem = new FormListItem(strfmt("%1", amount), amountDictType.displayLength());
    // kos 3 - 2009 обрезает копейки у миллиардов и больше
    formListItem.subItem(#Value3);
    formListItem.idx(idx);
    listControl.setItem(formListItem);
в методе addTotalRow() вместо
X++:
//BP Deviation documented
    formListItem = new FormListItem(strRFix(strfmt("%1", turnoverDebit), amountDictType.displayLength()));
    formListItem.subItem(#Value2);
    formListItem.idx(idx);
    listControl.setItem(formListItem);

    //BP Deviation documented
    formListItem = new FormListItem(strRFix(strfmt("%1", turnoverCredit), amountDictType.displayLength()));
    formListItem.subItem(#Value3);
    formListItem.idx(idx);
    listControl.setItem(formListItem);

    formListItem = new FormListItem("@GEE7654", #Value3);
    formListItem.idx(listControl.getCount() + 1);
    idx = listControl.addItem(formListItem);

    amount = initialBalance + turnoverDebit - turnoverCredit;
    amount = amount > 0 ? amount : 0;
    //BP Deviation documented
    formListItem = new FormListItem(strRFix(strfmt("%1", amount), amountDictType.displayLength()));
    formListItem.subItem(#Value2);
    formListItem.idx(idx);
    listControl.setItem(formListItem);
    amount = initialBalance + turnoverDebit - turnoverCredit;
    amount = amount < 0 ? - amount : 0;
    //BP Deviation documented
    formListItem = new FormListItem(strRFix(strfmt("%1", amount), amountDictType.displayLength()));
    formListItem.subItem(#Value3);
    formListItem.idx(idx);
    listControl.setItem(formListItem);
надо поставить
X++:
//BP Deviation documented
    // kos 3 - 2009 обрезает копейки у миллиардов и больше
    //formListItem = new FormListItem(strRFix(strfmt("%1", turnoverDebit), amountDictType.displayLength()));
    formListItem = new FormListItem(strfmt("%1", turnoverDebit), amountDictType.displayLength());
    // kos 3 - 2009 обрезает копейки у миллиардов и больше
    formListItem.subItem(#Value2);
    formListItem.idx(idx);
    listControl.setItem(formListItem);

    //BP Deviation documented
    // kos 3 - 2009 обрезает копейки у миллиардов и больше
    //formListItem = new FormListItem(strRFix(strfmt("%1", turnoverCredit), amountDictType.displayLength()));
    formListItem = new FormListItem(strfmt("%1", turnoverCredit), amountDictType.displayLength());
    // kos 3 - 2009 обрезает копейки у миллиардов и больше
    formListItem.subItem(#Value3);
    formListItem.idx(idx);
    listControl.setItem(formListItem);

    formListItem = new FormListItem("@GEE7654", #Value3);
    formListItem.idx(listControl.getCount() + 1);
    idx = listControl.addItem(formListItem);

    amount = initialBalance + turnoverDebit - turnoverCredit;
    amount = amount > 0 ? amount : 0;
    //BP Deviation documented
    // kos 3 - 2009 обрезает копейки у миллиардов и больше
    //formListItem = new FormListItem(strRFix(strfmt("%1", amount), amountDictType.displayLength()));
    formListItem = new FormListItem(strfmt("%1", amount), amountDictType.displayLength());
    // kos 3 - 2009 обрезает копейки у миллиардов и больше
    formListItem.subItem(#Value2);
    formListItem.idx(idx);
    listControl.setItem(formListItem);
    amount = initialBalance + turnoverDebit - turnoverCredit;
    amount = amount < 0 ? - amount : 0;
    //BP Deviation documented
    // kos 3 - 2009 обрезает копейки у миллиардов и больше
    //formListItem = new FormListItem(strRFix(strfmt("%1", amount), amountDictType.displayLength()));
    formListItem = new FormListItem(strfmt("%1", amount), amountDictType.displayLength());
    // kos 3 - 2009 обрезает копейки у миллиардов и больше
    formListItem.subItem(#Value3);
    formListItem.idx(idx);
    listControl.setItem(formListItem);
кстати у триллионов обрезаются уже рубли и т.д.
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
За это сообщение автора поблагодарили: Alexius (2).