Аннотация и ключевые слова
Аннотация (русский):
В настоящее время практически во всех организациях бухгалтерский учет автоматизирован. Как правило, используется в этих целях программа 1С: Предприятие, иногда – «Парус» и т.п. Если взять 1С: Предприятие, то в нем предусмотрены практически все бухгалтерские операции, то есть эта программа универсальна. Однако из всего многообразия возможностей 1С: Предприятия на конкретном предприятии бухгалтер использует лишь очень малую часть, остальные возможности не используются за ненадобностью и, возможно, так никогда и не понадобятся. Если учесть, что эта программа довольно дорогая, то возникает закономерный вопрос: «За что платили?». Тогда возникает другой вопрос: а нельзя ли организовать бухгалтерию иначе? Ответ уже существует давно: можно и нужно. Например, можно вести бухгалтерию в Excel [2]. Если брать лицензионный Microsoft Office (а бухгалтерию в силу очевидных причин нужно вести только с помощью лицензионных продуктов!), то это тоже не дешево, но вместо Microsoft Office можно взять не уступающий ему Apache OpenOffice, и можно обойтись без 1С: Предприятия… Cуществует совершенно бесплатная версия такой СУБД, как Microsoft SQL Server, а именно Microsoft SQL Server Express Edition, на котором можно вести бухгалтерию более основательно. Кроме того, можно программировать в среде языков С++, C# или Basic, входящие в бесплатный пакет Visual Studio Community. Однако цель данной статьи намного скромнее. В результате прочтения этой статьи любой желающий программировать поймет, что бухгалтерию можно спокойно вести даже на очень простеньких программах вроде Quick Basic. Тем не менее, для целей данной статьи был выбран Maple.

Ключевые слова:
математические основы бухгалтерского учета, программирование, бухгалтерский учет.
Текст

Основные понятия бухгалтерского учета

 

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

На территории РФ распределение хозяйственных единиц по счетам определяет Министерство финансов. Устанавливаемые им счета имеют номера от 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-й счет на сумму х, где х > 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 – она тоже легально совершенно бесплатна. В задачу данной статьи не входит описывать готовый программный продукт. Поэтому для общего представления приведу начало вышеописанной программы:

 

Список литературы

1. Карелин Ю.А. Научитесь понимать бухгалтерский курс и экономику своего бизне-су. Видеокурс- http://www.buxg.ru

2. Соломенчук В.Г., Романович А.С. Практическая бухгалтерия на Excel для малого бизнеса.- СПб.: Питер, 2004.

Войти или Создать
* Забыли пароль?