Приветствую всех! Если кто решил провести выходные в обнимку с финансовым моделированием и экселем, то вот вам пост в сочувствие.
Архитектура
Идеология: Конструктор нацелен на максимальную свободу построения и расчета модели, подобно MS Excel. В дополнение к возможностям Excel здесь реализована возможность интеллектуальной настройки расчета элементов модели.
Интеграм – низкоуровневый конструктор баз данных и веб-приложений, на котором сконфигурирован данный прикладной конструктор моделей, все настройки и данные хранятся в таблицах Интеграма
Модель хранится в таблице Финмодель, у которой есть подчиненные таблицы: листы модели, панели (таблицы) на листах, строки (статьи) в панелях.
Исходные данные, в основном, хранятся в таблице Значения, но могут извлекаться из любой таблицы Интеграма, а также запрашиваться извне по АПИ в момент расчета модели..
Служебные запросы собирают данные по модели и основным исходным данным.
Пользовательские запросы собирают дополнительные исходные данные, выдавая их в формате, понятном модели.
Расчетные группы – основной элемент построения модели, из которого строятся её таблицы: строки и колонки. Расчетная группа задает правило формирования колонок таблиц.
Принцип построения: табличный процессор, таблицы в котором могут состоять из произвольного набора строк и колонок, которые пользователь выбирает из базы данных или рассчитывает на лету
Старт – дата начала для расчета модели
Финиш – дата окончания расчета
Период – регулярность расчета показателей модели/листа/таблицы
Единица измерения – задается на уровне строки или значения
Общие сведения
Модель максимально близко повторяет типичный подход, применяемый пользователями в MS Excel и других электронных таблицах: листы с данными и связующие формулы.
Модель хранится в виде настроек в таблицах Интеграма.
На листе может быть несколько панелей, каждая из которых – это таблица с заданным строками:
У модели есть кнопка «ФМ», которая запускает расчет этой модели, в таблице моделей:
И на форме редактирования модели:
Строки таблиц модели
Строки таблиц имеют свои параметры: формулы, значения, форматы, уровень иерархии и т.п. Для каждой строки можно задать правила вычисления её содержимого.
Адресация данных
Здесь возможно следующее:
1. Сослаться на одноименное значение в таблице исходных данных
2. Сослаться на произвольное значение в таблице исходных данных
3. Записать формулу для вычисления из других строк
4. Жестко задать значение
5. Сделать ссылку на справочное значение
Как видно на картинке, адресация ячеек модели происходит путем упоминания ID или имени строки модели в квадратных скобках. В формулах строк можно написать любое математическое выражение с использованием имен или ID. Также можно применять различные функции, список которых легко расширить при необходимости, просто обратившись к команду Интеграма.
Все эти данные попадут на лист модели, когда мы её откроем:
В случае проблем с расчетом, ошибочные ячейки будут подсвечены и можно будет отследить источник ошибки, наведя курсор на подсвеченное место, и исправить её.
Исходные данные
Исходные значения могут храниться в любой таблице Интеграма, их можно получать оттуда запросами, указав имя запроса и имя нужного поля в формулах полей:
Запрос Капс вернет множество записей актуальных на период, указанный в модели. Через точку после имени запроса указывается имя поля, из которого необходимо брать данные в эту ячейку, например, Капс.влож будет использовать колонку влож из отчета Капс.
Первая колонка запроса – это дата актуальности значения, и модель разнесет все эти значения по соответствующим календарным срезам, просуммировав значения, если их несколько за период.
Повторяющиеся расчетные группы (РГ)
Существуют такие типы групп, и этот набор будет незначительно расширяться:
Повторяющаяся группа (простая)
Группа (RG) Repeating group повторяется столько раз, сколько периодов расчета укладывается в указанный для модели диапазон расчета. Период расчета (неделя, месяц, квартал, год) задаются на уровне самой модели, а также могут быть указаны для любой её панели:
В этой панели в колонке RG мы видим 2 повторяющиеся группы, одна из которых – это простая группа:
В первой колонке (N) указан порядковый номер группы на панели – так их увидит пользователь, а во второй колонке (RG) указан номер по порядку создания группы.
Для заданного периода (Год) в диапазоне модели (01.01.2025 – 31.12.2030) будет выведено 6 повторений группы, по одному на каждый год:
Группа Единицы измерения
Эта группа представлена единственной колонкой, в которой выводится найденная единица измерения для значения текущей строки. Единица измерения может быть указана на уровне строки модели (она идет с высшим приоритетом):
Также единицу измерения можно указать в таблице исходных данных:
Группа значений
Самая простая группа, для которой создается единственная колонка данных, заполняемая данными из самой строки или записанной в строке модели формулы.
Например, такая комбинация строк панели с её повторяющимися группами
Приведет к такому результату при расчете модели – см. Колонку Значение:
Произвольная группа
Вместо выбора стандартной группы можно указать запрос, который выдаст произвольный набор для создания колонок таблицы как источник для повторяющейся группы.
Например, если требуется создать матрицу строк выпускаемой продукции (строки таблицы) и отраслей, которые участвуют в её производстве (столбцы), то мы укажем запрос со списком отраслей как источник списка колонок для группы:
В строках панели при этом указывается список видов продукции:
В таблице исходных значений следует разместить известные значения для комбинаций отраслей и типов продуктов:
В результате, в модели мы увидим требуемую межотраслевую матрицу с этими значениями:
Пользовательские запросы
Для выборки исходных данных для модели пользователь может извлекать данные из любых таблиц системы посредством конструктора запросов.
Первая колонка запроса должна содержать дату актуальности данных, о остальные – сами данные.
Здесь начинается более продвинутая тема, и мы рассмотрим её в следующей статье. Спасибо, если кто вдруг досюда дочитал предыдущие 10 килосимволов.