habrahabr

ЭкаунтоЛогика 1.0

  • вторник, 2 декабря 2014 г. в 02:11:30
http://habrahabr.ru/post/244465/



Хочу поделиться с уважаемой публикой.

Год-полтора назад я выступал на Хабре с предложениями о создании сетевой бухгалтерии нового типа. Найти человека, который бы воплотил идею в программном коде, не удалось (кто бы сомневался?), и через некоторое время я дошел до такой степени одичания отчаяния, что решился написать программный код самостоятельно.

Сказано – сделано: изучил язык программирования, насколько это оказалось в моих слабых бухгалтерских силах, и написал.

Ниже предлагается синопсис того, что в итоге данной интеллектуальной эпопеи получилось – во всяком случае, того, как это задумывалось. Надеюсь, специалисты в области бухгалтерского софта смогут оценить новизну реализованной в программе методологии – хотя понимаю: это заведомо сложней, чем позубоскалить над усилиями новичка-«программиста».


«ЭкаунтоЛогика» – конструктор для учета вещей (только не по бухгалтерским правилам, а по естественным, заимствованным у природы).

Интерфейс зауряден:
  • либо стандартная таблица,
  • либо более наглядные иконки (с отображением свойств текущей иконки в инвертированной табличке слева).



Каждая вещь либо поступает, либо выбывает (регистрируется соответственно по приходу или по расходу).

Это концептуальный момент: любое изменение вещи регистрируется как расход одной вещи и приход другой вещи, – хотя бы с точки зрения внешнего наблюдателя вещь лишь поменяла свойства с одного на другое.

Светофор изменил цвет – предположим, с желтого на красный, – это один и тот же светофор или два разных светофора? Вопрос философский: в какой момент вещь изменяется настолько, что превращается в другую вещь? Можно решить так, а можно иначе: соответственно, перенести выбранный метод в программный код. «ЭкаунтоЛогика» решает таким образом, что для нее желтый светофор – это один объект, а красный светофор – другой: таким образом, при загорании на светофоре другой лампочки имеет место расход «желтого» светофора с одновременным приходом «красного» светофора. Следовательно, одно действие (в данном примере – загорание другой лампочки на светофоре) выполняется одновременно с несколькими вещами, причем с одними вещами по расходу, а с другими по приходу.

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



Перечень действий, выполняемых в «ЭкаунтоЛогике», не совпадает с принятым в традиционной бухгалтерии: не малопонятные «дебет» и «кредит», а осмысленные операции с вещами окружающей реальности:

добавить (то есть внести в учетную систему, зарегистрировать в ней),
соединить (несколько вещей в одну),
изменить (те или иные свойства вещи),
передать (другому лицу),
разделить (одну вещь на несколько),
удалить (вычеркнуть вещь из учетной системы).

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



Регистрация первичных данных – первая из двух обязательных сторон учетной программы, а как в «ЭкаунтоЛогике» решена вторая задача – генерация отчетов? При помощи так называемых отчетных папок.

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



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

В соответствии с нашими установками, на верхнем уровне расположатся папки с названиями.



Зайдя внутрь какой-либо папки, на втором уровне иерархии мы обнаружим папки с местами хранения, и т.д.

На каждом из уровней присутствуют отчетные столбцы с традиционными для бухгалтерии оборотами и сальдо.
Хотя традиционность относится к прошлым периодам, а с будущими периодами обстоит сложней. Будущие периоды предназначены для учета обязательств (данному методологическому решению аналогов нет, заявляю как автор десятков учебников по этой нуднейшей в мире специальности).

Что такое обязательство – имею в виду не юридическое определение, а суть дела? Те же вещи окружающей нас действительности, которыми кто-то обязывается в пользу другого. Эти вещи существуют не в настоящем, в будущем:
  • бухгалтерская дебиторка – вещи, которыми кто-то обязался в нашу пользу (таким образом, вещь должна к нам поступить);
  • бухгалтерская кредиторка – напротив, вещи, которыми мы обязались в пользу другого (по причине чего вещь должна от нас выбыть).

Другими словами, обязательства – не особый объект учета, как ошибочно считается в традиционной бухгалтерии, а вещи, регистрируемые будущей датой: так они и учитываются в «ЭкаунтоЛогике».

Предположим, вещь зарегистрирована 25 ноября с датой совершения 27 ноября.



Что это означает? Только то, что 27 ноября она должна поступить: обыкновенная вещь – никакое не обязательство.

Обратите внимание на организацию учета по времени:
  • в отчетах за 24 ноября мы ничего увидим (а что мы можем увидеть, если регистрация осуществлена 25 ноября?),



  • в отчетах за 25 ноября мы увидим будущую вещь – дебиторское обязательство. Указание для действия вероятности позволяет отражать данный еще не состоявшийся объект с коэффициентом (вещь поступит нам с вероятностью 90 %),



  • после даты совершения мы увидим ту же самую вещь в качестве наличной, действительно поступившей (и в этом случае никакого коэффициента вероятности быть не может: вещь или поступила, или не поступила, третьего не дано).



