<!DOCTYPE article
PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.4 20190208//EN"
       "JATS-journalpublishing1.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" article-type="research-article" dtd-version="1.4" xml:lang="en">
 <front>
  <journal-meta>
   <journal-id journal-id-type="publisher-id">Journal of Natural Sciences Research</journal-id>
   <journal-title-group>
    <journal-title xml:lang="en">Journal of Natural Sciences Research</journal-title>
    <trans-title-group xml:lang="ru">
     <trans-title>Журнал естественнонаучных исследований</trans-title>
    </trans-title-group>
   </journal-title-group>
   <issn publication-format="print">2500-0489</issn>
   <issn publication-format="online">2500-0489</issn>
  </journal-meta>
  <article-meta>
   <article-id pub-id-type="publisher-id">19613</article-id>
   <article-categories>
    <subj-group subj-group-type="toc-heading" xml:lang="ru">
     <subject>Математические и инструментальные методы экономики</subject>
    </subj-group>
    <subj-group subj-group-type="toc-heading" xml:lang="en">
     <subject>Mathematical and instrumental methods of Economics</subject>
    </subj-group>
    <subj-group>
     <subject>Математические и инструментальные методы экономики</subject>
    </subj-group>
   </article-categories>
   <title-group>
    <article-title xml:lang="en">Accounting for mathematicians and programmers</article-title>
    <trans-title-group xml:lang="ru">
     <trans-title>Бухгалтерия для математиков и программистов</trans-title>
    </trans-title-group>
   </title-group>
   <contrib-group content-type="authors">
    <contrib contrib-type="author">
     <name-alternatives>
      <name xml:lang="ru">
       <surname>Мусин</surname>
       <given-names>Наиль Минбариевич</given-names>
      </name>
      <name xml:lang="en">
       <surname>Musin</surname>
       <given-names>Nail' Minbarievich</given-names>
      </name>
     </name-alternatives>
     <email>nail.musin2009@yandex.ru</email>
     <bio xml:lang="ru">
      <p>кандидат физико-математических наук;</p>
     </bio>
     <bio xml:lang="en">
      <p>candidate of physical and mathematical sciences;</p>
     </bio>
     <xref ref-type="aff" rid="aff-1"/>
    </contrib>
   </contrib-group>
   <aff-alternatives id="aff-1">
    <aff>
     <institution xml:lang="ru">Новомосковский филиал Университета Российской академии образования</institution>
    </aff>
    <aff>
     <institution xml:lang="en">Novomoskovsk branch of the University of the Russian Academy of Education</institution>
    </aff>
   </aff-alternatives>
   <volume>2</volume>
   <issue>4</issue>
   <fpage>1</fpage>
   <lpage>12</lpage>
   <self-uri xlink:href="https://naukaru.ru/en/nauka/article/19613/view">https://naukaru.ru/en/nauka/article/19613/view</self-uri>
   <abstract xml:lang="ru">
    <p>В настоящее время практически во всех организациях бухгалтерский учет автоматизирован. Как правило, используется в этих целях программа 1С: Предприятие, иногда – «Парус» и т.п. Если взять 1С: Предприятие, то в нем предусмотрены практически все бухгалтерские операции, то есть эта программа универсальна. Однако из всего многообразия возможностей 1С: Предприятия на конкретном предприятии бухгалтер использует лишь очень малую часть, остальные возможности не используются за ненадобностью и, возможно, так никогда и не понадобятся. Если учесть, что эта программа довольно дорогая, то возникает закономерный вопрос: «За что платили?». Тогда возникает другой вопрос: а нельзя ли организовать бухгалтерию иначе? Ответ уже существует давно: можно и нужно. Например, можно вести бухгалтерию в Excel [2]. Если брать лицензионный Microsoft Office (а бухгалтерию в силу очевидных причин нужно вести только с помощью лицензионных продуктов!), то это тоже не дешево, но вместо Microsoft Office можно взять не уступающий ему Apache OpenOffice, и можно обойтись без &#13;
