Идеология форм-историй



Posted by Васеленко Сергей, Фирма КАРДИНАЛ on January 06, 1999 at 02:33:30:

In Reply to: Некотоpые тонкости пpи pаботе с фоpмами-истоpиями posted by Аpкадий Водяник on January 05, 1999 at 08:00:03:

Главное отличие форм-историй от других механизмов программы - построение формы требует перерасчета баланса, операции за операцией.

Другие механизмы опираются на уже рассчитанные готовые данные.

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

Следующие моменты следует учитывать:

1. Другого механизма для форм-историй быть не может в принципе.
Поэтому время выполнения форм историй будет равно или больше времени пересбивки периода построения.

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

Но все равно, формы-истории никогда не сравнятся по скорости с другими механизмами, которые извлекают ГОТОВЫЕ ЗНАЧЕНИЯ ИЗ ПАМЯТИ.

2. Формы-истории это единственный механизм, который может дать значения других параметров после каждой операции.

Т.е. можно узнать значения параметров, экстра-параметров и фактов после выполнения каждой операции.

Я считаю, что это должно быть единственным оправданием для использования историй.

И требуется это только для решения специфических задач, типа отладки сложных форм.

Для построения бухгалтерских, аналитических отчетов лучше использовать новые механизмы ФБП.

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

Т.е. для специалиста написать форму анализа без затрагивания основной системы - пустяк.

Мысли по поводу разделов.

Разделы форм-историй:
PROLOG
EVERY DAY
EVERY OPERATION
EVERY DEBET
EPILOG

Раздел PROLOG
На сервере раздел можно выполнять до начала пересбивки и соответственно, разрешить использовать любые функции.
В UltraF баланс еще может быть не подсбит. Соответственно, значения этих функций не определены.
Выходит для совместимости, следует оставить как есть.

Раздел EVERY DAY
Сменилась дата, выполняй раздел.
Причем, я считаю надо оставить вызов раздела только для тех дат, в которых есть операции.
Всегда можно ввести переменную "предыдущая абсолютная дата". И для периода без операций, применить цикл FOR.

Т.е. вызов для пустых дат следует вообще отменить.

Раздел EVERY OPERATION
Раздел выполняется до расчета операции, т.е. значения после выполнения операции не доступны. Эти значения следует отлавливать на следующей операции или в разделе EPILOG.

Но ничего. Хотя логично дополнительно ввести новый раздел AFTER OPERATION.

Стоит вопрос: для операций с циклами вызывать один раз, или для каждой операции цикла.

Я бы вызывал один раз. Это соответсвует логике журнала - одна операция, а что там делается -разбирайтесь сами. Тем более, сейчас может быть любое количество проводок из файла-коэффициента.

Раздел EVERY DEBET
Раздел исполняется после каждой проводки дерева.

Есть доступ к проводкам и установкам значений параметров.

Вот этот раздел логичность потерял.
К проводкам доступ есть через ta-факты или собственные аналогичные факты.

Для этого, конечно, следует позаботиться об автоматической штамповке операций в UltraG.

Установка значений параметров вообще не нужна, т.к. к значениям есть доступ [ep ] в разделе EVERY OPERATION следующей операции (или AFTER OPERATION текущей операции).

А этот раздел и есть как раз камень преткновения. Т.к. для него еще не полностью выполнен файл-коэффициент с массивами (их необходимо удерживать) и выполнять форму.

Раздел EPILOG
Замечательный раздел.

ВЫВОДЫ.

Формы-истории очень мощный механизм обработки журнала и рассчитанных значений по итогам каждой операции.

Полных аналогов для данного механизма нет.

Убрать формы-истории можно только временно, т.к. выход новой версии с новыми механизмами гораздо более важная задача.

Совсем убирать формы-истории - это лишить программу супер-механизма для программистов и специальных отчетов.

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

Для простоты и ясности форм-историй, желательно ввести новый раздел AFTER OPERATION и модифицировать раздел EVERY DAY.



Пpишедшие ответы: