2015-02-12 15:08:29
Краткое описание :
Ускорение расчета разницОписание :
АмортизацияЧто измененно :
Методика расчета разниц такова что, чтобы посчитать одну из 5 видов разниц по сути нужно посчитать все 5 видов разниц.
Получается, что при расчёте всегда (5раз) считается одно и то же, но для каждого вида разниц берётся одно из 5 рассчитанных значений.
Таким образом, можно молучить хорошее ускорение (до 5 раз), если бы алгоритм разниц выполнял вычисления один раз, при этом вычисляя сразу все разницы, возвращал в качестве результата не одно значение, а сразу 5.
ПРЕДЛАГАЮ рассмотреть следующие варианты ускорения расчета:
1) реализовать движок расчета разниц, который бы позволил получать из алгоиритма сразу 5 значений и который бы запускался однократно на карточку.
2) реализовать точку расширения, позволяющую заменить стандартный движок расчета разниц своим (вроде премудростей с генерацией новых OsRazn нет, этот вариант при использовании прикладным разработчиком функций DSQL может дать еще больший прирос в производительности!)
Как измененно :
Добавлена Точка расширения. Вызывается для расчета разниц по карточкам в указанный период.
ExtensionPoint epCalcRaznPick (_dDate: date; _wList: word; _KolOs : LongInt);
Вызывается из интерфейса Amort (расчет амортизации). Вызывается один раз для всех выбранных ИК.
Перед вызовом НЕ создается запись таблицы OsRazn для указанного периода. Но она создается при переходе на следующий период.
Операция корректировки разниц НЕ выполняется.
Амортизационная льгота рассчитывается согласно параметрам расчета амортизации.
Если обработчик точки расширения вернет FALSE, то алгоритмы расчета разниц не вызываются.
Параметры:
_dDate - дата расчета.
_wList - Pick.wList
_KolOs - количество выбранных карточек.