Базовый драйвер DefaultTotalDriver

Драйвер DefaultTotalDriver служит базовым классом для всех остальных классов драйверов итогов. Он реализует интерфейс ITotalDriver и предоставляет ряд виртуальных методов, которые переопределяются в классах-потомках.

Базовый драйвер не хранит состояния и не предоставляет никакого алгоритма расчета для аналитических переменных и измерений, поэтому сам по себе он обычно используется только для оперативных и небалансовых итогов, где рассчитывать нечего.

Хотя драйвер и не рассчитывает аналитические данные самостоятельно, он все же умеет переносить информацию между парными транзакциями, которые заполнены несимметрично. Например, если в обрабатываемой паре транзакций есть измерение IncomeDocumentID, которое заполнено только в одной из двух транзакций, драйвер автоматически скопирует это значение во вторую транзакцию. При копировании переменных в парную транзакцию драйвер автоматически меняет знак.

Другое полезное свойство базового драйвера — умение симметрично расслаивать транзакции. Если при обработке пары транзакций в одном из итогов произошло расслоение, а в другом осталась одна транзакция, базовый драйвер разобьет эту транзакцию на то же самое количество фрагментов, симметрично разобьет значения переменных и проконтролирует, чтобы их общая сумма осталась прежней.

DevBookmark_Scripts Следующие свойства и методы базового класса DefaultTotalDriver можно (избирательно) переопределить в скрипте:

LoadTotalState — загрузить состояния итога на указанную дату;

CalculateIncomes — рассчитать приходные транзакции до полных;

CalculateOutcomes — рассчитать расходные транзакции до полных;

CanCalculateOutcome — сообщить, может ли драйвер самостоятельно рассчитать указанную расходную транзакцию до полной;

BeginDocument/EndDocument — вызывается в начале/конце расчета каждого документа;

BeginTransaction/EndTransaction — вызывается в начале/конце расчета каждой транзакции;

CheckVariableValues — флаг определяет, нужен ли контроль общей суммы переменных после расслоения транзакций.