Модуль выполнения расчета ячеек
Реализация модуля находится в файле ./classes/calculator/AssoiCalculatorHelper.js.
При инициализации передается результат работы предыдущего модуля Unmapper
Логика работы заключается в следующем.
Загружаются все первичные переменные используемые в формулах LoadPrimaries
Вызывается рекурсивно функция _calculate, которая пробегает по всем не посчитанным переменным из hash-таблицы HowToCalculate, проверяет, что может их вычислить (все переменные, необходимые для вычисления, находятся в hash-таблице Calculated) с помощью функции _isCalculateble, вычисляет их с помощью функции _calculateFormula, заносит результат в hash-таблицу Calculated и исключает переменную из hash-таблицы HowToCalculate. Функция выполняется до тех пор пока все переменные не будут посчитаны
После окончания вычислений происходит фильтрация результата - FilterResults (отсеиваются промежуточные переменные - не запрошенные пользователем для расчета документа)
Возможные доработки:
В качестве оптимизации вычислений, можно упорядочить ячейки таким образом, чтобы вычисление произошло за 1 проход без рекурсий.
Вынести значения кодов валют для первичных ячеек в настройки системы
Информация о первичных ячейках возвращает IdUser (пользователя, который внес информацию). Необходимо переделать его на CodeUser.
Реализовать функцию возврата первичных значений в PostgreSQL с поддержкой механизма распараллеливания вручную через индекс по функции
При запросе первичных ячеек учитывать, что некоторые переменные требуют перевода валюты .tovaluta('NONE') в старом синтаксисе и ['NONE'] - в новом.
Last updated
Was this helpful?