С наступлением даты совершения будущей операции соответствующий объект считается наличным (то есть реально поступившим), никаких особых действий (которые в бухгалтерии называются погашением обязательства) выполнять не нужно. Если, несмотря на ожидания, вещь не поступила, пользователь может отсрочить ее предполагаемое поступление или вовсе удалить действие как несостоявшееся – таким образом, сроки совершения зарегистрированных обязательств необходимо отслеживать.

Конечно, регистрировать приходится не только дебиторку, но и кредиторку (с точки зрения экаунтологии, будущее выбытие вещи), и тут намечается некая непривычная счетному работнику сложность. Это в бухгалтерии можно зарегистрировать кредиторку безотносительно тому, чем обладаешь на данный момент, – но только не в «ЭкаунтоЛогике», которая берет пример с реальности. Разве в реальной жизни вещь может выбыть раньше, чем поступила? Не может, немыслимо такое, потому и в «ЭкаунтоЛогике» немыслимо: для регистрации будущего выбытия вещи необходимо сначала зарегистрировать ее поступление, текущее или будущее (предполагаемое).

При очень, ну очень большом желании можно указать для будущего прихода вероятность 0 %, а для будущего расхода 100 %, тогда строка покажет потенциальное превышение расхода над приходом (лишь до момента наступления даты прихода, естественно).



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

Что такое доходы и расходы, в бухгалтерском учете прописано не очень понятно – правду говоря, отвратительно. Зато в «ЭкаунтоЛогике» определение формальное: доходы и расходы – числовые характеристики действия.
Реализованы оба представимых способа вычислений.

Допустим, произошла усушка, масса вещи уменьшилась с 3 кг до 2 кг. Согласно экаунтологическому подходу, в операции изменения задействовано два объекта:
  • первый объект массой 3 кг (регистрируется по расходу),
  • второй объект массой 2 кг (регистрируется по приходу).

В соответствии с первым способом исчисления доходов-расходов, расходы составляют 3 кг, а доходы 2 кг. Согласно второму способу расходы составляют 1 кг (3 кг – 2 кг), доходы по понятным причинам отсутствуют. Пусть никого не смущает измерение доходов и расходов массой: при использовании другого измерителя доходы и расходы будут измерены в другой числовой характеристике (количестве, рублях, долларах, евро, тугриках, биткойнах) – в какой только пожелаете.

В рамках доходов-расходов может быть организован учет в разрезе… скажем, контрагентов: в этом случае доходы – это поступившее от контрагента за период, тогда как расходы – переданное контрагенту за период. То же – в разрезе договоров, статей калькуляции и т.п.



Предвидя упреки в скудости отчетных форм «ЭкаунтоЛогики», поясню. Программа не предназначена для конструирования отчетов: форма отчетов единственная, тем не менее позволяющая получать в рамках реализованной методологии обороты-сальдо и доходы-расходы по любому пользовательскому разрезу данных. Дальнейшая обработка отчета производится путем экспорта в Excel.

Мне как разработчику (ну кто о себе доброго слова не скажет?!) методика представляется:
  • гибкой (учетный конструктор – этим все сказано);
  • продуманной и формализованной;
  • прогрессивной (достаточно отсутствия того, что в бухгалтерии называется «закрытием отчетного периода». В «ЭкаунтоЛогике» сальдо подсчитываются на основании простой выборки, без последовательного суммирования по операциям);
  • обеспечивающей совместимость пользователей, ведущих независимый друг от друга учет.

Последнее является главнейшим качеством программы, ради которого она проектировалась.

Увы, полная совместимость не реализована в силу необходимости обмена данными через сайт (наподобие электронной почты), чего мне на сегодняшний день не осилить. Поэтому версия 1.0 десктопная: пользователь может зарегистрироваться под разными именами и передавать вещи самому себе, при этом базы данных с различной структурой согласуются между собой. Этим коммуникативные возможности программы исчерпываются… однако же могут быть расширены в следующих версиях. Нет, ну представьте: программка, установив которую на компьютер, можно получать сведения по купленным в магазине товарам непосредственно в личную базу! Дополнительный вид услуг, оказываемых торговыми точками!

Если у кого-то появилось желание опробовать «ЭкаунтоЛогику» вживую, скачать ее можно отсюда.

Системные требования: 32-разрядный Microsoft Office и 32-разрядная Windows. Если у вас 64-разрядная Windows, то, скорей всего, придется установить утилиту Microsoft Access Database Engine 2010 (32-разрядную). А при 64-разрядном Microsoft Office все равно не работает: провайдер Microsoft.ACE.OLEDB.12.0 не позволяет. Если кто подскажет, возможно ли решить проблему без замены провайдера, буду признателен.

Нет, а чего вы хотите от бухгалтера! Никогда раньше не программировал… программа учебная (во всех смыслах слова), сырая и, между прочим, довольно объемная (мне сказали, что 30 тыс. строк кода — это немало)… Посему не обессудьте, «ЭкаунтоЛогика» предлагается для ознакомления с оригинальной учетной методикой – в соответствии с принципом «as is» (что в переводе на русский означает: чем богаты, тем и рады).