4. Расчетная система

Расчетная система JetCalc в самом первом приближении очень похожа на электронную таблицу, например, MS Excel, в которой часть ячеек являются первичными значениями, которые вводятся с клавиатуры или загружаются из внешних источников, значения же других ячеек рассчитывается по формулам, которые могут ссылаться как на ячейки с первичными значениями, так и на ячейки с формулами.
Вместе с тем, расчетная система JetCalc изначально ориентирована на работу с большим объемом данных через интернет с возможностью быстрого внесения изменений моделей предметных областей. Поэтому для расчетной системы JetCalc характерны следующие особенности:
  1. 1.
    Наименование кодов строк и колонок создаются пользователями системы JetCalc и, как правило, код строки или колонки содержат в себе предметную логику. Например, вместо ячеек с кодами вида R11C4 (или D11) как в электронных таблицах, в системе JetCalc используются ячейки вида [email protected]?, где $f105215 - код строки (строка 215 формы f105), @On - код колонки (остаток на начало), ? - завершающий символ.
  2. 2.
    В системе JetCalc каждая ячейка имеет шесть измерений - строка, колонка, год, период, объект учета, валюта - поэтому полный синтаксис ссылки на ячейку, представленной в предыдущем пункте, будет выглядеть следующим образом: [email protected]#210[RUB]?, где .Y2017 - 2017 год, .P11 - период 11 (январь), #210 - предприятие с кодом 210, RUB - код валюты рубль.
  3. 3.
    Значения ячеек в системе JetCalc вычисляются в контексте ячейки, состоящего из пяти параметров - строка, колонка, год, период и объект учета. Текущий открытый документ определяет контекст документа, состоящего из трех параметров - год, период и объект учета. В свою очередь, на уровне колонок контекст текущего открытого документа может переопределяться полностью или частично.
  4. 4.
    При совпадении отдельных параметров ячейки с ее контекстом эти параметры ячейки могут не указываться, например, если для документа установлен период 11, год 2017 и объект учета 210, то вместо полного кода [email protected]#210? можно использовать код [email protected]?
  5. 5.
    В отличие от электронных таблиц, у которых для каждой ячейки определяется собственная формула, в системе JetCalc формулы определяются на уровне строк и колонок. Формула ячейки определяется в контексте ячейки путем добавления в формуле строки или колонки для каждой ссылки на другие ячейки недостающих параметров. При наложении формульных строк и колонок выбор формулы для ячейки определяется приоритетностью строки и колонки в контексте ячейки.
  6. 6.
    Для каждой первичной ячейки в базе данных хранится четыре значения: одно в учетной валюте организации и три - в валюте отчетности. Количество учетных валют не ограничено, при этом количество отчетных валют в текущей версии ограничено тремя. Значение в учетной валюте организации сохраняется как есть при вводе данных, а значения в валютах отчетности автоматически пересчитывается по таблице курсов валют и сохраняется в базу данных без участия пользователя.
  7. 7.
    Валюта, в которой выводятся значения ячеек в текущем документе, определяется на уровне документа в целом. Для отдельных ячеек валюта может быть переопределена путем указания кода валюты в квадратных скобках перед вопросительным знаком, например: [email protected][USD]?
  8. 8.
    В системе JetCalc реализованы три механизма расчета суммовых итогов по строкам - на основе нахождения а) суммы по дочерним узлам дерева текущего документа, б) суммы значений первичных строк по строкам всех документов, содержащих суммовую метку, в) суммы значений строк по строкам всех документов, содержащих атрибуты строк, перечисленных в функции фильтрации.
  9. 9.
    Расчетная системе JetCalc позволяет агрегировать показатели нескольких объектов учета по перечню их атрибутов, среди которых можно выделить тип и класс объекта учета, дивизион, отрасль и регион, группа объектов учета, а также родительский объект учета. В процессе агрегации отдельные атрибуты объектов учета могут определятся в функции фильтрации как входящие в агрегат, так и исключаемые из него.
  10. 10.
    В расчетной системе JetCalc реализован механизм оптимизации производительности посредством автоматического сохранения значений отдельных ячеек, вычисляемых по формуле, в виде первичных значений. При этом ссылки на эти ячейки из других формул возвращают ранее сохраненное первичное значение, а не результат вычислений. Данный механизм оптимизации определяется пользователем системы в процессе настройки формул строк и колонок.
  11. 11.
    Еще одним механизмом оптимизации производительности расчетной системы JetCalc является предварительное упрощение формул, в которых есть ссылки на другие формульные ячейки и условные выражения, до формул, в которых есть только ссылки на первичные значения, а условные выражения приведены в текущему контексту вычисления ячеек. Упрощенные формулы сохраняются в оперативной памяти и далее используются до момента изменения настроек расчетной системы. Данный механизм оптимизации выполняется автоматически при первом открытии документа в текущем контексте документа.