1С: Предприятия… Cуществует совершенно бесплатная версия такой СУБД, как Microsoft SQL Server, а именно Microsoft SQL Server Express Edition, на котором можно вести бухгалтерию более основательно. Кроме того, можно программировать в среде языков С++, C# или Basic, входящие в бесплатный пакет Visual Studio Community. &#13;
Однако цель данной статьи намного скромнее. В результате прочтения этой статьи любой желающий программировать поймет, что бухгалтерию можно спокойно вести даже на очень простеньких программах вроде Quick Basic. Тем не менее, для целей данной статьи был выбран Maple.</p>
   </abstract>
   <trans-abstract xml:lang="en">
    <p>At present, in almost all organizations, accounting is automated. As a rule, the program 1C: Enterprise is used for this purpose, in other cases - &quot;Sail&quot;, etc. If you take 1C: Enterprise, then it provides virtually all accounting operations, that is, this program is universal. However, out of the whole variety of possibilities of 1C: Enterprise at a particular enterprise, the accountant uses only a very small part, the rest of the possibilities are not used as unnecessary and, perhaps, never will be needed. If we consider that this program is rather expensive, then a natural question arises: &quot;What did you pay for?&quot;. Then another question arises: is it possible to organize bookkeeping otherwise? The answer already exists for a long time: it is possible and necessary. For example, you can keep accounting in Excel [2]. If you take a licensed Microsoft Office (and for obvious reasons you only need to conduct accounting with the help of licensed products!), Then this is also not cheap, but instead of Microsoft Office you can take not inferior to it Apache OpenOffice, and you can do without&#13;
