Драйверы итогов

DevBookmark_TotalDriver_Расчетом итогов занимается калькулятор итогов при участии драйверов итогов. Драйверы отвечают за расчет транзакций каждый своего итога, а процесс в целом координируется калькулятором. Калькулятор определяет интервал расчета и создает по экземпляру драйвера на каждый итог в системе (в расчете участвуют только итоги с двойной записью). Перед стартом расчета каждый драйвер загружает свое состояние на начало периода. Что такое состояние зависит от конкретного драйвера (например, для драйвера FIFO состояние это список имеющихся партий).

Во время расчета калькулятор итога параллельно загружает транзакции всех итогов, формирует из них пары и группирует в пакеты по документам. Документы обрабатываются последовательно в порядке, определяемом датой проведения. Загруженные транзакции передаются на обработку драйверам итогов, причем транзакции оперативных итогов просто копируются (поскольку в их случае расчет не требуется), а транзакции аналитических итогов сначала обрабатываются методами CalculateIncomes/CalculateOutcomes своих драйверов.

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

Любой драйвер может быть назначен нескольким итогам одновременно. Задача прикладного разработчика состоит в том, чтобы подобрать для итога один из драйверов стандартной конфигурации или реализовать собственный на основе базовых классов. В оперативных итогах, данные которых не требуют расчета, используется драйвер Default (идентификатор 7471).

Список всех драйверов итогов можно найти в справочнике "Total drivers":

TotalDrivers_ListForm

Окно справочника разделено на две части: слева отображается дерево групп драйверов итогов, справа — список драйверов выбранной слева группы.

Записи справочника можно фильтровать по Названию драйвера (Name) и Тегам (Tag).

Открыть скрипт выбранного драйвера итогов в форме редактирования можно прямо из списковой формы справочника, выбрав пункт Edit script в контекстном меню.

Драйвер итогов обладает следующими свойствами:

TotalDrivers_EditForm

Name — название драйвера;

Description — описание драйвера;

Base class — базовый класс драйвера. Выбирается исходя из специфики итога, для расчета аналитических данных которого используется драйвер. Существуют следующие базовые классы:

DefaultTotalDriver — используется по умолчанию для итогов, в которых расчет данных не требуется;

FifoTotalDriver — реализует расчет себестоимости по методу FIFO (первый пришел — первый ушел). Соответственно используется для драйверов итогов, аналитической переменной которых является себестоимость;

MoneyTotalDriver — разновидность класса FifoTotalDriver, у которого вместо переменной Quantity используется переменная CurrencyAmount. Используется для драйверов итогов, аналитической переменной которых являются наличные денежные средства;

CashlessMoneyTotalDriver — разновидность MoneyTotalDriver, который может уходить в минус. Используется для драйверов итогов, аналитической переменной которых являются безналичные денежные средства;

MarginTotalDriver — базовый класс для драйверов итогов реализации (товаров или услуг) и конвертации (валют);

CurrencyExchangeTotalDriver — базовый класс для драйвера обмена валюты.

Script — ссылка на скрипт. При создании нового драйвера итога скрипт создается автоматически при его сохранении. Нажатие на ссылку Click here to edit the script... при создании нового драйвера итогов приведет к сохранению драйвера и его перезагрузке, затем откроется форма редактирования скрипта;

Folder — группа, которой принадлежит драйвер;

Metadata tags — теги, используемые для описания функционала драйвера;

Developer's comments — комментарии прикладного разработчика.