Показать сообщение отдельно
Старый 08.01.2003, 13:27   #1  
Lihgt is offline
Lihgt
Участник
 
46 / 70 (3) ++++
Регистрация: 16.04.2002
Адрес: Москва
Оптимизация класса Tax
Постановка задачи:
На основании модификации, полученной из офиса Колумбуса, изменить механизм расчета налогов при проведении накладной для повышения производительности.

Модификация:
В классе Tax изменен метод adjustAmount
PHP код:
void adjustAmount(ExchRate   _exchRate,
                  
ExchRate   _exchrateSecondary)
{
    if (
_exchRate)
    {
        
ttsbegin;

        while 
select forupdate taxWorkTrans
        where taxWorkTrans
.headingRecId  == headingRecId         &&
              
taxWorkTrans.exemptTax     == NoYes::No
            
// Оптимизация расчета налогов (c) KURA -->
           
&& taxWorkTrans.SourceRecId   == this.sourceRecId()
            
// Оптимизация расчета налогов (c) KURA <--
        
{
 ... 
Что мне известно по этой теме:
Действительно, при расчете налогов по многострочным заказам (закупкам) класс Tax делает очень много пересчетов суммы налогов. Особенно хорошо это видно, если на данную операцию натравить профайлер - Аксапта "уйдет в себя" на продолжительное время. Данная модификация должна решить эту проблему, но есть вопросы.

Вопросы:
1. Какой выигрыш в производительности может дать такое изменение кода?
2. Как это скажется на потомках Tax-а и на расчете "withoutSource"?
1+2 Стоит ли игра свеч, а результат труда (с учетом анализа своих потомков Tax-а)?
3. Кто-дь использует у себя такую оптимизацию?
4. Если все хорошо, то почему ее нет в SP и HF?

P.S. Не знаю как эта тема согласуется с авторскими правами.
P.S.S. Сам еще на занимался плотным анализом механизмов класса Tax и потомков. Поэтому, будет интересна любая инфа по теме.