Язык Описания Экономических Расчетов – Идея Программы

Основная цель данной статьи – не получение инвайта, а возможность поделиться идеей и получить комментарии о ее целесообразности и перспективах от сообщества специалистов.

(Инвайт на эту статью я уже получил - спасибо неизвестному хабровому другу) Я когда-то работал программистом в проектном институте на экономическом факультете.

Мы сделали экономические расчеты для крупной организации (Башнефть).

Я обеспечил техническую поддержку этих расчетов.

Я столкнулся с тем, что по-настоящему удобного инструмента для этих целей не существует. У меня возникла идея такого инструмента — специального декларативного языка, напоминающего Пролог, — языка описания экономических расчетов.

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

То есть что-то вроде: Прибыль = Выручка – Затраты Доход = Цена за единицу продукта * Количество_продукта И т. д. Пользователь описывает расчет в виде таких формул, а затем задает цель, то есть то, что ему нужно на самом деле посчитать.

После этого система строит дерево расчета.

Например, если нам нужно рассчитать прибыль, мы должны сначала рассчитать выручку и затраты.

Для расчета выручки необходимо определить цену за единицу продукции и количество продукции.

Для описания реальных экономических расчетов этот язык необходимо расширить.

Должны быть предусмотрены следующие возможности: 1. Извлечение данных из базы данных 2. Предоставьте описания различных вычислений в зависимости от контекста.

Для этого в язык вводятся следующие сущности: 1. Формулы с условиями: Перед группой формул или перед отдельной формулой можно поставить условие, при котором эту формулу можно использовать.

2. Источники данных: Выборки из базы данных предприятия, по которому происходит расчет. (Стандартный источник данных: запрос SQL, таблица DBF, файл csv и т. д.) Имя, поля – строковые, числовые, даты.

Источники данных используются только в функциях получения данных из базы данных.

3. Функции: Стандартная математика Работа с датами Извлечение данных из базы данных Агрегирующие функции: сумма, максимум, минимум и т.д. 4. Теги: Типы тегов: Число дата Куча Линия Теги нужны для описания контекста вычислений: Любой экономический расчет производится в некотором контексте: Под конкретный объект (Предприятие, цех, отдел.

), за определенный период-дату.

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

Для всего этого используется механизм тегов, их наследования и модификации.

То есть в самом начале расчета указывается список тегов, описывающих контекст расчета.

Прежде всего, это объект расчета (все предприятие или какое-либо из подразделений, дата и период, за который производится расчет).

В формулах есть возможность изменять теги контекста, изменять или добавлять теги.

В первой формуле следующего примера в строке: Прибыль = Сумма(Прибыль[Тип_Объекта=Мастерская], Код_Объекта=Набор_Извлечения(Список_Магазин, Код_Объекта, Родительский_Код=Код_Объекта)) В подстроке Прибыль[Object_Type=Цех] значение тега Object_Type меняется с НГДУ на Цех, так что дальнейшие расчеты проводит цех, а сумма этих расчетов попадает в ОГДУ.

Строка вида {[Object_Type=NGDU] означает, что все формулы в фигурных скобках можно использовать только в том случае, если Object_Type=NGDU. Пример: {[Object_Type=NGDU] Прибыль = Сумма(Прибыль[Тип_Объекта=Мастерская], Код_Объекта=Набор_Извлечения(Список_Магазин, Код_Объекта, Родительский_Код=Код_Объекта)) } {[Object_Type=Мастерская] Прибыль = Добыча_Нефти*Цена_Нефти – Расходы Добыча_Нефти=Сумма(Добыча_Нефти[Тип_Объекта=Скважина], Код_Объекта = Набор_Извлечения(Список_Скважин, Код_Объекта, Родительский_Код=Код_Объекта, Тип_Скважины=Нагнетание)) } {[Object_Type=Ну] Добыча_Нефти = Получить_Значение (Добыча_по_скважине, Добыча, Код_Скважины=Код_Объекта, Дата=Дата_Расчета) } Этот пример определяет: Прибыль нефтегазодобывающего цеха – это сумма прибыли входящих в него цехов.

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

Добыча нефти по цеху определяется как сумма добычи по скважинам.

Также подразумевается наличие 3-х источников данных – таблиц выборок из базы данных предприятия: Список цехов представляет собой таблицу как минимум с двумя полями Object_Code и Parent_Code, определяющими, какой цех какому НГДУ принадлежит. Список скважин – аналог списка цехов, таблица, определяющая принадлежность скважин цехам.

Данные о добыче скважин за период – таблица минимум с 3 полями: Добыча, Ну_Код, Дата.

Чтобы запустить расчет для НГД с кодом 1, нужно ввести что-то вроде: Object_Type=НГДУ Код_объекта=1 Calculation_Date='01.01.2009' ? Выгода Основное ядро состоит из 3 модулей: 1.Редактирование формул для расчетов 2. Окно запроса 3. Модуль подключения источников данных.

Это вычислительное ядро.

Для удобства его можно расширить сервисными функциями.

Например, мне наиболее актуальными кажутся следующие варианты: 1. Запрос в виде таблицы, а не одного значения 2. Возможность ввода информации об объектах расчета не по кодам, а по именам, то есть организация справочников.

И т. д. Преимущества этого подхода: 1. Гибкость – после проведения расчета его можно легко переделать интуитивно понятным способом.

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

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

2. Универсальность – можно произвести расчет, который будет брать информацию из разных источников.

Очень актуально для крупных организаций, состоящих из множества относительно независимых «дочерних компаний».

3. Прозрачность – для любого конечного значения можно построить дерево расчета и показать все промежуточные значения.

Актуально для больших проектов, в которых неизбежны ошибки, первопричину которых обычно сложно найти.

Минусы: 1. Сложность обучения.

Тем не менее, это совершенно новый язык, хотя и довольно простой.

2. Сложность настройки расчетов.

Для небольших вычислений этот метод может оказаться слишком громоздким.

Есть еще одна проблема, которая останавливает меня от дальнейших шагов по реализации этого проекта.

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

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

Может быть, здесь есть те, кто ими владеет и кому интересна эта идея? Теги: #язык программирования #стартап #идея для стартапа #идея для стартапа #Пролог #занимаюсь пиаром

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.