Немного «философии» с хабры на тему «есть альтернатива Экселю» и «всех спасет OpenSource))))))))
В последние годы тема экономического планирования и анализа становится все более актуальной. Но одновременно становится все более очевидной неэффективность реализации этих функций в дорогих и масштабных ERP-системах, в которых их наличие изначально предполагается (об этом даже говорит буква P «Planning» в аббревиатуре таких систем). Несмотря на огромные бюджеты и титанические усилия по внедрению ERP-систем экономические подразделения средних и крупных предприятий как работали, так и продолжают работать в электронных таблицах, преимущественно MS Excel.
В чем же причина такого положения дел? Неужели все дело в инертности экономистов? Или Microsoft удалось создать действительно уникальный продукт с точки зрения удобства и эффективности его применения в реальной бизнес-среде? Ну и робкий вопрос в конце, вынесенный в заголовок статьи — а есть ли альтернатива Excel?
Чтобы ответить на эти вопросы, прежде необходимо разобраться, в чем же заключается специфика экономического планирования и анализа, монополию на обеспечение которых держит Excel. Коротко ответ на этот вопрос заключается в одном слове – ВРЕМЯ. Это время, которое необходимо руководителям компаний любого уровня для принятия управленческого решения, на которое, в зависимости от масштаба проблемы, отводится от нескольких минут до нескольких дней.
Проще всего данный тезис продемонстрировать на примере процесса разработки и утверждения годового плана (бюджета) на очередной финансовый год. Данный процесс реализован в любой современной компании и предназначен не для угадывания своего будущего (широко распространенное заблуждение), а для контроля высшим руководством за процессом распределения отграниченных ресурсов (инвестиции, штатная численность персонала, лимиты кредитования и т.п.) между линейными и функциональными подразделениями компании в рамках бюджета на очередной финансовый год.
Воронка продаж: делаем автоматически обновляемый отчет из базы данных с помощью Excel
В отличие от регулярных процедур, таких как начисление налогов, выплата заработной платы, формирование финансовой и статистической отчетности, процесс разработки бюджета выполняется один раз в год и жестко ограничен временными рамками. Начало бюджетного процесса обычно начинается в октябре, когда уже доступна информация (хотя бы предварительная) о фактических результатах работы за 9 месяцев текущего года. Типовая схема любой бюджетной таблицы обычно содержит информацию об ожидаемых результатах за текущий год (по схеме факт 9 месяцев + ожидаемое 4 квартала), планируемых результатах на следующий год и отклонениях (абсолютных и относительных) для контроля динамики изменения показателей. В течение октября-ноября подразделения компании разрабатывают собственные бюджеты, а затем в декабре происходит их рассмотрение и утверждение руководством компании или головной организации.
В процессе разработки бюджетов может разрабатываться несколько их вариантов для различных сценариев внешней среды с учетом внутренних целей и задач компании. Тем не менее, в конечном счете выбирается основной (базовый) сценарий, по которому рассчитываются бюджеты всех подразделений. Конечным результатом данного процесса является консолидированный бюджет в целом по компании (группе компаний), в упрощенном виде являющийся суммой бюджетов всех входящих в компанию подразделений.
На практике при разработке бюджета каждое подразделение руководствуется принципом: «Проси больше, получишь в самый раз». Следствием такого принципа является дефицит сводного бюджета, когда планируемых доходов не хватает, чтобы покрыть запланированные расходы. Поэтому в любом бюджетным процессе на заключительном этапе всегда выполняется балансировка бюджета, заключающаяся в установлении более напряженных планов по доходам и срезание отдельных видов расходов тем или иным подразделением и статьям. Естественно, с последующим пересчетов всех планов и формированием консолидированного бюджета. И таких пересчетов с последующей консолидацией может быть столько, сколько нужно для сведения доходов и расходов в ноль.
Но это еще не все. На трудоемкую, но технически решаемую задачу многократного пересчета и консолидации данных накладывается гораздо более сложная задача, связанная с изменением модели данных, по которой происходит перерасчет и консолидация плановых показателей. Например, может быть принято решение о централизации в следующем году продаж основных видов продукции и выводе отдельных производственных процессов на аутсорсинг с созданием новых юридических лиц. И эти решения должны быть не просто описаны в виде текста или схемы, а должны быть внесены изменения во все расчетные документы, связанные с формированием себестоимости и финансовых результатов. Причем такие решения могут возникнуть как на стадии разработки предварительных бюджетов, так и на стадии балансировки сводного бюджета.
С точки зрения программного обеспечения, реализующего поддержку процесса бюджетирования, в вышеописанном процессе ключевым ресурсом становится ВРЕМЯ, в течение которого могут быть внесены изменения в бизнес-модель компании и выполнены расчеты уже по этой новой модели. Очевидно, что в этих условиях Excel находится вне конкуренции, так как позволяет обеспечить минимально возможное время от постановки задачи на изменение бизнес-модели до выдачи пересчитанных значений. ERP-системам остается только обещать учесть принятые решение при формировании бухгалтерской отчетности за 1 квартал следующего финансового года.
Что же позволяет Excel обеспечивать такую эффективность в управлении временем в процессе поддержки принятия управленческих решений? Ответ на этот вопрос также достаточно прост – при использовании Excel в лице каждого его пользователя одновременно сочетаются постановщик задач, бизнес-аналитик, тестировщик и конечный пользователь, функции которых в ERP-системах распределены не только между разными людьми, но и разными подразделениями. И самое главное, если пользователи Excel, даже выполняющие разные функции, говорят между собой на одном, понятном каждому языке, то пользователи ERP-систем (в широком смысле) говорят на множестве языков, требующих либо талантливых «переводчиков» (каких мало), либо строгой формализации процесса общения, который зачастую затягивается на неопределенное время.
Поэтому при всех ограничениях Excel по скорости обработки данных, а также неизбежное наличие процессов, реализуемых частично в ручном режиме, наиболее сложным из которых является процесс бюджетирования, Excel всегда останется вне конкуренции по сравнению с ERP-системами.
Определившись с ключевым преимуществом Excel, связанным с эффективностью его обращения с временным ресурсом, рассмотрим слабые его слабые стороны, которые должны быть реализованы в альтернативном программном обеспечении, чтобы составить ему достойную конкуренцию.
Очевидной слабостью Excel при работе с большими и сложными моделями является файловая модель хранения данных, которая:
- Требует взаимодействия в внешними реляционными базами данных для обработки больших объемов данных по нескольким атрибутам;
- Чревата трудноуловимыми логическими ошибками при изменении модели данных, состоящей из нескольких связанных файлов или листов.
Эти проблемы достаточно легко решаются путем разработки программных модулей на встроенном языке программирования, либо интеграцией с внешними программными решениями. Но в этом случае Excel лишается своего стратегического преимущества – наличие пользователя, сочетающего в себе одновременно функции постановщика задач, бизнес-аналитика, тестировщика и конечного пользователя. Вместо этого появляется как минимум двое – экономист и программист, говорящие на своих языках, имеющие по одному вышестоящему начальнику. В результате любая простая задача, обычно решаемая в голове одного человека, превращается в долгую бюрократическую процедуру.
Таким образом, любая альтернативная программная система может составить конкуренцию Excel лишь в том случае, если сможет расширить перечень решаемых Excel задач стандартными формулами без дополнительного программирования.
У появившихся в последнее время систем бизнес-аналитики, несмотря на громкие заявления, помимо более гибкой системы построения отчетов, в основе которых лежит модель данных сводных таблиц Excel, по большому счету и нет ничего (сводная таблица Excel упрощенно представляет собой select запрос к одной плоской таблице с разверткой атрибутов и агрегацией данных по нескольким полям по горизонтали и вертикали). Центральным же элементом любого процесса бюджетирования является расчет себестоимости продукции и формирование финансовых результатов, для которых модель данных сводных таблиц практически не применима.
Единственной на сегодня альтернативой Excel является открытая программная платформа моделирования сложных экономических систем JetCalc, исходный код которой доступен на GitHub. Там же содержатся ссылки на документацию, рабочую демо-версию и другие дополнительные ресурсы. Система распространяется по лицензии MIT и открыта к любым предложениям по участию в ее дальнейшем развитии для всех заинтересованных лиц.
Прежде чем перейти к особенностям архитектуры JetCalc, следует сказать, что JetCalc является свободной версией системы, реализованной в экосистеме JavaScript, основанной на архитектуре закрытой системы, реализованной на технологиях Microsoft, которая с 2012 года обеспечивает процессы бюджетирования, экономического анализа и консолидации управленческой и финансовой отчетности, в том числе для составления консолидированной отчетности в соответствии с МСФО, в крупном металлургическом холдинге с годовым оборотом более 10 млрд. $.
В системе JetCalc, как и в Excel, все расчеты выполняются на основе формул, которые разрабатывает и тестирует конечный пользователь. При этом расчетная система JetCalc обладает рядом уникальных свойств, позволяющих легко модифицировать используемые модели данных и формировать сложные консолидированные отчеты в режиме реального времени.
Ключевой особенностью модели данных JetCalc является способ создания формул ячеек. Если в Excel формулы прописываются для каждой ячейки, то в JetCalc формулы пишутся для строки или колонки, а на уровне ячейки формулы формируются системой динамически в контексте открытого документа. Такой подход кардинально сокращает время на изменение формул и полностью исключает появление арифметических ошибок. Более того, отдельные колонки комбинируются в заголовки (шапки) для определенных видов документов, что позволяет в одном месте менять формулы колонок одновременно для нескольких документов.
Другой особенностью JetCalc является наличие специализированного механизма суммирования значений ячеек по строкам документа, в основе которого лежит дерево строк, в котором суммирование производится по дочерним строкам для каждой родительской строки. Поэтому вместо перечисления ячеек в Excel, которые должны войти в качестве аргументов в формулу СУММ(А1; А2;…), в JetCalc достаточно поставить галочку против нужной суммовой строки на веб-интерфейсе. При этом любая строка может быть помечена, как не входящая в сумму, а также как суммируемая с противоположным знаком (то есть вычитаемая). При добавлении новых строк, в отличии от Excel, в JetCalc не нужно изменять никакие настройки, так как в контексте открытого документа формулы ячеек будут переформированы автоматически.
Третьей важной особенностью JetCalc является сбор информации в разрезе объектов учета, организованных в виде дерева, имеющих ряд атрибутов, позволяющих выполнять сложные вычисления по агрегации и фильтрации путем написания простых и понятных формул.
Например, для дивизиона «Металлургические предприятия» (код MET), в который входят АО «Уральский металлургический завод» (код 201) и АО «Уральский прокатный завод» (код 202), для расчета итога по дивизиону формула любой первичной ячейки в контексте документа будет преобразована к виду:
$строка@колонка#201? + $строка@колонка#202?
Это же выражение может быть представлено в виде формулы с функцией консолидации, которое автоматически будет расширено при добавлении в группу MET одного или нескольких предприятий:
$строка@колонка<<<(D:MET)?
Также в ядро системы JetCalc встроен механизм автопрокачки значений в форме ввода данных, позволяющий существенно сократить нагрузку на расчетную систему путем однократного сохранения в базе данных значений, вычисляемых по формуле, в виде первичных значений в базе данных. В последующем такие сохраненные значения могут многократно использоваться расчетной системой при формировании различных аналитических расчетов. Для настройки автопрокачиваемых значений применяются те же самые формулы, что и для настройки динамически вычисляемых значений.
Выбор между использованием динамических формул и автопрокачиваемых значений полностью определяется пользователем, настраивающим модель предметной области, и заключается в выборе между легкостью администрирования и скоростью расчета показателей документа:
- динамические формулы достаточно настроить один раз, но по мере усложнения модели и увеличения количества данных скорость формирования отчетов будет постепенно замедляться;
- формулы автопрокачки позволяют заменить вычисляемые значения на первичные, что кардинально увеличивает производительность отчетной системы, но требует большей дисциплины при модификации структуры документа, так как ранее прокачанные значения могут потребовать повторной прокачки после внесения изменений в настройки документа.
Еще одним интересным механизмом повышения производительности экономистов в JetCalc является механизм контрольных точек, представляющий собой особый класс формул, также настраиваемых пользователями, которые при правильном вводе первичных данных должны выдавать нулевое значение. При наличии ненулевых значений в контрольных точках документ не может быть заблокирован от ввода данных, а значит официально не может считаться своевременно представленным в вышестоящую организацию. Такой подход позволяет распараллелить работу по выявлению логических ошибок на сотни сотрудников отчитывающихся организаций вместо единичных сотрудников вышестоящей организации.
И конечно же, в системе JetCalc реализованы такие стандартные возможности, как печать документов или сохранение отчетов в файлы PDF, вывод данных отдельных документов в виде графиков, создание предметной документации для каждого документа, и много другое.
Из перспективных вещей, на практике доказавших свою реализуемость, можно выделить возможность распространения однажды созданных моделей неограниченному числу подписчиков через GitHub. Данная возможность основана на хранении создаваемых моделей предметной области в базе данных MongoDB, а значений – в PostgreSQL. Поэтому модель предметной области представляет собой файл в формате JSON, который легко загрузить в базу MongoDB из любого источника.
В заключении хотелось бы сказать, что в настоящее время проект развивается в рамках личной инициативы его участников и готов для применения в реальных «боевых» условиях примерно на 90%. Но эти оставшиеся 10% требуют тщательной доводки системы до коммерческого уровня по всем направлениям – от тестирования скриптов развертывания, доработки функциональности расчетной системы, улучшения эргономики веб-интерфейса до написания документации, создания демо-моделей, разработки форматов сохранения моделей и протоколов обмена данными с внешними системами и многое другое.