Драйвер DefaultTotalDriver служит базовым классом для всех остальных классов драйверов итогов. Он реализует интерфейс ITotalDriver и предоставляет ряд виртуальных методов, которые переопределяются в классах-потомках.
Базовый драйвер не хранит состояния и не предоставляет никакого алгоритма расчета для аналитических переменных и измерений, поэтому сам по себе он обычно используется только для оперативных и небалансовых итогов, где рассчитывать нечего.
Хотя драйвер и не рассчитывает аналитические данные самостоятельно, он все же умеет переносить информацию между парными транзакциями, которые заполнены несимметрично. Например, если в обрабатываемой паре транзакций есть измерение IncomeDocumentID, которое заполнено только в одной из двух транзакций, драйвер автоматически скопирует это значение во вторую транзакцию. При копировании переменных в парную транзакцию драйвер автоматически меняет знак.
Другое полезное свойство базового драйвера — умение симметрично расслаивать транзакции. Если при обработке пары транзакций в одном из итогов произошло расслоение, а в другом осталась одна транзакция, базовый драйвер разобьет эту транзакцию на то же самое количество фрагментов, симметрично разобьет значения переменных и проконтролирует, чтобы их общая сумма осталась прежней.
Следующие свойства и методы базового класса DefaultTotalDriver можно (избирательно) переопределить в скрипте:
•LoadTotalState — загрузить состояния итога на указанную дату;
•CalculateIncomes — рассчитать приходные транзакции до полных;
•CalculateOutcomes — рассчитать расходные транзакции до полных;
•CanCalculateOutcome — сообщить, может ли драйвер самостоятельно рассчитать указанную расходную транзакцию до полной;
•BeginDocument/EndDocument — вызывается в начале/конце расчета каждого документа;
•BeginTransaction/EndTransaction — вызывается в начале/конце расчета каждой транзакции;
•CheckVariableValues — флаг определяет, нужен ли контроль общей суммы переменных после расслоения транзакций.