1C: Enterprise ... There is a completely free version of a DBMS such as Microsoft SQL Server, namely Microsoft SQL Server Express Edition, where you can conduct accountant more thoroughly. In addition, you can program in the C ++, C #, or Basic languages that are included in the free Visual Studio Community package.&#13;
However, the purpose of this article is much more modest. As a result of reading this article, anyone who wants to program will understand that accounting can be easily managed even on very simple programs like Quick Basic. Nevertheless, Maple was chosen for the purposes of this article.</p>
   </trans-abstract>
   <kwd-group xml:lang="ru">
    <kwd>математические основы бухгалтерского учета</kwd>
    <kwd>программирование</kwd>
    <kwd>бухгалтерский учет.</kwd>
   </kwd-group>
   <kwd-group xml:lang="en">
    <kwd>mathematical foundations of accounting</kwd>
    <kwd>programming</kwd>
    <kwd>accounting.</kwd>
   </kwd-group>
  </article-meta>
 </front>
 <body>
  <p>Основные понятия бухгалтерского учета Счет – способ группировки экономически однородных  хозяйственных единиц по единому признаку в денежном выражении. Например, наличные деньги независимо от того, от кого они поступили или к кому должны уйти, учитываются иначе, чем безналичные деньги, поэтому для их учета образуют счет «Касса». Безналичные деньги, которые хранятся в банке, учитываются отдельно от других денег, поэтому для их учета создается «Расчетный счет». Используя программистский язык, можно счет сравнить с типом данных в языках программирования, например деньги типа «Касса» или типа «Расчетный счет».На территории РФ распределение хозяйственных единиц по счетам определяет Министерство финансов. Устанавливаемые им счета имеют номера от 01 по 99 и называются синтетическими (от слова синтез – соединение). Их совокупность называется планом счетов. На самом предприятии, как правило, используется только некоторый набор из плана счетов, который называется рабочим планом счетов, причем каждый из них может дробиться на субсчета и стать аналитическим (от слова анализ – разложение). Крéдит – со счета списывают деньги. В данной работе кредит будет представлен отрицательным числом. Карелин Ю.А. [1] предлагает шутливую мнемонику: КРедит связан со словом КРасть. Дебет – на счет перечисляют деньги. В данной работе дебет будет представлен положительным числом. Карелин Ю.А. [1]: ДеБет связан со словом ДоБавлять.Сальдо (т.е. итог, иначе – остаток) – алгебраическая сумма дебета и кредита. Двойная запись – связывает два счета; с одного счета деньги списывают, на другой эти же деньги перечисляют. Оборот – переход денег с одного счета на другой. Проводка – документ, в котором оформлена двойная запись по определенной форме. Например, запись 50 51 1000 означает дебет счета 50 («Касса»), кредит счета 51 («Расчетный счет»), оборот 1000 руб.Активный счет – имеет положительное сальдо на данный момент.Пассивный счет – имеет отрицательное сальдо на данный момент.Активы состоят из активных счетов.Пассивы состоят из пассивных счетов.Некоторые счета всегда активны, например, «Касса».Некоторые счета всегда пассивны, например, «Уставный капитал».Некоторые счета в какие-то моменты активны, а в какие-то моменты пассивны, например «Расчеты с поставщиками и подрядчиками».Основной бухгалтерский закон:Алгебраическая сумма всех активных и пассивных сальдо равна нулю в любой момент времени  Математические основы бухгалтерского учета С математической точки зрения счет – это некоторая переменная, которая принимает значения на множестве  действительных чисел в десятичной записи.Определение 1. Планом счетов называется множество переменныхА = {a[1], a[2], …, a[99]}.Рабочим планом счетов называется любое непустое подмножество плана счетов. Замечание Предприятие работает с конкретным рабочим планом счетов. С математической точки зрения не имеет разницы, совпадает ли рабочий план счетов с планом счетов. Поэтому вводить для рабочего плана счетов новые обозначения нецелесообразно, и в качестве рабочего плана будем брать все множество А.  Для плана счетов был взят массив a[1], a[2], … , a[99], хотя и не все элементы массива будут реально использоваться.  Буква а для обозначения массива взята потому, что по-английски слово account – счет. Иногда в общих рассуждениях будем писать, например, ai . Определение 2.Проводкой (транзакцией) из i-го счета в  j-й счет на сумму х, где х &gt; 0, называется функция TRANS(i, j, х), в результате которой ai принимает значение ai + х (дебет), aj принимает значение aj – х (кредит). Введем на плоскости прямоугольную систему координат с осями координат хi и хj. Назовем точку Р(хi, хj) фазовой.  Очевидно, что любая транзакция отображает фазовую точку Р(хi, хj) в точку Р(хi + x, хj - x). Так как первоначально (то есть непосредственно перед организацией предприятия) фазовая точка имела обе координаты нулевые, то любая транзакция приводит к перемещению фазовой точки вдоль прямой y = -x вниз или вверх. Если ввести сетку с шагом, которому отвечает, например, 1 копейка, то минимальной транзакции (т.е. когда х = 1) отвечает отображение точки Р(хi, хj) в точку Р(хi+1, хj-1). При этом происходит ее перемещение из вершины квадрата сети в правую нижнюю вершину квадрата, то есть по диагонали сверху вниз. Ясно, что полученную точку можно отобразить в исходную, применив обратную транзакцию Trans(j, i, х). При этом перемещение точки происходит из вершины сетки по диагонали снизу вверх. При произвольном х движение происходит по прямой линии, соединяющей две какие-то вершины, и содержащей диагонали минимальных квадратов.  Теперь вспомним, что в рабочем плане у нас n счетов, поэтому вводим в рассмотрение n-мерное пространство. Состояние всех счетов описывается одной-единственной точкой этого пространства (по-прежнему называем ее фазовой). Ясно, что перед созданием предприятия, до начала всех финансовых операций состояние всех счетов описывается одной – единственной фазовой точкой, находящейся в начале координат. Фазовая точка далее движется по ломаной линии, причем каждое звено ломаной параллельно какой-то координатной плоскости и отвечает одной транзакции.Введем в n – мерном пространстве сетку с минимальным шагом. В дальнейшем любая проводка вида TRANS(i, j, х) приводит к движению точки параллельно плоскости хi, хj. Последующие проводки приводят к тому, что в n-мерном пространстве описывается некая ломаная линия. При этом сумма координат любой вершины этой ломаной равна нулю. Таким образом, все готово к тому, чтобы задействовать теорию случайных блужданий в n – мерном пространстве. Теперь вспомним, что в обычном бухгалтерском учете имеется счет 99 «Прибыли и убытки». Название вводит в заблуждение, так как здесь отражается не настоящая прибыль или убыток, а ее отражение в пассиве, именно в силу этого соответствующая переменная a99 всегда неположительна. Поэтому с геометрической точки зрения финансовая деятельность предприятия сводится к тому, чтобы «бухгалтерская траектория» шла вдоль оси a99, если ее расположить вертикально, как можно ниже. Теперь обратим внимание на то, что деятельность предприятия зависит от многих случайных факторов. Если изучать только поведение проекции точки Р на ось a99 , то получаем задачу о случайном блуждании не в n – мерном пространстве, а вдоль прямой, а этот случай хорошо известен и исчерпывающе изучен в теории вероятностей.  Проблемы программирования бухучета Современные автоматизированные системы бухучета являются универсальными. Это приводит к тому, что бухгалтеру остается установить только счета рабочего плана счетов, не подозревая при этом, что на самом деле надо бы еще фиксировать и взаимосвязи между этими счетами. Таким образом, становится ясным, что на каждом предприятии должна быть построена своя уникальная система счетов (то есть, учтена взаимосвязь счетов), а не просто план счетов (то есть простой список счетов).Следующий этап – разработка самой системы счетов. Вот пример такой системы без учета НДС (взята из лекций Карелина Ю.А. [1]).В этой статье мы запрограммируем эту систему в Maple.Рис. 1 Очевидны два подхода к бухгалтерским счетам.Первый подход – рассматриваем их как простые переменные. Тогда можно пользоваться даже самыми простыми языками программирования вроде Паскаля, Бейсика, С. Здесь применяется процедурное программирование.Второй подход, более близкий к бухгалтерскому учету – рассматриваем счета как объекты. Здесь можно применять из объектно-ориентированных пакетов, такой, например, как  С++Builder. Прочитав эту статью, любой желающий может потренироваться в написании бухгалтерии на С++Builder, так как это несложная задача даже для первокурсника. Процедурный подход: программирование в Maple Самое первое, что надо сделать – это запрограммировать проводки (транзакции). Составляем процедуру TRANS: Далее, все счета обнуляем: Для уставного капитала введем одну переменную a[80]. Для кредитов введем переменную a[66], а для расчетного счета – переменную a[51]. Введение обозначений для остальных счетов очевидно из схемы корреспонденций на рис. 1.Теперь проведем нужные проводки: Посмотрим, что получается на счетах:  Мы видим, что обе проводки приводят к правильному состоянию счетов: со счетов 80 и 66 сняты по 200 тыс. руб., а на расчетном счете итоговая сумма в 400 тыс. руб.Теперь производим закупку 200 штук товара по 1 тыс. руб. за штуку, то есть всего на 200 тыс. руб. Со счета 51 «Расчетный счет» на счет 60 «Расчеты с поставщиками» переводим деньги. Соответствующая проводка имеет вид:   Поступивший товар учитываем по счету 41 «Товары»: Как видим, счет 60 «Расчеты с поставщиками» обнулился, мы с поставщиками рассчитались полностью. Некий покупатель согласился купить у нас 100 штук товара по цене полторы тысячи за штуку и перевел нам 150 тыс. руб.:Через некоторое время другой покупатель согласен купить оставшиеся 100 штук товара только за 800 руб., мы получаем 80 тыс. руб.:Передаем товар покупателям. Сначала учитываем товар по счету 90 «Продажи», затем по счету 62 «Расчеты с покупателями»:  Таким образом, счет 41 «Товары» на складе закрыт, можно оборот товаров запускать снова. С покупателями тоже рассчитались, счет 62 нулевой.  Однако пока счет 90 не закрыт.Кроме того, товар был доставлен на грузовике, и за транспортные услуги с нас взяли 2 тыс. руб. Соответствующие проводки: Проверим баланс:Баланс нулевой, ошибок пока нет.Подсчитаем также дебет и кредит отдельно:Как видим, обычные бухгалтерские дебет и кредит равны, баланс  сошелся.Таким образом, у нас есть возможность сравнивать обычные бухгалтерские результаты с результатами, которые можно получать по предлагаемой в данной работе методике.Теперь надо запрограммировать выплату разного рода налогов.Добавим еще один элемент в разбираемую схему. Пусть на складе работает кладовщик с окладом 10 тыс. руб. (пример Карелина Ю.А. [1]). Начисляем ему зарплату:Предприятие отдает государству в виде единого социального налога (ЕСН, Single Social Tax)  26% от величины зарплаты. Налоги учитывают на специальных счетах 68 и 69. Для простоты используем только один счет 68: Теперь учтем налог на доходы физических лиц (НДФЛ, Income Tax): Обнуляем счет 44 «Расходы», отнеся их на счет 90 «Продажи»: Обнуляем счет 90 «Продажи»: Таким образом, на счете 99 «Прибыли и убытки» отражена в пассиве реальная, то есть активная прибыль в 15.4 тыс. руб.Но с этой прибыли  надо заплатить налог 20% со счета 68:Так как все налоги заплачены, надо в конце года счет 99 обнулить, воспользовавшись счетом 84 «Нераспределенная прибыль», на котором отражена чистая прибыль предприятия: Остались не обнуленными два счета:Следуя Карелину Ю.А. [1], воспользуемся следующими упрощенными проводками:В самом начале на расчетном счете было 400 тыс. руб., теперь на нем 412.32 тыс. руб. Получилась чистая прибыль в активе в 12.32 тыс. руб. Это актив. На счете 84 «Нераспределенная  прибыль» показана та же сумма, но со знаком минус, то есть счет 84 пассивный и лишь отражает настоящую прибыль. Следовало бы этот счет назвать «Отраженной нераспределенной прибылью». О ненужности махинаций с «черной» кассой Карелин Ю.А. [1] рассматривает интересный вопрос о том, нельзя ли увеличить прибыль, установив кладовщику официальную зарплату в 4 тыс. руб., а остальные 6 тыс. выдать ему «в конверте»? Практически все считают, что это возможно… Увы и ах… Если проделать составленную нами программу в Maple, получаем официальную прибыль 18 370 руб. Однако наступает и «неофициальная» часть, и после выплаты кладовщику 6 тыс. руб. остается 12 370 руб. Выигрыш всего 50 руб. (у Карелина Ю.А. расчеты приближенные, и выигрыш составил порядка 100 руб.). Вывод: с «черной кассой» лучше не иметь дела, лучше честно заплатить налоги и спать спокойно. Советую послушать комментарии Карелина Ю.А. на сей счет:  http://www.buxg.ru/  Посмотрим, что будет, если вместо конкретной ставки кладовщику назначим T тыс. руб. Программа дает ответ: чистая прибыль при этом будет равна  -22.4 + 1.01×T тыс. руб., или, иначе, реальная прибыль будет равна  22.4 - 1.01×T тыс. руб. Тогда уже можно устанавливать ставку не «с потолка», а учитывая среднюю рыночную ставку в данном регионе. Например, ставка в 8 тыс. могла бы быть вполне подходящей, и тогда прибыль составила бы  22.4 - 1.01×8 = 14 320 руб., то есть на 14320 – 12320 = 2000 руб. больше, чем при ставке 10 тыс. руб. Как учесть НДС Построенная выше бухгалтерия, конечно, очень упрощенная, но начинать ее программирование надо с нее. Затем можно ее уточнять и усовершенствовать. Покажем, как учесть один из самых нужных элементов бухгалтерии: учет налога на добавленную стоимость (НДС). Дело в том, что если мы у кого-то покупаем товар на 100 тыс., то мы платим сверх этого еще 18% этой стоимости, это и есть НДС. Таким образом, мы переводим поставщику 118 тыс., а взамен получаем чек, в котором указано, что стоимость товара  «с учетом НДС». Нам нужен еще один счет. Он предусмотрен планом счетов и имеет номер 19. Программа, Программирование в Maxima Конечно, организации лучше иметь дело с совершенно бесплатной легальной операционной системой Linux. Для ведения бухгалтерии в описанном выше стиле годится даже Quick Basic. Но можно использовать, например, вместо Maple такую программу, как Maxima – она тоже легально совершенно бесплатна. В задачу данной статьи не входит описывать готовый программный продукт. Поэтому для общего представления приведу начало вышеописанной программы: </p>
 </body>
 <back>
  <ref-list>
   <ref id="B1">
    <label>1.</label>
    <citation-alternatives>
     <mixed-citation xml:lang="ru">Карелин Ю.А. Научитесь понимать бухгалтерский курс и экономику своего бизне-су. Видеокурс-  http://www.buxg.ru</mixed-citation>
     <mixed-citation xml:lang="en">Karelin Yu.A. Nauchites' ponimat' buhgalterskiy kurs i ekonomiku svoego bizne-su. Videokurs-  http://www.buxg.ru</mixed-citation>
    </citation-alternatives>
   </ref>
   <ref id="B2">
    <label>2.</label>
    <citation-alternatives>
     <mixed-citation xml:lang="ru">Соломенчук В.Г., Романович А.С. Практическая бухгалтерия на Excel для малого бизнеса.- СПб.: Питер, 2004.</mixed-citation>
     <mixed-citation xml:lang="en">Solomenchuk V.G., Romanovich A.S. Prakticheskaya buhgalteriya na Excel dlya malogo biznesa.- SPb.: Piter, 2004.</mixed-citation>
    </citation-alternatives>
   </ref>
  </ref-list>
 </back>
</article>
