КОМПЬЮТЕР ВЫВОДИТ САЛЬДО

Евгений Шуремов

Книга содержит описание популярной компьютерной программы для автоматизации бухгалтерского учета - ФИНАНСЫ БЕЗ ПРОБЛЕМ фирмы "Хакерс Дизайн". Это - учебное пособие, в котором описана настройка программы под индивидуальные требования пользователя и способы решения конкретных практических задач. Книга рассчитана на широкий круг читателей, имеющих представление об основах учета и минимальный опыт работы с программами в среде DOS или Windows.

© Хакерс Дизайн

Названия организаций, имена и данные, использованные в иллюстрациях и примерах, являются вымышленными. ХАКЕРС ДИЗАЙН и ФИНАНСЫ БЕЗ ПРОБЛЕМ являются зарегистрированными товарными знаками АО "Хакерс Дизайн". Все другие товарные знаки и зарегистрированные товарные знаки являются собственностью соответствующих фирм.

[ Переписать архив ]

Содержаниe

От автора

Данная книга посвящена программе "Финансы без проблем" фирмы "Хакерс Дизайн" - одной из самых популярных систем автоматизации бухгалтерского учета, в настоящий момент используемой многими тысячами бухгалтеров России и других стран СНГ. Здесь акцент сделан, в первую очередь, на рассмотрении практических вопросов использования версии 4000 для DOS, поскольку она имеет наибольшее распространение. В то же время, все сказанное применительно к версии 4000 верно и в отношении Windows-версии программы, общая характеристика особенностей которой дается в заключительной части книги.

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

Вторая часть посвящена разбору основных элементов настройки "Финансов без проблем" на конкретные условия ведения учета. Здесь излагаются правила организации плана счетов, ввода входящих сальдо, подробно и последовательно разбираются способы настройки правил машинного формирования бухгалтерских операций, а также средства создания и модификации форм отчетов и первичных документов.

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

В заключительной части книги рассматриваются некоторые специальные вопросы использования "Финансов без проблем". Здесь читатель найдет информацию об особенностях использования Windows-версии, организации взаимодействия с другими прикладными системами, а также сведения о готовящейся к выходу сетевой версии, основанной на использовании технологии "клиент-сервер". Кроме этого, специально для программистов здесь описаны возможности расширения функций программы за счет использования DLL-библиотек.

Книга предполагает последовательное чтение, поскольку материалы глав в значительной степени взаимосвязаны. Для начинающих пользователей наилучшим вариантом является чтение с одновременным разбором приводимых примеров на компьютере. Пользователи, уже знакомые с программой, могут пропустить первую часть, вкратце ознакомившись лишь с принятыми в книге соглашениями о размещении директорий данных, изложенных в главе Установка программы на компьютер. Во второй части следует хотя бы "наискосок" просмотреть главу Параметры счетов и нормативная информация.

Данную книгу ни в коем случае нельзя рассматривать как источник рекомендаций для решения любых учетных задач с помощью программы "Финансы без проблем", поскольку здесь не рассмотрено и десятой доли того, что можно реализовать ее средствами применительно к автоматизации учета на конкретном предприятии. Автору известны существенно более полные и завершенные варианты автоматизации бухгалтерского и оперативного учета, выполненные пользователями "Финансов без проблем" и дилерами "Хакерс Дизайн". Приводимые в книге примеры правил являются лишь краткой иллюстрацией возможностей программы, призванной разбудить фантазию читателя и стимулировать ее творческое использование применительно к собственным нуждам. В то же время, автор будет польщен, если кто-либо из читателей найдет практическое применение изложенных в книге схем. Сказанное только что актуально еще и по той причине, что к моменту завершения книги был установлен новый порядок учета налога на добавленную стоимость и спецналога по товарно-материальным ценностям, оставляющий широкий диапазон для интерпретации некоторых существенных моментов. Поэтому, автор надеется на снисходительное отношение читателей, к которым эта книга попадет к тому моменту, когда будут даны соответствующие разъяснения.

И в завершении этого краткого предисловия позвольте мне выразить искреннюю благодарность читателям, которые возьмут на себя труд дочитать эту книгу до конца, фирме "Хакерс Дизайн", за предоставленную мне возможность написать эту книгу, лично господину Водянику А.Г. - разработчику программы "Финансы без проблем" и директору "Хакерс Дизайн" за создание столь самобытной компьютерной системы, моей маме Суляевой Л.Х., на плечи которой легли все бытовые проблемы в период написания книги, госпоже Умновой Э.А. - доценту Финансовой академии при Правительстве РФ за бесценные консультации, а также господину Нуралиеву С.Г. за постоянную позитивную критику программы "Финансы без проблем", позволившую мне найти и изложить на страницах книги опровергающие ее решения. Также позвольте выразить искреннюю признательность коту Петрику, всем друзьям, подругам и продукции завода "Кристалл", помогавшим мне расслабиться в редкие минуты отдыха после многочасовых бдений за компьютером над текстом данной книги. Е.Шуремов.

Введение

Как бы ни ругали телевизионную рекламу - она запоминается. Особенно тогда, когда рекламируется продукция, товары или услуги той отрасли, с которой ты профессионально связан. Поэтому, большинству специалистов, так или иначе связанных с рынком программного обеспечения в области экономики и финансов надолго запомнилась реклама тогда еще никому неведомой и невесть откуда взявшейся фирмы из Мариуполя, ежевечерне в 1991-1992 годах в самое ходовое телевизионное время по первой программе ТВ предлагавшей недорогую компьютерную программу для ведения бухгалтерского учета с запоминающимся названием "Финансы без проблем". Хорошо помню как были шокированы московские разработчики бухгалтерских программ, а в редакциях толстых компьютерных журналов приходилось слышать "кто такие?", "почему не знаем?". А все было очень просто. То, чего не могли сделать монстры социалистической индустрии производства программ и "вылупившиеся" из них кооперативы сделала маленькая частная фирма из Мариуполя - "Хакерс Дизайн", выпустив на рынок первый на территории бывшего СССР широко тиражируемый программный продукт. До момента появления "Финансов без проблем" было написано немало "толстых" исследований о том, как надо автоматизировать учет в промышленности, торговле, в организациях, состоящих на бюджете. Предпринимались попытки создать типовые системы кодирования, типовые технологические системы обработки учетной информации. В основном они ориентировались на использование "больших" ЭВМ и потому предназначались для достаточно крупных организаций. Небольшим предприятиям предлагалось использовать ВЦКП. Каков уровень оперативности такой автоматизации учета можно догадаться. Потому-то такие системы и не получили большого распространения. Часто приходилось видеть бухгалтера, который с карандашом и калькулятором (а то и счетами) "крыжил" полученную из АСУ распечатку. Фактически внедрение АСУ часто приводило к выполнению двойной ненужной работы. И это в то время, когда во всем цивилизованном мире уже пользовались дешевыми персональными ЭВМ. По мере постепенного насыщения рынка ПК к концу 80-х, началу 90-х годов и появлению большого числа самостоятельных негосударственных фирм сложилась высокая потребность в программных продуктах для автоматизации бухгалтерского учета. И такие программы стали создаваться. Автор хорошо помнит как в 89-91 гг. множество временных трудовых коллективов по договорам с самыми разными организациями "лепили" бухгалтерские программы фактически уникальные для каждого предприятия. Многие такие разработки оказались мертворожденными, поскольку сами программисты - технари до мозга костей - ничего не понимая в учете лишь воспроизводили то, что могли понять из объяснений бухгалтеров. Как правило, получалось изделие годное только для данной организации-заказчика, да и то на короткий период действия нормативных актов "намертво" заложенных в алгоритмы расчетов.

Разработчики "Хакерс Дизайн" реализовали совершенно иной принцип построения бухгалтерской программы. В "Финансы без проблем" были заложены совершенно непохожие на существовавшие до тех пор концепции автоматизации бухгалтерского учета. Основная идея состояла в том, что бухгалтерская программа должна быть максимально гибкой и открытой для настройки самим пользователем на специфику учета в своей организации и легко модифицируемой при изменении законодательства. Создав такого рода продукт фирма предприняла мощные усилия по его продвижению на рынке, раньше других производителей программного обеспечения поняв принцип "реклама двигатель прогресса". Мощная рекламная компания 1991-1992 года принесла свои плоды. Тысячи организаций-пользователей теперь могли приобрести недорогой, качественный программный продукт, просто получив его по почте наложенным платежом. Конечно, "Финансы без проблем" нельзя считать идеальной программой, которая в состоянии удовлетворить потребности любой, без исключения, бухгалтерии. Однако, опыт автора, знакомого более чем с сотней систем автоматизации бухгалтерского учета, как созданных на территории бывшего СССР, так и западных, позволяет с полной уверенностью констатировать, что на настоящий момент нет и в обозримом будущем не предвидится появления идеальной со всех точек зрения программы для бухгалтера. Слава Богу, забыты пресловутые типовые проектные решения централизованно навязываемые нам при социализме. Каждый пользователь теперь волен выбирать себе то, что более всего соответствует его потребностям, запросам, уровню претензий и желанию работать по-старинке или по-новому. В этом смысле "Финансы без проблем" - это система построенная на новых, прогрессивных принципах, которые рано или поздно станут доминирующими. Последнее подтверждается следующим обстоятельством. Автору известно несколько компьютерных фирм в Москве, Петербурге, на Украине и в Беларуси прямо "позаимствовавших" у "Хакерс Дизайн" основные идеи "Финансов без проблем" и достаточно успешно тиражирующих свои разработки. Более того, идеи групповых или типовых операций, порождающих "одним махом" несколько проводок, специализированные генераторы отчетов, а также возможность оперативной "расшифровки" показателей оборотного баланса данными аналитического учета, впервые среди разработок для массового потребителя появившиеся в "Финансах без проблем", стали стандартом "де-факто" для систем автоматизации, поставляемых ведущими разработчиками компьютерных бухгалтерий. Так что, хотим мы того или нет - следует признать: разработчики "Хакерс Дизайн" во многом явились "законодателями мод" на рынке бухгалтерских программ практически на всей территории бывшего СССР. Вычислительный потенциал программы огромен, а выполнение некоторых сложных учетных процедур оказывается настолько изящным и простым, что просто диву даешься. Однако, для неподготовленного пользователя эти возможности могут остаться не замеченными - "Финансы без проблем" требуют определенных усилий при освоении возможностей настройки программы на учетную специфику. Собственно, желание показать потенциал программы "во всей красе" и побудило автора к написанию этой книги. Удалось это или нет - судить читателю.

Установка программы на компьютер

Первым действием, которое необходимо выполнить для того, чтобы использовать "Финансы без проблем" является установка программы на компьютер и создание комфортного окружения для работы. В стандартной поставке DOS-версии - три дискеты. Первая в корневой директории содержит программные файлы необходимые для работы, файлы с текстами пояснений, а также две директории - EXAMPLE и EXCHANGE, содержащие примеры использования программы. Если Вы пользуетесь программой Нортон Коммандер, то переключившись на диск в приводе a: увидите картинку следующего содержания:

"Заглянув" в файл !dir.doc можно узнать назначение каждого из файлов корневой директории. Для нормальной работы программы необходимо скопировать на жесткий диск файлы:

Создадим на жестком диске директорию в которой будем работать. Здесь Вы вольны в выборе. Программе все равно с какого логического диска стартовать. Перечисленные выше файлы могут находиться где угодно, а директории с данными могут быть "разбросаны" как попало. Так, если Вы ведете одновременно несколько бухгалтерий, то каждой должна быть выделена отдельная директория. Однако, совершенно необязательно копировать основные файлы программы в каждую из них. Например, автор для написания данной книги использовал такую структуру размещения файлов:

Таким образом, программные файлы "Финансов без проблем" на жестком диске у меня хранятся в одном месте, а в директориях:

\FBP\PROBA
\FBP\TEST
\FBP\STANDART\EXAMPLE
\FBP\STANDART\EXCHANGE
хранятся как бы три разные бухгалтерии со своими данными, правилами контировки документов, описаниями отчетов и т.д. По ходу работы таких "бухгалтерий" становилось намного больше, но эти оказались самыми ходовыми. В дальнейшем в книге мы будем ориентироваться на такую структуру размещения файлов. Вы же вольны спланировать удобную для себя структуру размещения программы и данных на жестком диске. Если Вы собираетесь прочитать эту книгу до конца и разобрать приведенные в ней примеры предусмотрите наличие отдельной директории для программных файлов (в дальнейшем STANDART), а также директорий типа PROBA и EXAMPLE. Первую мы будем использовать для выполнения примеров книги. Вторая директория нам нужна для того, чтобы скопировать в нее "джентльменский" набор файлов, стандартно поставляемых с программой. Для реальной работы Вы можете создать себе одну или несколько (по числу обслуживаемых Вами бухгалтерий) директорий. Кроме того, можно посоветовать внутри каждой своей реальной "бухгалтерии" сразу создать поддиректории, соответствующие разным годам. Например, так:

Такое размещение желательно из-за того, чтобы не возникало путаницы в файлах правил и данных разных лет. В дальнейшем, по мере освоения программы Вы научитесь размещать рабочие файлы в соответствии со своими потребностями. Теперь, после того как создана нужная структура директорий скопируем с дискеты основные файлы "Финансов без проблем" в директорию программных файлов, а файлы примеров в соответствующие им директории. Если Вы не пользовались предыдущими версиями программы, то файлы !whats.new, 12.exe, 23.exe, 34.exe не представляют для Вас особого интереса. Также, совершенно необязательным для практической работы является содержимое директории EXCHANGE, однако там содержится весьма поучительный пример использования программы и его стоит переписать. Автор, не стал экономить место на диске, хотя такой же новичок, как и Вы. В результате получилось примерно следующее:

Теперь надо позаботиться о том, чтобы можно было запускать "Финансы без проблем" в директориях каждой из "бухгалтерий". Для этого с помощью любого текстового редактора составим файл f.bat, все содержимое которого исчерпывается одной единственной командой:

c:\>\fbp\standart\fine
Конечно, эта команда будет правильно работать только в предположении к той файловой структуре, которая описана выше. Если Вы разместили программные файлы "Финансов без проблем" на другом логическом диске или в другой директории, чем это сделал автор Вам необходимо учесть это обстоятельство в команде, которую Вы запишете в файл f.bat. Теперь скопируйте f.bat в директории PROBA, EXAMPLE, EXCHANGE. Благодаря его наличию мы сможем имея одну копию программы на диске вызывать ее из каждой нашей "бухгалтерии". Альтернативой созданию файла f.bat (кстати, можно было дать ему любое другое название) было бы явное указание пути поиска программных файлов в директиве PATH файла autoexec.bat. Однако, в данном случае нам пришлось бы для вызова программы вводить с клавиатуры 4 символа, а не один, что менее удобно. Это тем более важно, если мы хотим использовать "Финансы без проблем" по назначению - то есть в максимальной степени устранить технические проблемы в нашей работе. Теперь установим дискету с маркировкой "Некоторые вопросы использования программы", создадим где-нибудь на диске директорию для файлов демонстрационного ролика и скопируем в нее содержимое второй дискеты.

Вторая дискета нам больше не нужна. Содержимое третьей дискеты имеет смысл скопировать только в том случае, когда предполагается использование программы на нескольких компьютерах. На ней записана программа, позволяющая объединять данные, полученные на нескольких компьютерах в одной базе данных для сводного учета. Из восьми файлов, находящихся на ней нам нужны только три - suf.exe, !readme.doc и !runme.exe. Скопируем suf.exe и !readme.doc в директорию программных файлов, а !runme.doc в директорию ROLIK или созданный Вами ее аналог. Остальные файлы уже есть в директории программных файлов. Все. Фирменные дискеты нам больше не понадобятся. Сложим их в пакет и уберем в надежное место. Теперь необходимо выполнить привязку "Финансов без проблем" к Вашему компьютеру. Конечно, можно работать и без привязки, но в этом случае будьте готовы к тому, что программа будет часто "зависать", да так, что и три кнопки не помогут. Специально для господ пиратов сообщаем - длительное нелегальное использование рабочей версии программы влечет за собой уголовную ответственность и в непредсказуемый момент может нанести тяжелый урон вашей (sic! - с маленькой буквы) файловой системе. Прецеденты форматирования винчестеров и сжигания портов у злостных "взломщиков" автору известны. Итак, выполняем привязку. Перейдем в директорию программных файлов и выполним программу install.exe. На экран будет выведено сообщение:

Конечно, условный номер Вашего компьютера будет другой. Запишите его на бумагу, позвоните в "Хакерс Дизайн" по телефону (095) 438-03-31, представьтесь и сообщите этот номер специалистам фирмы. В ответ Вам сообщат ключ, соответствующий Вашему компьютеру. Вы введете его в качестве ответа на вопрос программы install.exe и с этих пор станете зарегистрированным пользователем программы. В результате проделанной процедуры в директории программных файлов появился файл fin.cod, содержащий код Вашего ключа. Скопируйте его, а также файл first.rpt из директории EXAMPLE в директории каждой из Ваших бухгалтерий. Все. Процедура инсталляции закончена. Никаких специальных действий по изменению конфигурации системы, как правило, не требуется. Единственное, что пришлось выполнить впоследствии автору, так это несколько уменьшить аппетиты утилиты smartdrv.exe по использованию оперативной памяти с 2 до 1М байт (при общем объеме 4М) за счет чего быстродействие "Финансов без проблем" значительно повысилось. Информация для любителей Windows. Нет никаких проблем при использовании программы в среде этой операционной системы. Всего в 4М памяти автору удавалось запускать до трех копий "Финансов без проблем" одновременно. Никаких конфликтов в течении нескольких месяцев работы над книгой замечено не было. Даже создалось впечатление, что здесь программа работает быстрее. Теперь можно приступать к последовательному освоению программы "Финансы без проблем".

"Финансы без проблем" - первое знакомство

Прежде, чем перейти к содержательным вопросам использования "Финансов без проблем" при ведении бухгалтерского учета, рассмотрим основные приемы работы с программой. Зайдем в директорию стандартного демонстрационного примера (в дальнейшем EXAMPLE) и выполним заранее подготовленный файл f.bat. На экране дисплея отобразится примерно следующее:

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

1. посредством выбора нужного пункта меню;
2. переведя указатель "мыши" на нужную пиктограмму ;
3. нажав нужную клавишу.

Для начала поработаем мышкой. Поставим курсор мыши на самую левую пиктограмму. Буквально через секунду после остановки курсора в нужном "квадрате" рядом с пиктограммой должно появиться окошко с текстом "Режим ввода и просмотра операций":

Подвигайте курсор мыши вдоль "пиктограммного ряда" ненадолго останавливаясь на каждом изображении и почитайте тексты появляющихся сообщений. Теперь установите курсор мыши на левую пиктограмму и нажмите левую кнопку мыши. На экране появится окно ввода операций:

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

1. закрыть окно, то есть покинуть режим ввода операций;
2. переместиться в нужное место реестра операций (реально переместиться пока никуда не получится);
3. как вводить числа мышью.

Теперь щелкните мышью на четвертой слева пиктограмме. На экране появится окно плана счетов и начальных условий. Так же, как и в предыдущем окне обследуйте его мышиным курсором, останавливаясь на экранных изображениях. Убедитесь, что перечисленные выше три задачи решаются здесь точно также. Таким образом, "мышиный" интерфейс во многом идентичен при работе в разных окнах. Закроем окно счетов и начальных условий и опять окажемся в окне реестра операций. Закроем и его. Теперь поучимся пользоваться меню. Вход в него осуществляется клавишей F10. Нажмем ее.

Меню "Финансов без проблем" двухуровневое. При выборе любого пункта "верхнего" меню "выпадают" зависимые подменю. "Подвигайтесь" по меню влево-вправо. Я думаю, не надо объяснять как выбрать ту или иную функцию. Обратите внимание, что напротив некоторых пунктов указана клавиатурная комбинация быстрого вызова данной функции. Запомним их:

Alt-F2 - режим ввода/корректировки операций;
Alt-F3 - режим расчета/просмотра/анализа оборотного баланса;
Alt-F4 - меню выходных форм;
Alt-F5 - режим редактирования плана счетов программы;
Alt-F6 - режим редактирования справочника видов операций;
Alt-X - выход из программы.

Упомянутую в пункте "Ресурсы" комбинацию Alt-F9 запоминать не будем - ни для ума, ни для сердца мы там информации пока не найдем. Кроме вышеперечисленных клавиш запомним следующие:

Esc - почти всегда отменяет какое-либо действие;
F1 - всегда вызывает помощь;
F3 - калькулятор.

Первым делом займемся помощью. Нажмем F1. На экране появится окно помощи. Мы увидим в нем некоторый текст, отдельные слова которого выделены другим цветом, а одно из слов подсвечено специальным маркером. Маркер можно перемещать "стрелками" или мышью. Им помечаются ключевые слова, которые имеют собственную "расшифровку". Для того, чтобы получить расшифровку нужного понятия надо выбрать его клавишей Enter или фиксацией кнопки мыши. "Зайдем" в понятие "отчетный период". На экране появится следующий параграф помощи также с выделенными ключевыми словами. Можно выбрать новое понятие и прочитать про него. Для возврата в предыдущей параграф нужно нажать клавишу BackSpace. Для выхода из помощи - клавишу Esc. Можете "полазить" по текстам помощи и почитать то, что они содержат. Если Вам все ясно - переходите к следующей главе книги. Мы же освоим калькулятор (клавиша F3 в любом режиме и окне):

Ну вот еще! - скажет читатель. Я приобретал программу, чтобы она считала за меня, а тут предлагают учить калькулятор. Все так. Программа будет почти все считать за Вас. Однако, для этого надо приложить известные усилия и кое-где при выполнении операций нам что-то придется считать вручную. Итак, работаем с калькулятором. В отличие от привычного читателю настольного или карманного, калькулятор встроенный в "Финансы без проблем" основан не на последовательном вводе чисел, операций и промежуточных результатах, а позволяет сразу ввести расчетную формулу, которая может включать числа, знаки арифметических операций (+,-,*,/), скобки, а также весь набор встроенных функций и определенных к моменту вычислений переменных. Пусть Вас не смущают последние два понятия - подробнее мы о них поговорим позже. Для выполнения расчета надо просто набрать с клавиатуры расчетную формулу и нажать Enter. Например:

23.07+5*(2345.45-567.947)/45.2

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

После вычисления курсор опять перешел в начало нашей формулы. Для повторных вычислений можно набирать новую формулу. Старая формула автоматически сотрется. Если Вам важно сохранить какие-либо ее фрагменты можно просто "подвигать" курсор вправо-влево. В этом случае старое содержимое не сотрется и Вы можете исправить его так, как нужно. При редактировании в калькуляторе и везде в программе поддерживается режим вставки. Для удаления ненужных символов в поле ввода можно использовать клавиши BackSpace или Del. В дальнейшем Вам иногда придется использовать калькулятор при вводе числовых значений сумм операций. В этом случае, полученный в результате расчетов результат можно "отправить" в поле ввода текущего значения нажав клавишу F10. Клавишами "вверх-вниз" калькулятор можно "передвинуть" в нужное место экрана. Выйдем из калькулятора, нажав Esc. Теперь, не очень вдаваясь в бухгалтерскую суть выполняемых действий попробуем ввести какие-нибудь операции и получить отчеты. Войдем в режим ввода/редактирования операций. Мы пока не знаем, что именно программа "понимает" под словом операция. Чтобы понять просто введем какую-нибудь операцию. Однако, прежде чем это будет сделано, вызвав помощь познакомьтесь со списком активных клавиш, используемых при работе с реестром операций. Ознакомившись, нажмите F7, Insert или щелкните мышью на пиктограмме "Создание нового объекта". На экране появится поле ввода даты операции в котором отобразится значение 1. Обратите внимание, что в заголовке окна реестра операций написано "Операции в январе 1995" (... 1996, 1997 смотря какой год ныне "на дворе", то есть в системной дате компьютера). В дальнейшем мы научимся устанавливать нужный нам год и месяц выполнения операции, а пока оставим 1-ое число без изменений просто нажав Enter. На экране появится меню:

"Финансы без проблем" должны "знать" в каком порядке рассматривать операцию по отношению к другим. В большинстве случаев, порядок операций в течении дня неважен и здесь достаточно указать - "в общем порядке". Однако, некоторые действия должны быть жестко привязаны либо к началу дня, либо к концу дня. Пример: курс валюты мы узнаем примерно в 12.00. К этому моменту мы могли уже ввести какие-то операции, связанные с валютой. Однако, котировать ее мы должны по новому курсу для всех операций текущего дня. В этом случае при вводе операции надо выбрать "в начале дня" и "Финансы без проблем" при выполнении расчетов будут считать, что новый курс установлен прежде, чем выполнены все операции со статусом "в общем порядке". Другой пример - "закрытие" счетов и определение финансового результата мы должны провести последней операцией текущего квартала. Поэтому ей нужно присвоить статус "в конце дня". Если даже после этого будут вводиться проводки за тот же день, изменяющие значения связанных с указанной процедурой счетов, но со статусом "в общем порядке", то "Финансы без проблем" учтут изменения и все "закроют" правильно. Сейчас же мы выберем "в общем порядке". На экране появится меню следующего содержания:

Отлично, нас спрашивают какого именно раздела учета касается данная операция. Если Вас что-то смущает в данном перечне - не беспокойтесь. В дальнейшем мы научимся сами регулировать состав пунктов каждого меню выводимого в качестве подсказки при вводе операций. Выберем, например, "Касса". Появится меню содержащее всего два пункта: "Приход" и "Расход". Выберем "Приход". Опять появилось меню:

Выберем "от реализации".

Программа, как явно следует из текста подсказки, просит нас ввести ставку НДС заложенную в сумму реализации. Введем 20 и нажмем Enter. Теперь просит ввести ставку спецналога. Введем 3. Поле ввода переместится в столбец суммы. Ну-что ж, предположим, что мы что-то реализовали на сумму 1230000. Введем это число и нажмем Enter. Курсор остановился в следующей строке и программа явно хочет, чтобы мы что-то сюда набрали. Наберем "оплачены работы, выполненные в декабре" и нажмем Enter. Ввод завершился. Введенная нами операция подсвечена инверсным цветом, а часть построенной фразы выделена красным (конечно, последнее видят только те, у кого цветной монитор). Что же означает сконструированная нами и программой фраза. Нажмем F6.

На экране появилось окно со списком проводок, суммы большинства из которых записаны в виде формул с несколько странными аббревиатурами входящих переменных. Если посмотреть внимательно, то обнаружится, что есть в них какая-то закономерность очень напоминающая формулы "выделения" НДС и спецналога из включающей их суммы. Нажмем Esc, войдем в меню (F10), далее в подменю пункта "Опции", нажмем Enter на пункте "Проводки в динамике" и после возврата в окно реестра операций опять нажмем F6. Формулы исчезли и теперь перед нами проводки с суммами.

Очень интересно. Откуда ни возьмись, появилось 6 проводок функционально связанных с одной суммой. Первая очевидным образом отражает приход в кассу, вторая и третья начисляют НДС и спецналог, четвертая относит сумму, очищенную от НДС и спецналога на финансовый результат, пятая судя по сумме (1,000,000*0.008) начисляет налог на пользователей автомобильных дорог по ставке принятой в Москве (0.8%), а шестая сразу же списывает эти затраты на убытки. Глядя на все это испываешь смешанные чувства. С одной стороны приятно, что нужные проводки построены так легко и непринужденно. С другой стороны непонятно - откуда все это взялось, почему именно данные субсчета участвуют в проводках и что делать, если действуют другие ставки налогов. Все в наших руках. Мы можем заставить программу делать именно такие проводки, какие нам нужно и использовать такие нормативы, которые действуют в КОНКРЕТНОЕ время и в КОНКРЕТНОМ регионе. Собственно говоря, вся эта книга посвящена тому, КАК это сделать. Пока же ограничимся освоением элементарных навыков работы с программой. Продолжим ввод операций. На этот раз выполним операцию Зарплата -> начисление штатным -> индивидуальное. Появилось окно:

Судя по всему, программа просит нас выбрать сотрудника, которому начисляется зарплата. Предположим, у нас работает некто Чистомытов Дмитрий Владимирович и зарплату мы начисляем именно ему. Нажмем F4 или Tab. На номере субсчета появился курсор. Значит можно редактировать. Изменим 33 на 001, нажмем Enter и вместо слова "сотрудник" напишем "Чистомытов". Явно, что имя и отчество в одной строке узкого окошка не поместятся. Нажмем стрелку вниз. "Полоска" ввода переместилась в следующую строку. Это то, что нужно. Напишем здесь Дмитрий, а строкой ниже "Владимирович" и, наконец, нажмем Enter. Теперь есть из кого выбирать. Нажмем Enter. Окно списка сотрудников исчезло и курсор перешел в поле ввода суммы. Введем сюда 300000, а в поле комментария - "Начислено Чистомытову за январь". Ввод операции закончился. Нажмем F6. Опять перед нами огромный список проводок. Судя по всему начислена масса налогов по зарплате и сразу зачтены затраты на нее в финансовом результате предприятия. Тут уж совсем непонятно откуда что взялось. Однако, продолжим. По той же схеме начислим зарплату Комлеровичу Николаю Васильевичу. Однако, теперь при появлении окна списка сотрудников вместо F4 нажмем F7 и в появившейся пустой строке ввода введем 70-002 и далее фамилию, имя и отчество на разных строках. В качестве суммы введем 200000. Как перемещаться по списку операций? "Стрелками" переведите селектор реестра операций (полоску инверсного цвета) на первую операцию. Обратите внимание на то, что пометка (галочка) на правой стороне окна реестра операций также меняет свое положение при смене активной (помеченной селектором) операции. Это так называемый лифт. Он используется для:

1. указания на относительное местоположение текущей операции в списке;
2. для быстрого перемещения по списку операций.

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

Home - в начало списка;
End - в конец списка;
PageUp - на страницу вверх;
PageDown - на страницу вниз.

Для поиска операции по номеру можно использовать следующий прием. Нажмите клавишу Alt, не отпуская ее введите номер операции, а затем отпустите Alt. Селектор операции переместится на операцию с заданным номером. Если операции с указанным Вами номером в списке нет, то селектор останется на месте. Для перемещения к операциям нужной даты надо просто набрать ее на клавиатуре. Если за указанную дату операции вводились - селектор остановится на первой из них. Теперь поучимся корректировать данные. Корректировка вызывается клавишами Enter или Tab и практически полностью повторяет режим ввода с той разницей, что теперь при выборе из любых меню курсор меню позиционируется именно на той позиции, которая была выбрана при вводе (предыдущей корректировке) операции. Это очень удобно, поскольку часто надо изменить только один или несколько реквизитов операции. В этом случае большинство выборов не надо повторять и их можно "подтвердить" просто нажимая Enter. Попробуйте откорректировать какие-либо записи, но таким образом, чтобы после всех проведенных корректировок вернуться к тому, что мы ввели изначально. Для выборочной корректировки отдельных реквизитов можно использовать мышь. Если необходимо откорректировать только дату или только сумму операции щелкните мышью на нужном реквизите - дате или операции. Выборочная корректировка удобна в тех случаях, когда смысл операции остается тем же, но нужно внести исправления в сумму, дату или комментарий. Измените дату первой операции на 4 января, а второй и третьей - на 25. Сведения для особо ленивых. Цифры можно вводить не только с клавиатуры, но и мышью, выбирая при активном поле ввода числового параметра нужные значения на "линейке" внизу экрана и вместо клавиши Enter пользуясь пиктограммой с аналогичным названием. Теперь попробуем скорректировать сумму. Изменим, например, в зарплате, начисленной Чистомытову, значение суммы операции с 300000 на 400000. Поскольку корректировка содержания операции не нужна щелкнем мышью на сумме. После ввода новой суммы программа предложит откорректировать поле комментария. Если сейчас вновь обратиться к построенным проводкам мы увидим, что корреспонденции счетов не изменились, но все суммы стали иными. Итак, мы умеем вводить и корректировать операции. Теперь поучимся их удалять. Чтобы не портить то, что уже введено, начнем ввод еще одной операции, но при вводе даты нажмем на Esc. Процесс ввода прекратится, но запись о "пустой" операции останется в реестре. Она нам не нужна. Нажмите F8, Delete или щелкните мышью на пиктограмме "Удаление объекта" и в ответ на запрос программы:

Выберите "Да". Операция удалена.

Освоим еще одну типовую процедуру работы с программой - печать информационных объектов. Она вызывается нажатием клавиши F5 или щелчком мыши на пиктограмме с изображением принтера. На экране появится меню:

Распечатайте реестр введенных операций вместе с проводками, утвердительно ответив на запрос "Печатать с проводками ?". Если принтер не подключен, программа в "красной" строке внизу экрана "скажет": "Принтер не отвечает". В этом случае нажмите Esc, разберитесь с принтером (поставьте бумагу, включите в сеть, установите ONLINE) и повторите процедуру заново. Выбрав нужный пункт меню печати можно вывести реестр в обычный текстовый файл, доступный для редактирования и просмотра любым текстовым редактором, например, встроенным в Нортон Коммандер. Итак, мы рассмотрели основные типовые процедуры работы с реестром операций. Не разобранными остались только операции перестановки операций (F9), установки фильтра (F2) и работы с первичным документом. Первую мы оставляем для самостоятельного освоения читателем, к последней вернемся впоследствии, а сейчас рассмотрим способы установки фильтра. Позиционируйте селектор операции на операцию начисления зарплаты Комлеровичу и нажмите F2. На экране появится окно со следующим содержанием:

Это окно ввода фильтра. С его помощью мы можем выбирать операции за определенный диапазон дат, с нужным диапазоном сумм (в частности по одной сумме), а также с заданным типом операций. Попробуем выбрать все записи начисления зарплаты. "Пройдите" ограничения на диапазоны дат и сумм не внося в них никаких изменений. Появилось уже знакомое нам меню списка разделов учета. Выберем "Зарплата". Появилось следующее меню. Оно тоже нам знакомо. Обратите внимание на нижнюю строку экрана. В ней выведено сообщение:

Выберите шаблон для вида операции.      End-все    Del-очистить
Поскольку мы не хотим больше уточнять смысл отбираемых операций нам нужно очистить остальные элементы фильтра. Нажмем Del. Опять появилось меню разделов учета. Опять выберем "Зарплата". При повторном появлении окна меню уточнения типа операции нажмем End. Теперь в окне фильтра отображаются только диапазоны дат и сумм, а также слово "Зарплата". Программа предлагает нам ввести ключевое слово комментария. Не будем этого делать и просто нажмем End. На экране остались только операции начисления зарплаты. Теперь для того, чтобы опять вернуться к просмотру полного списка операций надо повторно нажать F2. Чуть-чуть мудрено. Но ничего, при небольшом навыке Вы будете устанавливать фильтры как Вам вздумается. Попробуйте пофильтровать данные, например, по диапазону сумм и дат. Итак, мы научились вводить, редактировать, фильтровать и печатать операции, просматривать списки связанных с ними проводок. Однако все выполняемые до сих пор действия датировались январем. Как перейти в другой месяц? "Финансы без проблем" позволяют пользователю работать с данными всего финансового года. В его пределах доступны все месяцы. Никаких специальных действий по переносу сальдо между месяцами выполнять не нужно - будучи установленными на начало года или на начало любого месяца они автоматически пересчитываются программой для всех последующих. При работе с реестром операций для перехода из одного месяца в другой используется программный календарь. Он размещен в меню "Документы".

Обратите внимание, что "напротив" января стоит цифра 3. Действительно, мы ввели в январе ровно три операции. Календарь показывает сколько операций в каждом месяце введено. Для перехода в другой месяц достаточно просто выбрать его, позиционировав курсор на нужный месяц и нажав Enter. Перейдите в февральский реестр операций. Как видите он пуст. Все правильно - мы пока вводили операции только в январе. Теперь ничто не мешает нам выполнять операции в феврале, а потом вернуться назад в январь. Назначение календаря более широко, чем просто возможность перехода из месяца в месяц. С его помощью можно установить границы отчетного периода. Отчетным периодом в "Финансах без проблем" может быть любой интервал времени в пределах календарного года - месяц, квартал, полугодие, год, несколько дней и т.д. Обратите внимание на то, что в календаре поставлена "скобка". Верхняя позиция "скобки" указывает на нижнюю границу отчетного периода, а нижняя - на верхнюю границу. Кроме того, напротив нижней границы указано число 1, а на против верхней - 31. Это означает, что в настоящий момент установлен отчетный период с 1 января по 31 декабря - то есть полный календарный год. Как изменить границы отчетного периода, например, сделать отчетным периодом 2-ой квартал? Установите курсор меню на строку "Апрель" и нажмите клавишу F4. На экране появился календарь за Апрель.

Программа предлагает нам указать дату начала периода. Выберем 1-ое. Верхняя граница "скобки" переместилась на апрель. Переместим курсор на июнь и нажмем F5. Опять появился календарь. Выберем 30-ое. Нижняя граница "скобки" переместилась к июню.

Теперь отчетным периодом является 2-ой квартал. В отчетных формах входящее сальдо будет указываться на 1 апреля, исходящее - на 30 июня, а обороты будут рассчитываться за указанный период. Переустанавливать границы периодов можно с помощью мыши. Сначала устанавливается нижняя граница, а потом верхняя. Кроме того, имеет значение где щелкнуть мышью - левее или правее "разделительной" полосы календаря. Попробуйте разобраться здесь сами. Таким образом, использование календаря позволяет гибко управлять границами отчетного периода. Отметим, что при необходимости можно получать отчеты за период от одного дня до целого года и даже часа! Установите отчетным периодом целый год. Теперь попробуем провести анализ введенной информации. "Финансы без проблем" предоставляют пользователю возможность в любой момент получить сальдо и обороты счетов, задействованных в учете. Основным режимом работы с выходной информацией является работа с оборотным балансом. Для вызова данного режима можно нажать клавиатурную комбинацию Alt-F3 или щелкнуть мышью на второй слева пиктограмме. После непродолжительного "раздумья" компьютера на экране появится программное представление оборотного баланса. Полистаем его клавишами PageUp, PageDown. Если Вы вводили операции в соответствии с изложением книги, то откроется следующая картина:

Не удивляйтесь, что представление оборотного баланса несколько отличается от того, к которому Вы привыкли. Здесь вместо традиционных шести числовых колонок (входящее сальдо: дебет, кредит; обороты: дебет, кредит; исходящее сальдо: дебет, кредит) отображены лишь четыре. Входящее и исходящее сальдо (Н.остаток и К.остаток от слов "Начальный" и "Конечный") представлены в "свернутом" виде, то есть кредитовые сальдо показаны со знаком минус. Это, конечно, не означает, что программа "вуалирует" дебиторскую/кредиторскую задолженность - там где надо (например в балансе) состояние расчетов показывается "развернуто". Здесь же, для экономии места на экране приведен свернутый вариант сальдо.

Как работать с оборотным балансом. Для перемещения по нему полностью пригодны рекомендации данные при описании работы с реестром операций - здесь "работают" те же клавиши, так же можно использовать Alt-переход к нужному счету, очень удобно взаимодействие с лифтом (кстати, самое время поупражняться в его использовании).

Оборотный баланс является стартовой позицией анализа данных в "Финансах без проблем". В этом одно из значительных отличий компьютерного учета от ручного, при котором выход на оборотный баланс является результатом, целью выполнения учетных процедур. Отличие объясняется тем, что при компьютерном учете вычисления выполняются быстро - компьютеру все равно когда и сколько проводок "перемалывать". Поэтому пользователю "Финансов без проблем" сразу предлагается "ознакомиться" с конечными хозяйственными результатами, полной картиной финансового состояния на текущий момент. В то же время, для понимания почему именно сложился такой результат, программа предоставляет возможность получить самые разнообразные расшифровки конкретных позиций оборотного баланса, а именно сальдо и оборотов синтетических счетов. Основными элементами анализа здесь являются:

1. анализ истории счета;
2. анализ корреспонденций счета;
3. анализ параметров счета.

Обсуждение понятия "параметров счета" и соответствующего раздела анализа мы оставим до "лучших времен" и вернемся к нему тогда, когда освоим азы настройки программы на специфику учетных операций предприятия. Сейчас же сосредоточимся на первых двух способах анализа. Сначала проведем анализ истории счета. Подведем селектор записи оборотного баланса к счету 46 "Реализация" и нажмем на Enter или щелкнем мышью на кнопке Анализ расположенной в левом нижнем углу экрана. На дисплее отобразится следующая форма:

В первой колонке формы отображается номер операции по порядку, выбранный из реестра операций. Вторая колонка содержит дату операции. Третья - счет, с которым корреспондировал основной счет (в данном случае - 46-ой). Четвертая показывает наименование корреспондирующего счета (субсчета), указанное в плане счетов. Пятая и шестая колонки показывают величину оборота основного счета, а седьмая - динамику сальдо основного счета. Как мы уже знаем, кредитовое сальдо отображается со знаком минус. Вернемся в оборотный баланс, нажав клавишу Esc или щелкнув мышью на "кнопке" закрытия окна, и проанализируем счет 68. Нам откроется следующая картина:

Если нас заинтересовала конкретная операция поставим на нее селектор списка и нажмем Enter. На экране появится окно, содержащее запись о данной операции. Если еще раз нажать Enter, то мы попадем в реестр операций. Если оказалось, что данная операция ошибочна - можно тут же ее скорректировать. После выхода из реестра операций оборотный баланс будет пересчитан и мы увидим изменившиеся величины сальдо и оборотов счетов. Попробуйте проделать корректировку суммы второй операции (начисление зарплаты Чистомытову) заменив значение 400000 на 500000. Вернувшись в оборотный баланс Вы увидите, что сальдо и обороты 68, 69, 70, 80 счетов изменились. Также изменились обороты 20 счета. Таким образом, при анализе истории счета мы можем видеть как "исторически" формировалось сальдо счета при выполнении операций. Здесь полностью видна "динамика" развития событий, однако нет сведений подобных тем, которые мы привыкли видеть в главной книге, а именно данных о суммарном движении средств между разными счетами. Посмотрим как решается эта задача. Проведем анализ корреспонденций счета 80. Для этого, спозиционируем на нем селектор списка оборотного баланса и нажмем клавишу F9 или щелкнем мышью на кнопке Корреспонденции. В появившемся на экране окне будет представлена следующая информация:

Как видно, это некоторым образом трансформированное представление главной книги. Отдельно показано сальдо выбранного счета, а обороты по дебету и кредиту приведены с разбивкой по счетам, корреспондирующим с главным. Для получения более компактного представления можно нажать клавишу F6. В этом случае вся информация по субсчетам будет "свернута" до итоговой корреспонденции с синтетическим счетом.

Обращаем Ваше внимание на то, что любую из "расшифровок", а также оборотный баланс можно распечатать на принтере или вывести в текстовый файл. Это можно сделать аналогично тому, как мы это делали при распечатке списка операций. При проведении анализа часто требуется информация только о конкретном наборе счетов. Так например, множество счетов из стандартной поставки никак не были задействованы в проведенных нами операциях и их отображение на экране нам не нужно. "Финансы без проблем" предоставляют пользователю удобную возможность "фильтрации" отображаемой итоговой информации. Для того, чтобы оставить на экране только интересующие Вас счета оборотного баланса необходимо пометить их клавишей "пробел", а потом нажать клавишу F6. На экране останутся только помеченные счета. Повторное нажатие F6 "снимет" фильтр. Снятие пометки счета вызывается повторным нажатием пробела. Отфильтруйте счета 20, 46, 50, 68, 69, 70, 80. Очень удобно - вся нужная информация оказалась на одном экране.

Продолжим знакомство с разделами программы. В меню "Документы" выберем пункт "Баланс". После непродолжительного "раздумья" программа отобразит на экране информацию о сальдо счетов с учетом их статуса. Обратите внимание - это не форма N 1. Здесь представлено то, что является балансом на самом деле - сальдо счетов на начало и конец периода, разнесенные в актив или пассив в соответствии со своим статусом. Не расстраивайтесь, если Вам что-то не нравится в этой форме. В дальнейшем мы увидим как настроить ее таким образом, чтобы она соответствовала Вашим требованиям. В особенности это касается тех, у кого числа в пассиве отображены со знаком минус - в одном из вариантов поставки программы есть легко устранимая ошибка в настройке формы. "Встроенный" баланс на самом деле не является встроенным - это обычная выходная форма, правила построения которой описаны на специальном языке генератора отчетов "Финансов без проблем" который мы освоим в последующих главах. То, что "Баланс" занимает место в главном меню, а не в составе файлов форм - исторический анахронизм унаследованный от прошлых версий программы.

Перейдем теперь к рассмотрению файлов форм. Файлы форм - это перечень отчетов, определений первичных документов и так называемых файлов-коэффициентов описанных на языке "Финансов без проблем". В дальнейшем изложении мы подробно рассмотрим как пользоваться этим языком для описания правил построения первичных документов, отчетов и расчетных алгоритмов отражающих различные учетные схемы. Сейчас же наше рассмотрение будет строго утилитарным. Мы попробуем построить какие-либо отчеты. Если "полистать" перечень файлов форм, то можно увидеть, что они разбиты на несколько групп:

1. Отчетные формы;
2. Файлы-коэффициенты;
3. Формы первичных документов;
4. Истории;
5. Общие определения.

Сейчас нас интересуют только отчетные формы и истории. Список файлов форм представлен в виде меню. Найдем в нем строку "FORM1 * Баланс пpедпpиятия (фоpма 1)" спозиционируем на нее курсор и нажмем Enter. Очень скоро мы увидим перед собой знакомую форму N 1. Полистаем ее. Как ни странно баланс сходится. Ничего удивительного - во введенных нами операциях не было таких, которые оставили бы сальдо на счетах не входящих в те или иные строки баланса. Вспомните, что проводки введенных нами операций программа составила таким образом, чтобы счет 46 был закрыт. Все бы хорошо, но пока непонятно:
1. откуда программа знает КАК свести баланс;
2. как сделать так, чтобы на титульном листе отображались сведения не о "Хакерс Дизайн", а о Вашем предприятии.

Все это мы узнаем в дальнейшем. А пока обратите внимание, что построенная форма для просмотра загружена в текстовый редактор. Это текстовый редактор "Финансов без проблем". Он очень прост. Мы предполагаем, что Вы когда-либо работали с программами редактирования текстов и Вам не надо объяснять основных связанных с ними понятий. Просто почитайте соответствующий текст помощи. Единственное чего там нет, но о чем Вы, наверное, уже догадались так это о том, что для быстрого перемещения по тексту можно использовать управляемый мышью лифт. Можете выполнить другие отчетные формы или формы-истории. Мы не рекомендуем Вам пытаться выполнять файлы-коэффициенты или формы первичных документов - ничего не выйдет - здесь они правильно не отработают. Как, откуда и когда они вызываются мы рассмотрим позже. Итак, мы, в целом, освоили "операторскую" работу с программой. Однако, прежде чем переходить к более серьезным вещам поподробнее самостоятельно разберитесь с разделом меню "Опции". Для этого просто вызовите список опций, нажмите F1 и почитайте соответствующие тексты помощи. Вы можете установить опции как угодно, однако пока я рекомендую оставить цветовую палитру неизменной - в данной книге комментарии будут относиться именно к этому цветовому оформлению. Кроме того, везде далее предполагается, что включены опции "Проводки в динамике", "Синтаксис подсвечен", "Числа с запятыми", а "Пpавила защищены", "Баланс до текущей", "Пpовеpка на каждой" и "Числа с копейками" отключены. Кроме того, если Вам уже надоели постоянно выскакивающие "баллоны" с помощью можете включить опцию "Баллоны: нет" или "Баллоны: в правилах". Если Вам, как и автору, больше нравится текстовый экран включите опцию "Как в Windows: нет, просто текст" - пиктограммы пропадут, однако в нижней строке экрана всегда будет отображаться список "горячих" клавиш. Фанатикам Windows, наоборот, рекомендуем включить опцию "Как в Windows: графика, кроме мыши" - в этом случае частое мерцание экрана, возможное при использовании программы в среде Windows при перетаскивании мыши, исчезнет. В остальном же рекомендаций нет - экспериментируйте на здоровье.

Как работают "Финансы без проблем"

Итак, мы получили первые навыки использования программы. Однако, пока мы не можем использовать ее осмысленно, поскольку не умеем выполнить привязку к специфике учетных процедур, используемых на конкретном предприятии. Маловероятно, что те настройки, которые входят в стандартную поставку удовлетворят всех без исключения пользователей. Даже если кого-то они вполне устраивают, мы все же рекомендуем освоиться с основными возможностями настройки, поскольку только при этом условии можно обеспечить должный уровень автоматизации учета. Сейчас мы сформулируем основные принципы, на которых строится работа "Финансов без проблем", а также связанные с ними понятия и термины. "Финансы без проблем" относятся к разряду инструментальных бухгалтерских систем. Что это значит? Если Вы когда-либо работали с электронными таблицами, то знаете, что сами по себе эти программы не могут решать задач конкретной предметной области. Однако, если в клетки электронной таблицы ввести нужные значения и расчетные формулы, то можно настроить их на решение достаточно широкого перечня задач в разных сферах деятельности. Назначение "Финансов без проблем" уже, чем электронных таблиц - это программа ориентирована на специфику конкретной предметной области - бухгалтерского учета. Однако, также как и в электронных таблицах в этой программе есть специальные средства, которые бухгалтер может использовать для решения своих задач, выполнения своих расчетов. За счет этого достигается гибкость настройки на конкретную специфику учетных операций и высокий уровень адаптируемости к бесконечным изменениям в законодательстве, к которым мы привыкли за последние годы. Это означает, что при всех изменениях плана счетов, налоговых ставок, правил расчета тех или иных показателей, форм отчетности и т.д. не нужно ждать, пока в "Хакерс Дизайн" изготовят новую версию программы, учитывающую эти изменения, а можно самостоятельно, изменив те или иные нормативные данные или расчетные формулы "заставить" программу считать как положено. Конечно, за такую гибкость надо платить. Платить, прежде всего, временем, которое нужно потратить на освоение средств настройки программы и на саму настройку. Сразу предупреждаем - освоение всех "премудростей" "Финансов без проблем" - непростая задача. Однако, потраченное время окупится сторицей - те расчеты, на которые раньше у Вас уходили дни и недели "Финансы без проблем" будут делать за секунды и минуты.

За счет чего же достигается гибкость?

Прежде всего, за счет того, что сама по себе программа "не знает" огромного множества тех премудростей бухгалтерии, которые связаны с большинством специфических расчетов, будь то расчет зарплаты, износ основных средств, калькуляция себестоимости, расчет налоговых платежей, формирование отчетности и т.д. Фактически, "Финансы без проблем" "знают" только базисные понятия бухгалтерии существующие без изменений 500 лет - принцип двойной записи и понятие счета. Единственный расчет, которому программу не надо специально "обучать" - это расчет сальдо и оборотов счетов. Все остальные бухгалтерские понятия и расчеты должны быть "растолкованы" программе и описаны на специальном, понятном ей языке. Только после этого программа сможет их выполнить. Суть настройки программы сводится к следующим основным действиям.

Во-первых, следует настроить план счетов: открыть нужные счета и субсчета, определить структуру размещения параметров счетов, в которых будет храниться нормативная информация, связанная с конкретными субсчетами, например, ставки налогов, данные натурального учета, вспомогательные значения, накапливающие ту или иную информацию, необходимую для последующих расчетов. Во-вторых, необходимо определить правила, по которым программа будет выполнять разноску сумм по счетам при выполнении тех или иных учетных действий. Иными словами, определить состав проводок, выполняемых Вами при отражении хозяйственных операций. В-третьих, требуется задать правила вычисления сумм, каждой из проводок, входящих в составленные операции, будь то выделение НДС и спецналога из общей суммы операции, проценты начисления налогов на заработную плату, формулы закрытия операционных счетов, калькуляции себестоимости, расчета прибыли и т.д. В-четвертых, необходимо определить состав, реквизитную структуру и правила расчета показателей форм отчетности и других необходимых Вам выходных форм.

После того, как "правила игры" заданы останется только регистрировать операции по тем принципам, которые мы уже разбирали. "Финансы без проблем", руководствуясь этими правилами и данными зарегистрированных операций, будут автоматически составлять проводки, там где надо вычислять их суммы и сводить результаты в оборотный баланс и отчетные формы. От того, насколько качественно составлены правила зависит степень автоматизации решения Ваших повседневных учетных задач и степень облегчения Вашего каждодневного труда. Иными словами, чем больше усилий Вы приложите в момент начала использования программы, чем больше своих знаний сможете переложить на язык, понятный программе, тем больше будет отдача и тем проще станет Ваша жизнь в дальнейшем. Конечно, это не следует понимать в том смысле, что после первоначальной настройки ничего нельзя будет поправить. Со временем Вы сможете осваивать все новые и новые возможности программы. На первом этапе - самые простые, дальше все более и более сложные. Итак, как же работают "Финансы без проблем"?

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

Таким образом, "Финансы без проблем" ориентируются не на отдельно взятую проводку, а на бухгалтерскую операцию. Всем, кто когда-либо вел бухгалтерский учет является очевидным, что практически любой хозяйственный акт вызывает изменения не на паре, а сразу на нескольких счетах. Когда учат бухгалтерскому учету рисуют схемы различных операций, а потом показывают как их описать на универсальном бухгалтерском языке проводок. Программа построена на том же принципе. Здесь базисным понятием является не проводка, а бухгалтерская операция, включающая в общем случае несколько проводок.

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

Решение этих проблем при традиционных подходах к автоматизации бухгалтерского учета практически невозможно, поскольку такого рода системы строятся на принципе строгого разделения процедур ввода и формирования выходных форм итоговой информации. Здесь вводим проводки, а здесь печатаем главную книгу, оборотный баланс и т.д. Масса работ связанных со вспомогательными вычислениями остается заботой бухгалтера. Исходя из этого появляется желание каким-то образом автоматизировать работы по контировке первичных документов и формированию проводок. Понятно, что нельзя "намертво" "зашить" в программу такие алгоритмы, поскольку постоянно меняются и нормативы и правила расчета. Кроме того, при едином плане счетов каждое предприятие может вести свою уникальную систему субсчетов. Таким образом, необходимо отделить правила построения операций от программы таким образом, чтобы пользователь мог самостоятельно настроить эти правила, а программа их правильно проинтерпретировать.

Реализуя идею построения системы, основанной на понятии "хозяйственная операция" разработчики "Хакерс Дизайн" нашли чрезвычайно привлекательное интерфейсное решение. После записи определения операций в специальной базе знаний, называемой "деревом операций", их ввод в базу данных минимизирует общение пользователя с клавиатурой. Как мы уже видели ранее, ввод операции осуществляется выбором нужных пунктов из последовательно предлагаемых меню. Единственное что нужно ввести - это число текущего месяца и сумму операции, а дальше автоматическую генерацию необходимых проводок и расчет их сумм сделает программа. При этом из выбираемых пунктов меню как бы конструируется фраза, отражающая суть выполняемых действий. После ввода сведений о совершенной операции всегда можно просмотреть проводки, которые построила программа.

К достоинствам внутримашинного хранения бухгалтерских записей в виде операций, подразумевающих проводки, а не самих проводок, следует отнести тот факт, что в этом случае в значительной степени снижается трудоемкость исправления ошибок. Например, какая-то сумма вместо того, чтобы быть отраженной как использование прибыли, была отнесена на общехозяйственные расходы, а потом включена в себестоимость. В этом случае скалькулированная себестоимость оказывается неверной, а вслед за ней неверным окажется расчет прибыли и налоговых платежей. При использовании традиционного для систем автоматизации представления информации в базе данных в виде проводок, многие из них придется удалить, для того чтобы, исправив допущенную ошибку, полностью повторить расчет и выполнить повторный ввод пересчитанных данных. В случае же использования операций, только подразумевающих проводки последние будут автоматически переформированы при изменении лишь одной ошибочной операции.

Другим примером автоматических пересчетов является оценка себестоимости продукции при учете материалов по средним ценам. Предположим, мы провели оприходование нескольких партий материала, скалькулировали среднюю цену единицы и на ее основе оформили бухгалтерские записи по списанию в производство. Потом выяснилось, что при вводе данных о приходе была допущена ошибка и, тем самым, средняя цена была определена неверно, что повлекло за собой неверное определение включенных в себестоимость сумм. При ручном счете или использовании бухгалтерских программ, основанных на традиционном подходе, придется исправлять ошибки по всей цепочке или формировать сторнирующие записи и "проводить" все заново. В случае же использования "Финансов без проблем" ошибку надо будет исправить только в одном месте, а все зависимые вычисления будут проделаны автоматически. Неспроста уже несколько раз в этой книге проводилась аналогия с электронными таблицами. Бухгалтерские расчеты выполняемые "Финансами без проблем" на основе записи операций также отличаются от расчетов программами, построенными "от проводки", как расчеты с помощью электронных таблиц от расчетов с использованием карандаша и калькулятора. В последнем случае достаточно допустить одну ошибку в исходных данных, чтобы последующие результаты и все выписанные на бумагу цифры были неверными. Совсем другое дело, когда мы ввели в клетки электронной таблицы формулы, определяющие порядок наших расчетов. В этом случае достаточно исправить неверные исходные данные, а всю остальную работу программа выполнит автоматически.

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

Однако, такое построение программы, при всех его достоинствах, таит в себе немало подводных камней. Неумелое переопределение некоторых операций может автоматически вызвать процесс полного пересчета результатов по всем действиям, совершенным до этого момента. Поэтому к построенным определениям правил надо относиться чрезвычайно "бережно" и осторожно, особенно если по этим правилам зарегистрировано много операций. Вот почему так важна продуманность решений на начальном этапе освоения программы, особенно если Вы собираетесь автоматизировать как можно больше сложных в алгоритмическом отношении расчетов.

Счета и субсчета

Все бухгалтерские счета и субсчета, с которыми пользователь программы "Финансы без проблем" имеет дело, должны быть описаны в плане счетов. Каждому счету приписываются следующие атрибуты:

1. Код (номер, обозначение счета);
2. Тип по отношению к балансу;
3. Наименование;
4. Сальдо (остаток) счета;
5. Параметры счета.

Суть понятия "номер счета" очевидно. Для России кодами являются законодательно закрепленные номера счетов. В то же время, "Финансы без проблем" допускают наличие счетов, которых нет в российском плане счетов и которые могут использоваться для вспомогательных целей. Программе совершенно безразлична нумерация и кодирование счетов. В этом смысле она полностью интернациональна. Единственным ограничением является то, что значения кодов счетов и субсчетов должны быть уникальными. Тип счета по отношению к балансу в программе может принимать следующие значения:

- активный
- пассивный
- активно-пассивный
- внебалансовый.

Активный счет может иметь только дебетовое сальдо. Пассивный - только кредитовое. Активно-пассивный - дебетовое, кредитовое и развернутое. Внебалансовые счета с точки зрения программы могут иметь любое сальдо. К ним могут быть отнесены операционные, накопительно-распределительные и забалансовые счета, определенные планом счетов, а также специальные (фиктивные) счета используемые для хранения специфической нормативной информации, используемой на предприятии и применяемой при выполнении специальных расчетов. Наименование необязательный, но полезный атрибут счета, служащий для текстового описания его экономической сущности. Содержание понятия сальдо (остаток) счета очевидно. Однако, при использовании "Финансов без проблем" необходимо иметь ввиду следующее:

1. Дебетовые сальдо отображаются программой в плане счетов и в оборотном балансе со знаком "плюс";
2. Кредитовые сальдо - со знаком "минус";
3. Сальдо активно-пассивных счетов в плане счетов и оборотном балансе отображаются в свернутом виде.
При необходимости использования развернутого сальдо, например для корректного отражения кредиторской и дебиторской задолженности в балансе, правило расчета соответствующего показателя необходимо описывать с помощью специальных встроенных функций. При этом на счете, требующем развернутого сальдо должны быть открыты субсчета и входящее сальдо указано для каждого из них.
4. Программа предусматривает возможность контроля сальдо активных и пассивных счетов.

Если включить опцию "проверка на каждой", то при наличии положительного сальдо пассивного счета или отрицательном значении сальдо активного счета при выполнении любого расчета будет выдаваться соответствующее сообщение. К любому счету могут быть открыты субсчета. "Финансы без проблем" трактуют понятие "субсчет" более широко, чем это общепринято. Это могут быть и собственно субсчета и коды аналитического учета. Так, например, субсчетами счета 60 могут быть поставщики, у 41 счета субсчетами являются товары и т.д. При необходимости ведения сложного, многоуровневого аналитического учета можно применить один из следующих приемов:

1. Открыть счета, соответствующие субсчетам, а субсчетами к этим счетам считать коды аналитического учета. Например, вместо одного счета 41, открыть счета 41-1 "Товары на складах", 41-2 "Товары в розничной торговле", 41-3 "Тара под товаром и порожняя", 41-4 "Покупные изделия" и т.д., а в качестве субсчетов к ним - конкретные списки товаров. Аналогично можно поступить, если товары хранятся на нескольких складах. В этом случае можно открыть счета, по количеству складов. Достоинством такого подхода является большая упорядоченность информации, чем при ведении одного синтетического счета, а недостатком - избыточность позиций плана счетов и определенные затруднения при получении итоговой, сводной информации по собственно синтетическому счету.

2. Использовать составные коды субсчетов. Субсчет в "Финансах без проблем" может состоять из 9 символов. Этого вполне достаточно, чтобы закодировать в нем всю необходимую информацию. В дальнейшем, для автоматического анализа кодов на языке программы придется разработать специальную процедуру их обработки. Это не так сложно, хотя и требует определенных усилий, особенно для начинающих пользователей.

3. Использовать специальные, так называемые фиктивные, внебалансовые счета, а в шаблонах определений операций помимо основных проводок указывать проводки этих фиктивных счетов, "пропуская" через них обороты, которые впоследствии могут быть проанализированы штатными средствами программы. Наглядный пример использования фиктивных счетов можно посмотреть в демонстрационном ролике "Аналитический учет (уровни вложенности)".

Разберемся теперь с понятием "параметры счета". Оно было введено в программу начиная с версии 3.1. Что это такое? Известно, что при ведении учета "низовых" разделов необходимо использование достаточно большого количества специфических данных не всегда имеющих прямое стоимостное выражение. Например, при ведении учета основных средств важными содержательными понятиями являются: "норма амортизации", "остаточная стоимость", "дата ввода в эксплуатацию" и т.д. При учете материалов также нельзя ограничиться только стоимостными критериями и нужно вести их учет еще и в натуральных показателях со сведениями о ценах, отклонениях заготовительной себестоимости от учетной и т.д. Даже те счета, по которым ведется только суммовой учет часто требуют использования специфической дополнительной информации: курс валюты, номинальная стоимость облигаций, проценты и срок выплат по ним и т.д. Понятно, что необходимость использования такого рода информации существенно нарушает стройность концепции двойной записи, восходящей еще к Луке Пачиоли. Собственно говоря, специфика разделов учета приводила и приводит многих разработчиков систем автоматизации бухгалтерского учета к концепции системы АРМ, ориентированных на тот или иной конкретный раздел. Под параметрами счета в программе "Финансы без проблем" понимается совокупность числовых величин необходимых для выполнения расчетов связанных со спецификой учетных действий над объектами аналитического учета данного счета. Названия параметров счета едины для всех его субсчетов, а значения параметров, в общем случае, различны для каждого субсчета. Например, для счета 01 "Основные средства" можно определить такие параметры как: "годовая норма амортизации", "накопленный износ", "дата ввода в эксплуатацию", "НДС учтенный при покупке", "НДС списанный", "специальный налог учтенный при покупке", "специальный налог списанный". Для счета 10 "Материалы" при учете по средним ценам можно использовать единственный параметр "количество", а при учете по учетным ценам "количество", "учетная цена", "отклонение в стоимости заготовления". Параметрами счета 70 может быть количество льгот конкретного сотрудника, его оклад, уплаченный с начала года подоходный налог и т.д. Параметрами 68-го счета могут быть ставки конкретных налогов. Каждый счет может иметь до 9 различных параметров. Набор параметров, в общем случае, уникален для каждого синтетического счета. Каждому параметру счета должно быть присвоено свое наименование. Набор параметров, связанных со счетом, является единым для всех объектов аналитического учета (субсчетов) данного счета. Каждый субсчет обладает, в общем случае, уникальным набором конкретных значений параметров. Иными словами, счет, содержащий параметры, как бы определяет таблицу из не более, чем 9 колонок, каждая из которых содержит однородную информацию и имеет единое название. В графах этой таблицы содержатся значения параметров конкретного субсчета. Выбор названий параметров, интерпретация их технико-экономической сущности и правила использования в расчетах полностью отдаются на откуп фантазии и потребностям конкретного бухгалтера. Значения параметров субсчетов первоначально заносятся для всех объектов аналитического учета имевшихся в наличии на начало года или на первое число месяца, начиная с которого учет ведется с помощью программы. Значения параметров могут использоваться в расчетных формулах дерева операций и отчетах посредством обращения к специальным встроенным функциям. Параметры могут быть изменены автоматически при выполнении операций с помощью так называемых псевдопроводок. При появлении новых объектов аналитического учета заполнение значений параметров также осуществляется псевдопроводками. Для просмотра значений параметров, достигнутых к настоящему моменту (концу отчетного периода) в оборотном балансе предусмотрен специальный режим. Прежде, чем приступать к формированию своего рабочего плана счетов, ознакомьтесь с планом счетов стандартного варианта поставки. Вы уже знаете, что "войти" в него можно через пункт меню "Счета и начальные условия" или с помощью клавиатурной комбинации Alt-F5.

Приступим к формированию плана счетов. Запустите "Финансы без проблем" в директории PROBA и выберите режим "Счета и начальные условия". В настоящий момент он пуст. Для ввода нового счета нажмите F7 или Insert. Введите код (номер) счета, например, 01 и нажмите Enter. Программа, в виде меню выведет список возможных типов счета по отношению к балансу.

Выберите нужный, в данном случае "активный". Далее, будет предложено ввести наименование счета:

Наименование может вводиться в несколько строк. Для этого, после написания первой строки, клавишей "стрелка вниз" нужно перейти в следующую строку. Ввод наименования заканчивается Enter. Далее программа предлагает ввести сальдо счета:

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

Для многих счетов параметры не нужны. В этом случае нажмите стрелку вверх или вниз - ввод закончится. К сожалению, названия параметров нельзя вводить все сразу, поскольку весь их перечень не помещается на экране. Для ввода второй, третьей и т.д. пары параметров надо, закончив ввод, "прокрутить" их список, используя клавиши "влево", "вправо" или мышкой, щелкая на "стрелках" или словах "параметр" в заголовке таблицы. Для того, чтобы откорректировать описание счета, надо установить на него селектор списка и нажать Tab или Enter. При необходимости изменить только один из элементов описаний щелкните мышкой именно на нем. Удалить счет, можно клавишами Del или F8.

После заведения счета можно определить его субсчета. Для этого надо, нажать F7 или Insert, позиционируясь на данном счете. Программа "войдет" в описание счета и предложит вводить описатели субсчета:

Отличие процедуры ввода описателей субсчета от аналогичной процедуры для счета состоит в том, что здесь не требуется вводить тип счета - он устанавливается единым для всех субсчетов. Кроме того, вместо наименований параметров здесь должны вводиться их конкретные значения. Завершив ввод субсчетов, можно "подняться" на уровень счетов, переведя селектор списка на первую его строку, отмеченную тремя точками. Обратите внимание, что у счета, на котором открыты субсчета, появился "хлястик":

На нем в скобках указано количество субсчетов. Теперь счет нельзя удалить до удаления всех его субсчетов. Для "входа" в субсчета надо нажать Enter или щелкнуть мышкой на "хлястике". Для продолжения ввода списка счетов необходимо переместиться клавишей Home или с помощью мышки в начало списка и далее действовать, как описано выше. Для быстрого перемещения по списку счетов можно нажав и не отпуская клавишу Alt набрать номер счета. После того, как Alt будет отпущена, программа переместит селектор списка к нужному счету. Для того, чтобы не перетрудить себя вводом плана счетов, скопируйте файл acnt.a3p из директории файлов стандартной поставки в директорию PROBA. В дальнейшем, при разработке примеров правил в данной книге, мы подвергнем систему субсчетов и схему распределения параметров серьезной ревизии. В каждой главе такого рода изменения будут оговариваться отдельно. Однако, общими для всех глав являются следующие коды субсчетов:

Вы можете внести эти изменения в план счетов сейчас или по мере чтения книги. Поскольку все рассматриваемые далее примеры учебные, то значения входящих сальдо счетов нам не важны. Но для того, чтобы было, что "тратить" в первых примерах "внесите" 5 млн. в кассу и "противовесом" 5 млн. в Уставный фонд. Не забывайте, что кредитовые сальдо вводятся со знаком минус.

Простейшие операции

Займемся конструированием операций. Для начала построим правила выполнения элементарных операций, состоящих из одной единственной проводки. Запустите "Финансы без проблем" из директории PROBA. Выберите режим "Виды операций и проводки". Пока не заведено ни одной операции. Только в верху экрана виден "корень" дерева операций. Нажмем F7. От корня "вырастет" ветка со словами "вопрос 1". Сотрем этот текст и напишем "Расчетный счет".

"Стоя" на фразе "Расчетный счет" опять нажмем на F7 и введем текст "приход". "Вырастет" еще одна ветка:

Простейшим вариантом прихода может быть сдача кассы. Так и запишем:

Дальше детализировать нечего. Надо определить конкретную проводку, которая будет выполняться при данной операции. Для этого в терминологии "Финансов без проблем" надо завести уже не ветвь, а лист. Нажмем F6. На дереве "вырастет" лист. Лист дерева операций определяет шаблон построения проводки. В нашем случае это проводка с кредита счета 50 в дебет счета 51. Итого получилось:

Перейдите в режим ввода операций (Alt-F2) и попробуйте зарегистрировать эту операцию. Все что нужно сделать, так это ввести дату, сумму и выбирать последовательные пункты нескольких меню, каждое из которых состоит пока из единственного пункта. После ввода операции нажмите F6:

Как видите и проводка введена и комментарий к ней составлен. Вернемся в дерево операций (Alt-F6) и продолжим их определение. На расчетный счет деньги могут прийти из разных источников - от покупателей, учредителей и т.д. Для того, чтобы определить новые виды приходов "встанем" курсором на слово "приход", опять нажмем F7, в новой ветке напишем "от покупателей" и, далее, определим лист с проводкой по дебету счета 51 и кредиту счета 62 следующим образом:

Зачем перед счетом 62 мы написали странную закорючку? Дело в том, что в нашем плане счетов счет 62 имеет субсчета соответствующие конкретным покупателям. Поэтому операция должна помнить кто конкретно из покупателей нам платил для правильного отслеживания взаиморасчетов. Запись @62 называется @-обращением (читается эт-обращение) к счету. Значок @ должен применяться при построении правил всегда, когда в конкретной операции мы имеем дело со счетом, имеющим субсчета, но в правилах не уточняем о каком именно субсчете идет речь. Это уточнение будет произведено при выполнении операции. Если счет имеет субсчета, а в листе дерева операций мы обращаемся к счету "напрямую", без использования @-обращения к счету, то после того, как мы "уйдем" с данного листа счет "замигает". Программа напоминает нам о необходимости использования значка @. Попробуем выполнить построенную операцию. Теперь меню операций прихода на расчетный счет стало "полнее" и содержит два пункта - "сдана касса" и "от покупателей". Выберем "от покупателей". Программа предложит "список" покупателей - субсчетов счета 62. Скорее всего он состоит из единственной записи. Вы уже знаете как пополнить или изменить список субсчетов непосредственно в процессе ввода. Измените единственный субсчет нашего списка (Tab, F4), например, на 62-001 АО "Рога и копыта" и выберите данную запись. После ввода суммы получится следующее:

А если "расшифровать" проводки, то:

И вводить легко, и запись наглядная и проводка построена.

Таким образом, @-обращение позволяет выбирать субсчета из списка непосредственно при вводе операции. При этом мы можем пополнить или изменить список. Главное, чтобы на используемом в операции счете (счетах) был открыт хотя бы один субсчет. Определим еще несколько "приходов" на расчетный счет:

Если при вводе сделана ошибка, то лишний лист или ветвь можно удалить нажав клавишу (F8). Однако нельзя сразу удалить ветвь, если от нее "растут" другие ветви или листья. В этом случае надо сначала удалить листья и только потом ветви, начиная с "нижней". Аналогично приходам определим несколько расходов. Для определения ветви "расход" надо встать курсором на фразу "Расчетный счет":

Попробуйте вводить эти операции. Легко, не правда ли? Выбирай себе пункты меню и все дела. В дальнейшем список проводок, связанных с расчетным счетом можно произвольным образом пополнить. Теперь составим операции по кассе. Здесь многие операции весьма похожи на операции по расчетному счету и было бы неплохо просто их скопировать, немного подправив. Такой механизм в программе есть. Встанем на "Расчетный счет" и нажмем Alt-F10. На экране появилось меню:

Это меню групповых операций с ветвями дерева. Пункты "отрезать" и "приклеить" позволяют перемещать ветви дерева из одного места в другое. Мы же воспользуемся операциями записи в файл и копирования из файла. Сначала запишем в файл всю ветвь "Расчетный счет", выбрав пункт "Записать в файл *.RUL":

Если Вам не нравится имя 1.RUL введите другое. Далее, нажав на клавишу Home, встанем на корень дерева (фразу "Дерево видов операций"), опять вызовем это меню и приклеим ветвь из файла, выбрав "Приклеить из файла *.RUL". В дереве появились две совершенно одинаковые ветки. Откорректируйте скопированную ветвь так, чтобы она приняла вид:

Для того, чтобы быстро удалить ветвь "перечисление налогов", которая неуместна для перечня операций по кассе, встаньте на фразу "перечисление налогов", вызовите меню групповых операций (Alt-F10) и выберите пункт "Отрезать". Ненужная ветвь отсечена.

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

Мы составим пример применительно к оплате из кассы, прочим дебиторам/кредиторам и отнесением затрат на общехозяйственные расходы. При использовании другой схемы проводок достаточно просто "переправить" счета. Такого рода действия встречаются довольно часто. Суммы проводок связаны достаточно простыми соотношениями и было бы желательно "заставить" "Финансы без проблем" самостоятельно проставлять суммы проводок операции. Это можно сделать несколькими способами. Начнем с самого простого. Дополните правила операцией "Касса -> расход -> за услуги" следующим образом:

Напомним, что мы используем субсчет 19-05 для учета сумм НДС, а 19-15 - спецналога, уплаченных за услуги.
Здесь мы сталкиваемся с новым элементом в построении правил - коэффициентами расчета сумм проводок. Приведенная запись означает, что суммой первой проводки должна стать сумма операции, суммой второй проводки - 100/121.5 суммы операции, третьей - 20/121.5, а четвертой - 3/121.5 суммы. Войдем в реестр операций и зарегистрируем операцию по оплате услуг фирмы "Контакт" на сумму 1215000 руб.

Как мы видим программа сформировала четыре проводки и автоматически рассчитала их суммы. Таким образом, назначение коэффициентов проводок стало окончательно очевидным - они нужны для вычисления сумм проводок по сумме операции. Если коэффициент проводки не указан, то он автоматически считается равным 1. Обратите внимание на то, что хотя в созданной нами операции несколько раз встречается @-обращение, реально выбор субсчета счета 76 осуществляется только один раз. Программа учитывает то, что субсчет уже выбран и не задает лишних вопросов.
Аналогичную операцию можно сформировать и для безналичных расчетов. Сделайте это сами, используя операции "Отрезать в файл" и "Приклеить из файла". Сфера применения операций, суммы проводок которых вычисляются по заданным коэффициентам достаточно велика. Например, от корня дерева операций заведите ветвь "Зарплата", подчиненную ей ветвь "начисление" и, далее, ветвь "в основном производстве":

Здесь мы сразу установили коэффициенты, поделив ставки налогов на 100. Если что-то забыто - поправьте сами. Один процент ПФ и подоходный налог рассмотрим далее. При регистрации операции "Зарплата начисление в основном производстве" списки субсчетов будут предложены дважды - для счета 20 и для счета 70. Попробуйте зарегистрировать данную операцию и посмотрите, что получится.
Здесь мы предполагаем, что учет затрат в основном производстве ведется в разрезе видов продукции. При использовании котлового метода можно вместо @-обращения прямо указать нужный субсчет. Для иллюстрации операций с коэффициентами распределения суммы построим также операцию "Расчетный счет приход от реализации":

Теперь удалите все ранее введенные записи и зарегистрируйте за май следующие операции:

Итак, введено всего три операции. Посмотрим оборотный баланс, отобрав "ненулевые" счета:

Всего три операции, а проводок масса.
Построенные операции можно было бы дополнить еще несколькими проводками. Например, сразу зачесть НДС и спецналог в операции "Касса расход за услуги", списать суммы "прошедшие" через 26 счет на реализацию, а реализацию списать на финансовый результат. Модифицируйте операции следующим образом:
"Расчетный счет приход от реализации":

"Касса расход за услуги":

"Зарплата начисление администрации":

Теперь, ничего не меняя в зарегистрированных операциях, заново постройте оборотный баланс:

Операционные счета закрыты, НДС и спецналог зачтены, прибыль начислена. И это всего тремя операциями. Обратите внимание, что проводки, порождаемые операцией, изменяются при внесении изменений в дерево операций как бы сами по себе. Подобный стиль оформления операций достаточно типичен при использовании "Финансов без проблем". Если при ручном учете Вы закрываете счета в конце периода, то компьютер во многих случаях может делать это на каждой операции. В то же время, можно заставить программу делать перерасчеты и в конце периода. Как сделать это мы узнаем далее.

Формулы и переменные

Ветвится дерево операций, растет. Все бы хорошо, да вот беда - есть проводки которые надо формировать может быть раз в год, а может быть раз за всю жизнь. Лень заводить операцию в каждом из таких случаев. Научим "Финансы без проблем" вводить корреспонденции счетов вручную. Для этого при вводе операции программа должна будет "спросить" нас какой счет дебетуется, а какой кредитуется. Определим такую операцию в виде ветки "растущей" от корня следующим образом:

Букву "K" после знака "?" и в листе (*K) наберите в латинском регистре. Здесь мы сталкиваемся с новым пока для нас понятием программы - переменными и ветвями-вопросами. Переменная - это некоторая область памяти компьютера, в которую может быть записано то или иное значение. Переменные обозначаются одной или двумя заглавными латинскими буквами или одной латинской буквой и цифрой. В нашем примере использованы переменные D и K. Ветвь-вопрос - это такая ветвь дерева операций, которая просит пользователя ввести какую-либо информацию с клавиатуры. Эта информация записывается в переменную, которая затем может быть использована в формулах. Ветвь-вопрос состоит из трех частей - символа "знак вопроса" (?), имени переменной и текста, который выводится на экран в качестве подсказки при вводе. Обратите внимание, что в листе ветви "Ручная проводка" вместо корреспонденции счетов указаны имена переменных, которым предшествует символ "*". (Программисты на языке Си здесь почувствовали что-то родное). Это означает, что в качестве номера счета при формировании проводки будет использовано значение переменной, установленное в момент формирования операции. Иными словами, то, что мы введем в переменную D в ответ на запрос "Дебет" будет дебетуемым счетом, а то, что введем в переменную K по запросу "Кредит" - кредитуемым.
Попробуйте поработать с операцией "Ручная проводка". Если при вводе операции дебетуемым или кредитуемым счетом является счет, имеющий субсчета, то в качестве ответа на запрос вводите не непосредственно номер счета, а @-обращение к нему, то есть перед счетом введите символ @.
В этом случае программа предложит выбрать субсчет также как и при @-обращении к счету непосредственно заданному в описании проводки. При указании синтетического счета имеющего субсчета без предшествующего знака @ операция будет введена, однако при попытке построить оборотный баланс будет выведено сообщение "Дебетуемый счет состоит из субсчетов" и программа "выбросит" нас в дерево операций на тот лист, в котором произошла ошибка. Смоделируйте данную ситуацию.
Аналогично операции "Ручная проводка" можно при желании построить набор "полуручных" проводок, то есть таких, у которых только один из счетов - дебетуемый или кредитуемый - вводится с клавиатуры, а остальные жестко задаются в листе дерева. Например, в операции "Касса расход за услуги" можно вместо счета 26 использовать переменную, значение которой (номер счета) вводится с клавиатуры. Тогда, если у Вас многопрофильное предприятие, одним определением операции можно будет относить затраты по услугам, например, на 20, 23, 25, 26, 43, 44 счета. Вводимые в ветвях-вопросах значения переменных можно использовать не только для определения корреспондирующих счетов проводок, но и для расчета сумм последних.
Рассмотрим пример. Непосредственно от корня дерева операций заведите ветвь "Материалы" и к ней следующие ветви и листья:

В сконструированной нами операции мы сталкиваемся с новым элементом настройки программы "Финансы без проблем" - формулами расчета сумм проводок.
Разберем устройство формул. Любая формула в "Финансах без проблем" состоит из операндов - констант, переменных или встроенных функций, связанных знаками арифметических действий: "+" сложить, "-" вычесть, "*" умножить и "/" разделить.
Что означает в формулах символ "$"? Это специальная предопределенная переменная, которая обозначает сумму операции. Таким образом, запись $*ND/100 означает, что произведение переменных $ и ND делится на 100.
Как устроена наша операция? С клавиатуры в соответствующие переменные вводятся счет-источник поступления материалов, а также ставки НДС и спецналога в процентах. В качестве суммы операции надо ввести стоимость материала без налогов, которые автоматически вычисляются как суммы второй и третьей проводок.
Теперь зарегистрируйте операции, отредактировав как показано соответствующие субсчета:

Как видим, определив одну операцию мы можем "получать" материалы от поставщиков, учредителей, подотчетных лиц и т.д., да еще и с разными ставками НДС и спецналога. И пусть помалкивают конкуренты "Хакерс Дизайн", утверждающие что в "Финансах без проблем" на каждый чох (проводку) нужен свой бантик (операция). Как легко видеть - это совсем не так. Программа допускает составление компактных, общих определений операций. В то же время, использование таких конструкций, хотя и возможно, но увеличивает трудоемкость клавиатурного ввода. Поэтому, лучше немного потрудиться один раз, определить наиболее часто выполняемые группы проводок в виде отдельных операций, а потом просто строить их из "кирпичиков", выбирая последние из меню. Так данные будут вводиться и проще, и быстрее, и с меньшим числом ошибок.
В дальнейшем мы продемонстрируем еще один подход к конструированию операций общего вида, основанный на использовании справочников.

Перейдем теперь к рассмотрению более сложных элементов настройки программы. Как уже говорилось, операндами формул помимо констант и переменных могут быть встроенные функции.
Встроенная функция - это специальным образом закодированное ОБОЗНАЧЕНИЕ некоторого значения вычисляемого по тем или иным правилам для указанного(ых) в функции аргумента(ов).
Вспомним школьную программу, например, тригонометрические функции sin(x), cos(x). Данные "заклинания" есть не что иное как записанные на общепринятом математическом языке ОБОЗНАЧЕНИЯ совершенно конкретных преобразований аргумента (x), выраженного в градусах или радианах. Эти обозначения необходимы для записи математических формул.
Поскольку программа "Финансы без проблем" предназначена для выполнения бухгалтерских расчетов, то ей также необходим определенный язык записи формул расчета бухгалтерских показателей. С простейшими элементами этого языка - константами, переменными и знаками алгебраических операций мы уже знакомы. Однако, все бухгалтерские расчеты нельзя свести к формулам, использующим только эти простейшие объекты. Для формул записи многих расчетов необходимо использовать такие понятия как сальдо и обороты счетов и субсчетов, значения нормативов и т.д. Для того, чтобы при вычислениях по формулам программа могла использовать такого рода объекты и нужны встроенные функции. Только в отличие от математических функций их аргументами являются не абстрактные числа, а обозначения счетов, субсчетов и имена переменных.
Полный перечень встроенных функций программы можно найти в Приложении к данной книге или в документации на программу. Мы будем осваивать их последовательно, по мере необходимости.
Все встроенные функции записываются в квадратных скобках. Обозначение встроенной функции, то есть закодированный смысл ее назначения, всегда строится из двух символов - двух латинских букв или латинской буквы и цифры. После обозначения функции указываются ее аргументы. Аргументами встроенных функций могут быть обозначения счетов, субсчетов, переменных, номера месяцев, лет, числовые или строковые константы. Количество аргументов и их содержание зависят от конкретной функции.

Рассмотрим простой пример использования встроенных функций программы. Назначением создаваемой нами операции является формирование проводок по уплате налогов. В течении некоторого периода какие-то суммы "зависают" на субсчетах учета налогов. Лень вспоминать что это за цифры и, главное, вводить их заново вручную. Поэтому составим операцию по автоматическому формированию проводок перечисления налогов.
Измените ранее составленные операции "Расчетный счет расход перечисление налогов" следующим образом:

Что означает запись [ek @68]? Это пример встроенной функции, вычисляющей кредитовое сальдо субсчета @68. То есть в формируемой проводке в качестве суммы будет фигурировать значение кредитового сальдо соответствующего субсчета.
Как Вы помните, в результате зарегистрированных ранее операций сложились такие цифры:

В том же месяце выполните следующие операции:

Обратите внимание, что при выполнении данных операций программу ни сколько не интересовала сумма - она даже не предлагает нам ее вводить. Причина проста - сумма автоматически вычисляется по формуле.
Если теперь построить оборотный баланс, то можно видеть, что налоги уплачены полностью:

Приведенный пример несколько надуман. Суммы перечислений все-таки лучше вводить вручную. Однако изложенная идея может оказаться достаточно продуктивной, например, при выполнении операций по зачету авансов, как выданных, так и полученных (конечно, если есть уверенность в полном зачете). Операции с вычислением сумм по формулам, включающим функции обращения к величинам сальдо и оборотов счетов могут оказаться весьма полезными при выполнении разнообразных процедур, выполняемых в конце периода.
Например, если Вы так построили систему операций, что они не закрывают каждый раз операционные счета, то можно использовать специальные "закрывающие" операции.
Измените определения операций "Касса расход за услуги" и "Зарплата начисление администрации" таким образом, чтобы они оставляли сальдо на 26 счете. Далее, от корня дерева операций заведите ветвь "Затраты" и далее как показано на рисунке:

Использованная функция вычисляет дебетовое сальдо счета 26. Для "чистоты" эксперимента удалите введенные ранее операции. Далее, в мае зарегистрируйте следующие операции:

Если теперь сосчитать оборотный баланс, то окажется, что на счете 26 образовалось дебетовое сальдо равное 2380000. Конечно, списать его на реализацию можно и вручную, например, операцией "Ручная проводка". Однако лучше поступить иначе. 31 мая со статусом "в конце дня" зарегистрируйте операцию "Затраты списание":

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

Если опять обратиться к оборотному балансу, то можно увидеть, что счет 26 закрыт несмотря на то, что появились новые проводки, изменяющие его сальдо. Заранее введенная операция "Затраты списание" как-бы "подкарауливает" сальдо счета 26 с тем, чтобы сразу же его списать.

Предложенный вариант "закрытия" счета 26 реализует принципы маржинальной бухгалтерии и кому-то может показаться слишком банальным. Специально для любителей затратной бухгалтерии, привыкших калькулировать полную себестимость выпускаемой продукции, "размазывая" общехозяйственные затраты по субсчетам основного производства приведем пример другого расчета.

Предположим, на субчетах 20-го счета ведется учет затрат по видам продукции. На 26 счете (те же принципы годны и для 25) в течении месяца "собираются" общехозяйственные затраты. В конце месяца выполняется их распределение по субсчетам 20-го счета пропорционально тому или иному критерию. Мы разберем распределение пропорционально зарплате выплаченной в основном производстве. Составьте операцию "Затраты распределение" так, как показано на рисунке:

Что это такое мы здесь понаписали?

Ветвь, начинающаяся с символа "#" называется ветвью-циклом. Указание в качестве ветви конструкции:

# номер_счета

"вызывает" к жизни процесс перебора всех субсчетов указанного счета и автоматического построения определенных в последующих листьях проводок для каждого из них. В условиях нашего примера для каждого субсчета счета 20, будет выполнена единственная проводка. В листах ветви-цикла обращение к очередному субсчету обозначается символом "#". Иными словами, если определены два субсчета - 20-1 и 20-2, то ветвь-цикл из нашего примера построит две проводки, одну в дебет счета 20-1, а другую в дебет счета 20-2. Разберем покомпонентно формулу вычисления суммы проводок:
[md 26] - дебетовый оборот счета 26 за текущий месяц = сумма общехозяйственных затрат за месяц;
[mp 20,70] - сумма всех проводок с кредита счета 70 в дебет счета 20 = зарплата, начисленная в основном производстве;
[mp # ,70] - сумма всех проводок с кредита счета 70 в дебет субсчета 20-? = зарплата, отнесенная на конкретный вид продукции.

Таким образом, величина [mp #,70]/[mp 20,70] есть не что иное, как доля зарплаты отнесенной на конкретный вид продукции в общей зарплате, выплаченной в основном производстве. Умножив данную величину на дебетовый оборот счета 26, получим сумму общехозяйственных затрат, списываемую на данный вид продукции. Попробуем поработать с операцией. Из списка только что введенных нами операций удалите операцию "Затраты списание". Далее, зарегистрируйте в мае операции по начислению зарплаты в основном производстве. В итоге в нашем реестре должны оказаться следующие операции:


Чтобы понять, что к чему, составим оборотный баланс. Если выбрать "непустые" счета, то получится:

Итого на субсчета основного производства "навешено" 1242000 руб. затрат. Если проанализировать корреспонденции субсчетов 20-1 и 20-2, то затраты на зарплату, выплаченную в основном производстве составили:

по продукции А - 600000 руб:

по продукции Б - 300000 руб:

Итак, нам надо распределить общехозяйственные расходы в пропорции:
на продукцию А - 2/3,
на продукцию Б - 1/3.
Посмотрим как справится с этой задачей построенная нами операция "Затраты распределение". Зарегистрируем ее 31 мая в конце дня:

Проверяем:

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

Впрочем, при использовании операции "Затраты распределение" следует учитывать следующие ограничения:
1. Счет 26 должен полностью закрываться ежемесячно;
2. В течении месяца счет 26 должен иметь только дебетовые обороты. Ошибочно отнесенные на счет суммы должны сторнироваться, а не списываться обратной проводкой;
3. Операция должна быть зарегистрирована ТОЛЬКО ПОСЛЕ хотя бы одного начисления зарплаты в основном производстве. В противном случае [mp 20,70] будет равно нулю и операция "свалится" из-за деления на ноль.
После первого же начисления зарплаты в основном производстве можно "положить" построенную операцию последним числом месяца со статусом в конце дня - сколько бы общехозяйственных затрат мы не произвели и сколько бы зарплаты в основном производстве не начислили - полная себестоимость будет вычисляться автоматически.

Параметры счетов и нормативная информация

Теперь мы рассмотрим достаточно важный с точки зрения практического использования программы "Финансы без проблем" вопрос о ведении нормативной информации. Ввиду того, что программа "не лепо сумняшеся" пересчитывает суммы всех проводок от "потопа" (начала года) до наших дней (конца отчетного периода, установленного календарем), вопрос об изменении нормативов, использованных в операциях становится просто жизненно важным. Дело в том, что если, зарегистрировав те или иные операции, изменить правила их построения (дерево операций), то получится, что многие автоматически рассчитываемые суммы изменятся.
Измените в операции "Касса расход за услуги" коэффициенты в соответствии с нормативами, действовавшими в 1-ом квартале 1995 года:

Теперь, зарегистрируйте данную операцию от 20 февраля. Получим:

Пришел апрель. И мы вручную изменили коэффициенты с учетом 1.5% спецналога:

Теперь посмотрели на нашу февральскую операцию и нам стало грустно:

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

Как быть? Как сделать так, чтобы нормативы можно было изменять таким образом, чтобы до одного момента действовало одно значение, а после него другое.
Есть несколько способов решения этой задачи.
Первый способ основан на использовании в дереве операций так называемых "времячувствительных условий", которые устанавливают временные границы действия тех или иных вычислительных процедур. Иными словами, времячувствительные условия определяют, что до некоторого момента времени расчеты будут осуществляться по одним правилам, а после него по другим. Измените определение нашей операции следующим образом:

Теперь зарегистрированные в феврале и апреле операции порождают проводки с разными суммами. Таким образом для того, чтобы учесть изменения нормативной базы можно использовать ветви, содержащие времячувствительные условия. Формат конструкции таков: в описании ветви надо указать символ ">" (больше) или "<" (меньше), а после него дату в формате ММ.ГГ. Например:

<04.95 - ДО апреля 1995 года
>04.95 - НАЧИНАЯ с апреля 1995 года.

Другим способом решения задачи изменения нормативов является построение операций с явным вводом их значений аналогично тому, как мы это сделали в операции "Материалы приход". В этом случае мы можем менять значения хоть каждый раз. Однако такой подход малоприемлем для нормативов продолжительного срока действия, таких как налоговые ставки. Слишком много ручного ввода не в стиле "Финансов без проблем"! Для такого рода данных мы рассмотрим другие способы решения, основанные на использовании параметров счетов и специальным образом организованных справочников. При рассмотрении концепции счета в программе мы говорили о том, что любой субсчет может иметь до 9 параметров. Отсюда следует, что нормативы можно хранить в параметрах субсчета. Так, например, ставки налогов можно считать параметрами счетов 67, 68, 69. Именно так мы и поступим.
В плане счетов дадим первому параметру счета 68 название "Ставка налога" и занесем в качестве значений параметра конкретных субсчетов конкретные ставки так, как показано на рисунке:

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

В приведенных формулах мы использовали функцию [ep ] с разными аргументами. Эта функция обозначает текущее значение параметра счета. Ее общий формат таков:

 [ep xx,nn,mm] , где xx - обозначение субсчета, 
			nn - номер параметра,
			mm - номер месяца. 
Второй и третий аргументы необязательны. Если аргумент nn не указан, то подразумевается первый параметр счета. Если не указан аргумент mm, то имеется ввиду текущее на момент выполнения операции значение, в противном случае берется значение на конец месяца mm. Для определения операции задавать значение параметра mm большее текущего месяца бессмысленно, поскольку в момент ее выполнения оно еще не сосчитано.
Разберемся, что означает запись [ep 68-02] с содержательной точки зрения.
Вспомним, что в качестве первого параметра счета 68 мы определили ставки налогов, а в качестве значений данного параметра у субсчетов счета установили конкретные их значения. Поскольку на субсчете 68-02 мы ведем расчеты по НДС, то значением первого параметра данного субсчета является ставка НДС (на самом деле одна из ставок). Отсюда следует, что значением функции [ep 68-02] является значение первого параметра данного субсчета, то есть ставка НДС. Аналогично расшифровывается и запись [ep 69-15] - это ставка спецналога. Все остальные обозначения в приведенных формулах нам уже известны.
Теперь перейдите в реестр операций. Все ранее введенные операции "Касса расход за услуги" "замигали". Это значит, что соответствующая ветвь дерева операций серьезно изменена и теперь введенные ранее операции недействительны, поскольку отсутствует соответствующее им определение. Перерегистрируйте все операции "Касса расход за услуги" заново. Для этого необязательно "рыскать" по месяцам. Просто нажмите Alt-F3. Программа сама просканирует операции, найдет переопределенные и выведет Вас на первую из них. Откорректируйте ее и повторите расчет. Теперь попадете на следующую переопределенную операцию. И так далее. После перерегистрации операций посмотрите построенные проводки. Пока они в точности соответствуют тому, что было при простом определении коэффициентов в виде 100/123, 20/123 и 3/123.
Закономерно возникает вопрос: стоило ли "городить огород" ради того, чтобы только усложнить себе жизнь вводя "трехэтажные" формулы для которых еле-еле хватило места в строках ввода, когда то же самое можно было описать простыми коэффициентами, а в случае их изменения просто написать времячувствительные условия?
На наш взгляд, стоило, поскольку теперь наши формулы приняли общий вид и стали инвариантны по отношению к любым изменениям данных нормативов. Какие бы значения там не стояли наши формулы сработают правильно. Однако, пока открытым остается вопрос: что делать, если нормативы должны быть изменены? Ведь нельзя же просто поменять их вручную в плане счетов - все, что вводилось ранее, со старыми их значениями "поплывет". Действительно, нормативы должны быть изменены динамически с тем, чтобы их действие распространялось только на те операции, которые будут заведены после изменений. Для этого надо "соорудить" операцию, которая такие динамические изменения могла бы внести. Займемся этим.

Добавим в корень дерева операций ветвь "Установка", к ней ветку "ставок платежей", далее ветку "в бюджет" и к ней единственный лист так, как показано на рисунке:

Таким образом мы сформировали операцию "Установка ставок платежей в бюджет", состоящую из одной единственной проводки, значением суммы которой является сумма операции. Запись "проводки", у которой "кредитуемый" счет начинается с символа "=" означает запись значения в параметр, номер которого указан после знака равенства. В данном случае мы производим запись в первый параметр. Для особо ленивых отметим, что цифру "1" в этом случае можно было опустить. Поскольку расчетной формулы не указано, в качестве значения параметра будет установлено значение суммы операции.
Как же пользоваться построенной нами операцией? В том месяце, начиная с которого норматив ставки какого-либо бюджетного налога изменился мы 1-го числа со статусом в начале дня регистрируем ее, выбрав (@-обращение!) значение нужного субсчета и введя в качестве суммы новое значение норматива. С этих пор будет действовать именно оно и никаких изменений в правила вносить не придется! (Чувствуете разницу с времячувствительными условиями?) Более того, если норматив введен задним числом (любимое дело наших законодателей) и какие-либо операции, зависящие от него, уже были зарегистрированы, суммы проводок пересчитаются автоматически. Конечно, не все так просто и то, что уже было оформлено документально подлежит сторнированию, но, как говорится в известной пословице - "против лома нет приема ...".
Опробуйте работу операции, зарегистрировав ее первого апреля со статусом в начале дня. В качестве суммы операции введите 1.5. Не удивляйтесь, если после ввода дробной величины после регистрации операции на экране отобразится целое число - результат округления. Возможно у Вас отключен режим "Числа с копейками" и поэтому при экранном представлении используется округление. Дробные проценты установились правильно. Проанализируйте проводки операций построенных в феврале и апреле. Легко видеть, что действуют разные налоговые ставки.
В январе, феврале и марте:

В апреле:

(Включена опция "Числа с копейками").
Новые нормативы будут действовать до следующего изменения. Конечно, неплохо было бы округлять суммы. Скоро мы научимся это делать. Теперь выполните расчет оборотного баланса, встаньте на 68 счет и нажмите F4. Это режим анализа параметров. На экран выведено окно со списком субсчетов. В нем можно видеть, что в качестве параметра установилось именно то значение, которое введено с клавиатуры:

Зайдите в план счетов и просмотрите субсчета 68-го счета. Здесь параметр остался тем же, каким был изначально. Все верно - план счетов отображает начальные значения параметров, а анализ параметров в оборотном балансе - их значения на КОНЕЦ периода, установленного календарем. Используя параметры не ленитесь давать им названия. В противном случае "Финансы без проблем" не будут показывать их значения при анализе параметров в оборотном балансе. Все было бы хорошо, скажете Вы, если бы приведенные формулы не были столь громоздкими. Ведь они будут нужны не только для одной операции, а возможно для нескольких. Неровен час можно ошибиться. Вот если бы можно было записать их один раз, а потом каким-то образом использовать везде, где нужно. А кто сказал, что нельзя? Конечно, можно! Об этом и пойдет речь в следующей главе.

Файлы-коэффициенты

Для описания вычислений, которые не могут быть сведены к простым однострочным формулам, в программе "Финансы без проблем" используются так называемые файлы-коэффициенты. Файл-коэффициент - это обычный текстовый файл, содержащий описание правил вычисления одного или нескольких показателей, записанных на специальном, понятном программе языке. Создавать файлы-коэффициенты, конечно, сложнее, чем использовать простейшие виды настройки в виде коэффициентов распределения суммы, поскольку здесь приходится применять те или иные элементы программирования. Но это не сравнимо проще, чем написать собственную программу для ведения учета!
Специально для программистов поясним: в языке написания файлов-коэффициентов можно использовать переменные, выражения, оператор присваивания, условный оператор, оператор цикла и все множество уже упоминавшихся встроенных функций, от обращения к величинам сальдо и оборотов счетов до средств организации диалога. Таким образом, это функционально полный язык программирования и существенно более простой, чем те языки, которыми пользуются настоящие программисты. За счет специализированного характера языка любой человек со средним уровнем интеллекта в состоянии понять и использовать его для описания правил выполнения своих специфических расчетов. Для программиста же вообще не должно возникнуть никаких проблем. В то же время, специально для программистов здесь предоставлена возможность выполнения любых внешних программ и подключения процедур и функций из DLL-библиотек. Так что возможности наращивания вычислительной мощности "Финансов без проблем" практически безграничны.
Конечно, можно использовать программу и без написания собственных файлов-коэффициентов или используя только стандартные, поставляемые вместе с программой, однако добиться наиболее полной автоматизации выполнения рутинных, сложных расчетов можно только на их основе. Затраченное на формализацию расчетов время окупится сторицей. Составим простейший файл-коэффициент. Перепишем определение операции "Касса расход за услуги" в виде:

"Заклинание" NDS_SPN "мигает". Это означает, что "Финансы без проблем" не могут найти в текущей директории нужного файла. Для его создания встаньте на мигающую строку и нажмите F4. Программа создала файл NDS_SPN.RPT и предлагает нам написать его содержимое. Напишем здесь следующие инструкции:

 * Выделение сумм НДС и спецналога
OD = 100+[EP 68-02]+[EP 68-15]  общий делитель
ND = [ro $*[EP 68-02]/OD]       сумма НДС
SN = [ro $*[EP 68-15]/OD]       сумма спецналога
S0 = $-ND-SN                    сумма без налогов
$  = S0                         в $ записана сумма проводки
Если Ваш компьютер "показывает в цвете" и включена опция "Синтаксис подсвечен", то стоит обратить внимание на то, что часть символов отображается голубым цветом. Это комментарии. Их присутствие никак не сказывается на вычислениях. Красным цветом выделяются расчетные формулы. Если в них что-то не так (например, ввод не закончен или не определен субсчет-аргумент функции), они мигают и выкрашены белым цветом. При наборе данного текста добейтесь того, чтобы ничего ни мигало. Затем нажмите клавишу F2 для сохранения внесенных изменений, а потом Esc для возврата в дерево операций.
Итак, мы написали наш первый файл-коэффициент. Использованные в нем формулы нам уже знакомы и их назначение интуитивно ясно - некоторым переменным присваиваются значения, вычисляемые по формулам в правой части от знака равенства.
Новым элементом является только функция [ro], округляющая величину своего аргумента до целого числа.
Обратите внимание на последнюю строку нашей программы. Нам уже известно, что символ $ обозначает сумму текущей операции. Однако в файле-коэффициенте он обозначает не только сумму операции, но и возвращаемое значение. Поэтому для того, чтобы проводка с файлом-коэффициентом получила значение, оно должно быть установлено в переменной $.
После выполнения файла коэффициента установлены переменные ND и SN. Их мы и используем в качестве значений сумм третьей и четвертой проводок. Однако для того, чтобы "Финансы без проблем" не приняли переменные за файлы-коэффициенты их имена взяты в скобки. Таковы правила.
Опробуйте составленный вариант операции "в деле". Теперь этот файл-коэффициент и порождаемые им переменные можно использовать в других операциях, требующих подобного рода "разложения" суммы.
Теперь, когда мы вооружены необходимыми навыками по настройке операций, опробуем их при решении различных учетных задач. Рассмотрим, например, как с помощью "Финансов без проблем" можно организовать ежемесячное списание затрат по аренде. Проблема состоит в том, что уплатив арендную плату и отразив заплаченную сумму как затраты будущих периодов мы должны каждый месяц списывать в затраты величину пропорциональную сроку аренды.
В плане счетов первым параметром счета 31 будем считать сумму арендной платы за месяц (Сумма спис/мес), которую будем списывать на общехозяйственные затраты ежемесячно, до тех пор, пока есть что списывать, то есть до тех пор, пока сальдо данного субсчета не станет равным 0.
От корня дерева операций "вырастим" ветвь "Затраты будущих периодов" и определим следующие операции:

Операция "Затраты будущих периодов - арендная плата" вводит в переменную MM срок аренды в месяцах. Первая и вторая проводки операции очевидны - затраты на аренду зачисляются на соответствующий субсчет 31 счета и оплачиваются. Третья псевдопроводка устанавливает ежемесячную сумму арендной платы. Операция "списание за месяц" содержит всего одну проводку, сумма которой рассчитывается следующим файлом-коэффициентом:

* Списание доли затрат за месяц, файл SPIS.RPT
$ = 0            может быть все уже списано?
! [ea @31] > 0   если не все затраты списаны, т.е. сальдо > 0
$ = [ep @31]   списывается ежемесячная доля
! 
Функция [ea] вычисляет сальдо счета (субсчета), сложившееся к моменту выполнения данной операции. Ее общий формат таков:
[ea xx,mm], 	где 	xx - обозначение счета (субсчета), 
			mm - номер месяца
Если номер месяца не указан, то в файле-коэффициенте имеется ввиду сальдо на текущий момент. Кредитовое сальдо возвращается со знаком минус.
А что означает конструкция "!" ? Это так называемый оператор сравнения. Он может использоваться в следующих формах:

1-й формат записи:
! формула знак сравнения формула
2-ой формат записи:
! формула in формула..формула

Если условие оператора сравнения ложно, то все операторы до следующего оператора сравнения не выполняются. Если оператор сравнения состоит из одного символа "!", то его условие истинно и все последующие формулы выполняются как обычно. Запись оператора сравнения во второй форме предполагает определение принадлежности значения формулы диапазону значений. Например, запись:

! A in 1000..2000 
определяет, что если значение переменной A находится в диапазоне от 1000 до 2000, то последующие строки будут выполняться. В нашем случае, запись
$ = 0 
! [ea @31] > 0 
$ = [ep @31] 
!
означает буквально следующее: "если сальдо субсчета счета 31, выбранного при регистрации операции больше нуля, то в качестве значения файла-коэффициента (то есть, в качестве суммы проводки) будет возвращено значение первого параметра данного субсчета, то есть сумма списания за месяц. В результате этого, сальдо данного субсчета после выполнения этой проводки уменьшится на указанную величину. Регистрируя такую операцию ежемесячно мы будем списывать равные доли учтенной ранее суммы. При этом, наша операция (точнее файл-коэффициент) устроена так, чтобы после списания всей суммы не списывалось бы более ничего.
Попробуйте зарегистрировать в январе операцию аренды, стоимостью 1500000 руб, сроком на 3 месяца. После этого выполните операцию "списание за месяц" в январе, феврале, марте и апреле. Просмотрите полученные проводки и убедитесь, что в в первом квартале программа ежемесячно формирует проводки на сумму 500000 руб, а в апреле и далее на 0 руб.
Таким образом, один раз занеся нужные параметры про сроки списания можно "забыть" и ни о чем не думая раз в месяц проводить списание. Сказанное касается не только арендной платы, но и многих других затрат будущих периодов. Например, в начале года Вы делаете подписку на газеты, журналы, оперативное обновление баз данных коммерческой информации, платите за техническое обслуживание и т.д. Все, за что оплата производится вперед должно включаться в затраты пропорционально соответствующему сроку. Неплохо было бы, если б мы могли списывать эти затраты раз в месяц "скопом", единой операцией. Если Вы используете "Финансы без проблем" - нет ничего проще!
Вспомним про ветви-циклы и соответствующим образом модифицируем операцию списания и файл-коэффициент для такого случая:

Практически ничего не изменилось. Появилась новая ветвь и вместо @-обращения появился идентификатор #. В условиях нашего примера для каждого субсчета счета 31, будет выполнена единственная проводка и каждый раз для вычисления ее суммы будет выполняться расчет из файла-коэффициента SPIS. Указание # в качестве кредитуемого счета означает подстановку на это место соответствующего субсчета. Файл-коэффициент данной операции должен быть модифицирован следующим образом:

* Списание доли затрат за месяц
$ = 0          может быть все уже списано?
! [ea #] > 0   если не все затраты списаны, т.е. сальдо > 0
$ = [ep #]   списывается ежемесячная доля
!
Я думаю, комментарии излишни. Теперь про ежемесячное списание можно забыть. Надо лишь один раз в конце месяца выполнять данную операцию. Опробуйте ее с разными сроками аренды (термин аренда уже неудачен, поскольку наши операции годны не только для нее).
Подумайте, чего в нашей операции не хватает. Может быть разделения арендной платы на амортизацию и прибыль владельца, которые мы должны отражать раздельно: долю амортизации списывать в затраты, а долю сверх нее - за счет своей прибыли. А может мы еще что-нибудь забыли? Если это так, внесите нужные изменения сами, а мы двинемся дальше.

Файлы-форм и форматные вставки

Перейдем к рассмотрению вопросов, связанных с формированием первичных документов и отчетов средствами программы "Финансы без проблем". Помимо встроенных форм выходной информации - оборотного баланса, анализа "истории" сальдо и оборотов счета и всех его корреспонденций, "Финансы без проблем" имеют механизм построения практически неограниченного числа выходных форм. На основе этого механизма можно спроектировать такие формы представления выходной информации, которые необходимы конкретному бухгалтеру. Если обратиться к варианту стандартной поставки, то можно найти там массу примеров настройки таких форм, в том числе практически всех форм стандартной отчетности и большого числа первичных документов. Все они не являются встроенными в программу и пользователь может не только изменить их произвольным образом, но и создать новые. Каждая форма, будь то первичный документ или отчет должна быть соответствующим образом описана на специальном языке, понятном "Финансам без проблем". При построении формы программа анализирует описания, вычисляет необходимые показатели и размещает их значения в макете изображения документа, который является составной частью этого описания. Построенный таким образом документ "предъявляется" пользователю для просмотра с экрана и может быть распечатан. В терминологии программы алгоритмы расчета сумм проводок (файлы-коэффициенты), первичные документы и отчеты называются файлами-форм. Полному перечню доступных в данной директории файлов-форм соответствует одноименный пункт меню. В то же время, файлы-форм подразделяются (и это можно видеть вызвав их перечень через меню или клавиатурной комбинацией Alt-F4) на следующие группы:

1. Отчетные формы
2. Файлы-коэффициенты
3. Формы первичных документов
4. Истории
5. Общие определения.

Между описаниями выходных форм и файлов-коэффициентов чрезвычайно много общего. И те и другие хранятся в отдельных текстовых файлах, имеющих расширение RPT. Язык форм, описывающий правила расчета показателей файлов-форм идентичен. В чем же разница? Основные отличия типов файлов-форм состоят:

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

Прежде, чем разбираться с отличиями типов файлов-форм, изучим что же такое форматные вставки. Запустите "Финансы без проблем" в директории стандартной поставки. Вызовите список файлов-форм (Alt-F4). Установите селектор списка на строку с надписью:

FORM1   * Баланс предприятия (форма 1)
и нажмите клавишу F4. Перед нами описание формы N 1. Полистайте текст. Если включены опции "Синтаксис подсвечен" и "Палитра: цветная 1" , то на цветном мониторе можно увидеть формулы, выделенные красным цветом, комментарии "выкрашенные" голубым, а также "белые" строки с до боли знакомыми текстами. Символы, "выкрашенные" белым задают макет печатной формы отчета. При выполнении формы они выводятся в файл отчета без изменений. В то же время, мы видим, что в тех местах макета, где должны появиться значения тех или иных показателей "нарисованы" последовательности, состоящие из набора символов ^ и имен переменных. Это и есть форматные вставки:

Форматные вставки определяют в каком месте отчета должно быть отображено значение некоторой переменной. Они могут использоваться в любом месте текста формы. Однако, следует иметь ввиду, что переменная, выводимая при выполнении формы должна получить к моменту формирования вставки конкретное значение. Продолжая рассмотрение макета формы N 1 убедимся, что значения переменных приведенных в данном фрагменте уже рассчитаны до появления в форматной вставке:

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

A=[ea 50]
A1=[ea 51]

Остатки средств:
в кассе: ^^^^^^^^^^^^A^^  на расчетном счету: ^^^^^^^^^^^A1^^
то при ее выполнении остаток в кассе будет распечатан с копейками, а на расчетном счете в рублях. Строки, содержащие формулы, в отчет выведены не будут. Итак, можно резюмировать. Файлы-форм одновременно содержат формулы расчета показателей и макеты их представления в выходном документе. "Финансы без проблем" сами разбираются, что есть формула, а что - макет вывода. Иными словами, макет отчета можно просто-напросто "нарисовать", а места появления значений показателей оформить как форматные вставки.
Аналогичным образом оформляются макеты вывода данных в первичных документах, историях и общих определениях. Использование форматных вставок в файлах-коэффициентах бессмысленно - они предназначены для расчета сумм проводок операции и будут проигнорированы при их регистрации.

Tеперь разберемся, в чем состоит разница в интерпретации встроенных функций. Как мы уже знаем, файлы-коэффициенты предназначены для расчета сумм проводок. Поэтому используемые здесь встроенные функции остатков и оборотов счетов, а также обращений к параметрам, выдают значения, достигнутые к моменту выполнения данной проводки данной операции в их хронологической последовательности (если явно не указан временной диапазон их действия). Аналогичным образом эти функции интерпретируются при формировании первичных документов.
В противоположность этому, в отчетных формах указанные выше функции выдают значения на начало или конец соответствующего отчетного периода, установленного календарем. Это вполне естественно. Для вычисления показателей, например, баланса нам нужны значения на начало или конец отчетного периода. В то же время, когда мы используем сформированную нами операцию по списанию затрат на аренду нам нужно соответствующее сальдо НА момент выполнения операции. Если бы здесь программа подставляла сальдо НЕ на текущий момент, а на конец периода, то был бы получен совершенно неверный результат.

Первичные документы

"Финансы без проблем" могут формировать самые разнообразные первичные документы. С формальной точки зрения это не что иное, как разновидность файлов-форм. Чем отличаются файлы определений первичных документов от отчетных форм? Первичный документ может быть связан с выполняемой операцией и использовать некоторые ее параметры. Попробуйте выполнить операцию "Касса приход прием подотчетной суммы" из операций стандартной поставки программы. После выбора сотрудника (субсчета счета 71) и ввода суммы операции программа выведет запрос:

Выберите "Создать документ". На экране появится запрос "Номер приходного ордера". Введите, например, 1. Тут же появится выходная форма - первичный документ "Приходный ордер":

Из операции в документ перенесены корреспондирующий счет, шифр аналитического учета - субсчет сотрудника, его фамилия - название субсчета, комментарий к операции, а также ее сумма. Кроме того автоматически появилась сумма прописью. Осталось распечатать и подшить.
Каким образом определение первичного документа попало в операцию. Взглянем на ветвь дерева, соответствующую этой операции:

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

создать документ PR-ORDER @71
Что она означает. Слова "создать документ" (любители английского языка могут писать create document) говорят программе о том, что следующее далее имя файла (в данном случае PR-ORDER) надо рассматривать как определение формы первичного документа. Если пользователь при регистрации операции требует создать документ (то есть выбирает соответствующий пункт меню), то этот файл выполняется. При этом ему передается значение выбранного пользователем при регистрации операции субсчета (в данном случае @71).
Посмотрим как устроен файл описания приходного ордера:

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

Текст суммы прописью "разлился" по двум строкам. Итак, растекатель - это цепочка символов ^ без имени переменной, размещаемых в последующих после форматной вставки строках и предназначенных для вывода длинных текстовых данных. Если в строке несколько форматных вставок, то растекатели могут быть только у одной из них.
Теперь обратим внимание на квитанцию к ордеру. Здесь при печати суммы вместо числа распечатались символы "*". В чем дело? Все очень просто. В форматной вставке не предусмотрено достаточного места для такой длинной суммы.
Дело в том, что выводимая здесь переменная $ (сумма операции) включает 8 знаков плюс два знака на разделение триад - всего 10 позиций, а в форматной вставке предусмотрено всего 9. Поэтому "Финансы без проблем" просто "забили" это место. Каков выход? Можно "пририсовать" символы ^ начале форматной вставки или выключить опцию "Числа с запятыми". Тогда все поместится.
Разберемся с переменными и встроенными функциями, использованными при построении данного документа.
В начале, в переменную L с клавиатуры (помните вопрос "Номер приходного ордера") вводится номер ордера. Для этого, используется встроенная функция [is ]. Ее общий формат таков:

[is sv,zu,ds],   где sv - строка вопроса в одинарных 
			  апострофах, 
		     zu - значение по умолчанию, 
		     ds - максимальная допустимая длина
В нашем примере:
sv = Номер приходного ордера 
zu = пустой строке 
ds = 9   
Итого получилось: [is'Номеp пpиходного оpдеpа','',9] .
Для установки переменной A - основания документа использована функция [co]. Она выдает комментарий текущей операции и может быть использована только внутри форм первичных документов.
В переменную В записывается сумма прописью. Для этого используется функция [wn ]. Ее общий формат таков:
[wn nn],  где nn - число или формула
Внутри функции [wn ] использована функция [ro], округляющая свой аргумент до целого числа. Это нужно для того, чтобы программа не записывала копейки прописью. Формат весьма полезной функции [ro] таков:
[ro nn],  где nn - число или формула
Операция "+" над строками означает их конкатенацию, то есть сцепление. Итого получилось: B=[wn [ro $],pуб.]+' 00 коп.' Если бы нужно было напечатать документ с копейками, то формулу надо было бы записать в таком виде:
 B=[wn [ro $],pуб.]+[sn [ce $],2,0]+' коп.' 
Что означает [sn [ce $],2,0]? Расшифруем формулу "покомпонентно".
Функция [ce xx] выделяет дробную часть числа или формулы xx. Однако, написать B=[wn [ro $],pуб.]+[ce $]+' коп.' было бы неверно, поскольку [ce $] дает числовое значение и его нельзя просто так объединить со строкой, поскольку для компьютера числа и строки символов - разные вещи. Поэтому здесь используется встроенная функция [sn], которая преобразует число в строку символов. Она устроена так:
[sn nn,mm,kk], где nn - преобразуемое в строку число или 
			формула, 
		   mm - длина строки, 
		   kk - количество дробных разрядов, 
			которые требуется "оставить в числе
                        после преобразования в строку. 
Как мы видели, в переменную D (принято от) записано название субсчета. Для того, чтобы это произошло в описании документа имеется строка:
D=[n2 $P] 
Здесь использована функция [n2]. Она возвращает название счета (субсчета) указанного ее аргументом. $P - это обращение к параметру, переданному в файл-формы при ее вызове. Вспомним, что вызов процедуры создания документа в дереве операций был записан в виде:
создать документ PR-ORDER @71 
Файлу-формы первичного документа прямо из операции можно передать параметр. В данном случае этим параметром является обозначение того субсчета счета 71, который был выбран при регистрации операции. В файле-формы приходного кассового ордера параметр используется для формирования граф "Корреспондирующий счет", "Шифр аналитического учета" и "Принято от".
Таким образом, $P - обозначение параметра файла-формы. В данной форме это код субсчета. Для получения его названия в плане счетов используется функция [n2]. Для того, чтобы получить обозначение (код субсчета) в "Финансах без проблем" используется функция [n1]: (K=[n1 $P]), а для названия счета данного субсчета применяется функция [pa ]: (M=[pa $P]). Неразобранной осталась формула F=[dt dc,mc]. Здесь использована встроенная функция [dt], которая выдает дату в виде текста. Ее формат:
[dt mm,dd],  где   mm - месяц 
		   dd - день 
В файлах форм определены несколько стандартных переменных, которые могут быть использованы без специального определения. Это:
MF - номер первого месяца отчетного периода,
ML - номер последнего месяца отчетного периода,
YC - номер отчетного года
Кроме этого, в файлах-коэффициентах и первичных документах определены переменные:
MC - номер текущего месяца, 
DC - день текущей операции, 
OC - номер операции, 
$ - сумма операции
Это обстоятельство и использовано в формуле F=[dt dc,mc], которая помещает в переменную F текст с названием даты выполняемой операции (dc,mc) - в данном случае это 1 января 1995 г.
Итак, разобраны все формулы. Но ни в одной из них не "вычисляются" переменные C1 и FF, использованные в форматных вставках. Странно, ведь ранее было сказано, что ВСЕ переменные перед использованием в форматных вставках должны быть определены. Откуда взялись их значения? Их источником является файл FIRST.RPT. Он приведен в списке Форм общих определений. Все файлы этого списка выполняются ПЕРЕД выполнением ЛЮБОГО из файлов-форм отчетов, первичных документов и историй. Формы общих определений нужны для установки переменных, являющихся общими для построения ВСЕХ Ваших форм. Посмотрим содержимое файла FIRST.RPT:
* Опpеделения для всех фоpм (FIRST.RPT)
*
* Этот файл всегда автоматически выполняется пеpед выполнением
* фоpм и созданием пеpвичных документов
*
* Упpавляющие последовательности для пpинтеpов (для DOS-версий)
f0=[ch 27]+'x'+[ch 1]+[ch 27]+'P' выбоp качественного шpифта и "пики"
e0=[ch 27]+'x'+[ch 0]             отмена качественного шpифта
f1=[ch 15]+[ch 27]+'M'            выбоp уплотненного pежима и "элиты"
e1=[ch 18]+[ch 27]+'P'            отмена уплотненного pежима и возвpат к "пике"
ff=[ch 12]                        пеpевод фоpмата
*
* Реквизиты пpедпpиятия
*
C1='АОЗТ "ХАКЕРС ДИЗАЙН"'                  Плательщик
C2='Инкомбанк, ф-л Тpиумфальный, код 5С'   Банк
C3='023467386'                             Расч.счет для Москвы и Москов.обл.
C4='998736'                                МФО  для Москвы и Москов.обл.
C5='1995 г.'                               Текущий год
C7='МОСКВА, Ленинский пр-т,158  '          Адpес Поставщика
C8='тел 213-28-18, 438-03-31'              Телефон Поставщика
C9='Коpp.счет N 502161000 в РКЦ ГУ ЦБ РФ,' для Иногоpодних Заказчиков
S0='МФО 201791, код 83'                    для Иногоpодних Заказчиков
S1='МФО 998736, код 5С'
S2='Диpектоp АОЗТ " ХАКЕРС ДИЗАЙН " '
S3='Гл.бухгалтеp АОЗТ " ХАКЕРС ДИЗАЙН " '
S4='_______________ ВОДЯНИК А.Г.'
S5='_______________ ВОДЯНИК С.Г.'
*
* Пpочие константы
C0=0.001                          малая величина для оценки "пустоты счетов"
* Инициализация пpинтеpа
*  ^^^^f0 ^^^^e1
* Пеpеходим к выполнению фоpмы...
Как мы видим именно здесь заданы реквизиты предприятия и теперь стало понятно, почему все формы "штампуются" реквизитами "Хакерс Дизайн". Для того, чтобы в формы стандартной поставки попадали значения реквизитов Вашего предприятия нужно просто исправить их здесь.
Переменные f0, f1, e0, e1, ff используются во многих отчетах варианта стандартной поставки программы и годятся для большинства типов принтеров. Если при печати на Вашем принтере "Финансы без проблем" "чудят", придется разобраться в документации на принтер и заменить значения этих переменных. К сожалению, рекомендации общего характера здесь не годятся.

Формы-истории

Итак, теперь Вы знаете назначение всех типов файлов-форм кроме форм-историй. Разберемся с ними. Формы-истории предназначены для построения отчетов-реестров, то есть таких отчетов, в которых необходимо отражение не только конечных величин сальдо, оборотов и значений параметров счетов, которые были достигнуты на начало и конец установленного календарем периода или на начало и конец того или иного месяца, но и динамики "развития событий" в ходе периода. Типичными примерами могут быть кассовая книга, реестр проводок выбранного счета, список поставок какого-либо поставщика, реестр операций отгрузки продукции и взаиморасчетов с покупателями и т.д. Как устроены формы-истории? Разберем пример формы-истории из набора входящего в вариант стандартной поставки программы. Предположим, зарегистрированы следующие операции:

Вызовите список файлов-форм, найдите там раздел "Истории" и постройте форму H-11 "Журнал регистрации хоз/операций". Будет создан следующий отчет:

Таким образом, форма H-11 распечатала нам перечень операций с проводками - реальными и мнимыми, фантомными. Посмотрим как устроена форма (F4 в списке форм):

Любая форма-история всегда начинается с раздела prolog. В этом разделе программы построения отчета выполняются те или иные "стартовые" действия. Как правило, в разделе prolog выполняются действия по формированию общего заголовка отчета. Здесь также могут быть установлены начальные значения переменных, которые будут использованы далее, например, для накопления итогов. Далее должен следовать хотя бы один из разделов:

every day 
every operation 
every debet 
Если одновременно используется более одного из разделов, то должна соблюдаться именно такая последовательность.
При выполнении формы-истории осуществляется последовательный просмотр реестра операций в пределах границ установленного календарем отчетного периода и выполняются следующие действия.
Для каждого нового дня выполняются строки файла-формы, записанные в разделе every day. Для каждой операции в пределах дня выполняются действия, указанные в разделе every operation. И, наконец, для каждой проводки операции выполняются действия, определенные разделом every debet.
В конце формы-истории должен находиться раздел epilog, который выполняется после просмотра всех операций.
Во всех разделах доступны все встроенные функции языка форм. Функции обращения к сальдо, оборотам и параметрам счетов действуют также как и в файлах-коэффициентах. Единственное ограничение форм-историй состоит в том, что в разделе prolog нельзя использовать функции BA, BD, BK, EA, ED, EK, OD, OK, OP, BP, EP поскольку здесь они еще не имеют значений.
Сопоставляя описание рассматриваемой нами формы-истории с тем, что получилось при ее выполнении можно видеть, что указанный в разделе prolog текст распечатан в качестве общего заголовка формы:

Кстати, обратите внимание, на специфическую форматную вставку:

с { по } 1995 года
На месте открывающейся фигурной скобки в выходной форме появился текст названия даты начала отчетного периода, а на месте закрывающей - текст названия даты конца отчетного периода. Запомните эту особенность. Она весьма полезна при подготовке "штампов" выходных форм. Кстати, здесь для придания форме более общего вида, годного для любого года вместо строки "1995" лучше было бы указать конструкцию ^^^^YC. Однако, при построении формы в этом случае надо отключить опцию "Числа с запятыми".
Раздел every day в данной форме отсутствует. Поэтому никаких действий при смене дня не выполняется.
Перед каждой, из зарегистрированных операций выполняются действия, предусмотренные разделом every operation:

В разделе every operation всегда определены переменные:

ОТ - вид опеpации (стpока символов), 
СО - комментаpий (стpока символов), 
SS - сумма опеpации (число), 
ОС - номеp опеpации (число). 
Кроме того, во всех разделах доступны уже известные нам переменные DC, MC, YC (день, месяц, год операции).
В данном разделе в переменную HO записывается "полный комментарий" операции (OT+' '+CO) - фраза построенная выбором листьев дерева операций при ее регистрации (OT) и комментарий к операции (CO), в нашем случае не введенный.
Поэтому, как легко видеть, для каждой операции распечатаны дата, номер операции, сумма и "полный комментарий". Например, для первой операции в отчете видим:

Форматные вставки просто напросто заменены на "вычисленные" значения. Далее, для каждой проводки операции выполняется раздел every debet:

В данном разделе всегда доступны переменные:

ND - имя дебетуемого счета (стpока символов), 
NK - имя кpедитуемого счета (стpока символов), 
SS - сумма пpоводки (число)
Объяснение действий данного раздела не требуется - все это мы уже проходили. Таким образом, разделы every operation и every debet многократно выполняются для каждой операции и каждой проводки. После просмотра всех операций "Финансы без проблем" выполняют раздел epilog:

В нашем примере он нужен для того, чтобы "замкнуть" символы псевдографики, "проштамповать" концовку отчета фамилиями директора и главного бухгалтера, определенными как мы уже знаем в файле общих определений, и вывести на принтер код перевода листа (ff).

Переход к новому году

Все совершаемые нами действия до сих пор относились к одному финансовому году. На начало года или на первый месяц использования программы нами были установлены значения входящих сальдо и начальные значения параметров счетов. В дальнейшем система субсчетов модифицировалась, регистрировались операции, изменяя значения сальдо и параметров. Теперь по окончании года необходимо зафиксировать их как начальные условия работы в следующем году. Рассмотрим процедуру перехода к новому финансовому году. Однако, прежде чем мы сделаем это, разберем "устройство" базы данных "Финансов без проблем". По мере работы с программой создаются и модифицируются следующие основные файлы:

acnt.a3p 	- файл счетов и начальных условий 
cas.rul    	- файл дерева операций 
*.f3p    	- файлы зарегистрированных операций 
*.rpt      	- файлы-форм 
fin.opt   	- служебные файлы 
fin.flg    	- программы 
Имена файлов-форм, как мы уже знаем произвольны.
Все файлы зарегистрированных операций имеют расширение f3p. Имена этих файлов имеют структуру YYYYMM, где YYYY - год, а MM - номер месяца. Таким образом, операции за май 1995 года хранятся в файле 199505.f3p.
Для "фиксации" значений сальдо и параметров счетов, достигнутых в данном отчетном периоде необходимо построить оборотный баланс за период, верхняя граница которого совпадает с последней датой последнего месяца данного отчетного периода и, далее, выполнить запись достигнутых значений, нажав клавишу F2. После выполнения этих действий в текущей директории создается файл acnt.e, содержащий описание всех определенных к данному моменту счетов и субсчетов, их исходящих сальдо и достигнутых значений параметров. Иными словами, создается новый файл плана счетов и начальных условий.
Если в качестве отчетного периода выбран год, то построенный таким образом файл содержит исходящие сальдо года. Теперь достаточно скопировать куда-нибудь старый файл acnt.a3p и переименовать файл acnt.e в acnt.a3p. Для всех последующих расчетов "отсчет" пойдет от установленных в нем значений сальдо и параметров.
Автор рекомендует при переходе к новому году руководствоваться следующими правилами. Создав файл acnt.e скопировать его в новую директорию. Помните, в самом начале книги рекомендовалось для каждой ведомой Вами бухгалтерии создать отдельную директорию и в ней поддиректории, соответствующие годам? Также в директорию данных нового года скопируйте файл дерева операций - cas.rul, файлы-форм *.rpt, fin.flg, fin.opt, fin.cod и файл запуска программы f.bat, если Вы его используете. Далее, проведите ревизию дерева операций и файлов-форм с целью отразить в них возможные изменения в законодательстве и Вашей учетной политике. Далее, работайте как обычно. При этом можно одновременно трудиться над отчетом за прошлый год и вводить оперативные данные текущего года. Исходящее сальдо предыдущего года можно пересчитывать и переносить в другой год многократно. Но это допустимо только в том случае, если в новом году Вы не успели реорганизовать систему счетов, субсчетов и параметров.
Описанная методика работы применима не только при переходе к новому году. Если Ваше предприятие выполняет большое число операций и ожидание результатов расчетов становится слишком утомительным, то никто не мешает Вам выполнять описанную процедуру каждый квартал или даже каждый месяц. Для этого нужно завести директории, соответствующие каждому кварталу или месяцу. В этом случае программе не придется каждый раз "перелопачивать" тысячи операций от начала года и скорость расчетов существенно возрастет. Однако, при поквартальном переносе данных нельзя будет автоматически получать годовую отчетность, поскольку входящие сальдо будут зафиксированы уже не на начало года, а на начало последнего квартала. Таким образом, данные отчетных форм граф "на начало года" придется переписывать вручную, а не распечатывать прямо из программы. При помесячном переносе данных то же касается и квартальной отчетности. Впрочем, для больших предприятий это не является большой потерей: цифры можно переписать и вручную - была бы возможность их сосчитать!

Учет основных средств

Для организации учета основных средств на основе программы "Финансы без проблем" откройте на счете 01 субсчета и введите следующие параметры:

=1 - Норма амортизации за год в % (Норма % год) 
=2 - Накопленный износ (Накопл.износ) 
=3 - НДС полученный (НДС полученный) 
=4 - НДС списанный (НДС списанный) 
=5 - Спецналог полученный (СПН полученный) 
=6 - Спецналог списанный (СПН списанный) 
=7 - Счет отнесения износа (Счет затрат) 
=8 - Срок ускоренной амортизации (Срок уск.аморт) 
=9 - Норма ускоренной амортизации (Норма уск.амор) 
Мы не будем рассматривать вопросы учета капитальных вложений и рассмотрим схему, при которой основные средства сразу вводятся в эксплуатацию. Счет 08 здесь будет нужен только для того, чтобы "пропускать" через него соответствующие обороты.
Для учета ОС мы сконструируем следующие операции:

Операция "начисление износа" должна будет выполняться всегда в начале месяца, "приход", "ввод в эксплуатацию" и "реализация" в течении месяца, а "зачет налогов" - конце месяца, во всяком случае всегда после ввода всех операций по движению.
В дереве операций создайте ветвь "Основные средства" и подветви соответствующие приведенному выше перечню.
При построении операции "приход" мы будем предполагать, что данный инвентарный объект не требует наладки и монтажа и может быть сразу введен в эксплуатацию. Для многих типов ОС это условие выполняется:

Приход ОС проводится как капитальные вложения, на величину уплаченных налогов дебетуются соответствующие счета, первоначальная стоимость поступившего объекта "приходуется" на вновь открываемый субсчет счета 01 и, далее, в "инвентарную карточку" записываются полученные налоги.
Зарегистрируем в апреле операцию прихода основного средства:

Посмотрим проводки:

Если дополнительные затраты, связанные с приобретением ОС, например, транспортные расходы, становятся известны только после оприходования объекта, то необходимо отнести их на данный объект.

При вводе объекта в эксплуатацию следует установить в параметрах соответствующего ему субсчета норму амортизации и счет отнесения износа. Для этого необходимо выполнить операцию:

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

Она устанавливает в соответствующие параметры срок в месяцах и норму ускоренной амортизации. Установим для объекта из нашего примера основную норму амортизации 12%, а также ускоренную амортизацию 50% в год на три месяца:

Постройте оборотный баланс и убедитесь, что значения установлены. Составим операцию "начисление износа":

Схема очень проста: для каждого субсчета счета 01 выполняется файл-коэффициент IZNOS, в котором сумма списания определяется следующим образом:

* Износ за месяц
MM = [EP #,8]       остаток срока ускоренной амортизации
NI = [EP #,2]       накопленный износ
! MM = 0            если ускоренная амортизация не применяется,
IM = [EP #,1]*[EA #]/1200    то используется норма во 2-ом 
*                            параметре
! MM > 0            если еще проводится ускоренная амортизация,
  IM = [EP #,9]*[EA #]/1200  то используется норма в  9-ом 
*                            параметре
  MM = MM-1     и срок действия уск.аморт. уменьшается на месяц
! NI + IM > [EA #]           если износ станет больше перв. 
*                            стоимости, то
  IM = [EA #] - NI           спишем только допустимую разницу
!
* счет списания затрат выбирается из 7 параметра субсчета и
* преобразуется в строку символов функцией [SN ]
SZ = '26'                по умолчанию, счет отнесения износа 26
! [EP #,7] > 0           если счет отнесения износа задан, то
  SZ = [SN [EP #,7],2,0] выполняется его преобразование в строку
!
$ = 0
Поскольку первый параметр счета 01 ([ep #]) содержит норму амортизации в процентах за год, то ее произведение на первоначальную стоимость ([ea #]), деленное на 1200 дает сумму отчислений за месяц. Однако, если сумма отчислений по норме + уже накопленный износ превышают первоначальную стоимость, то списывается только недоначисленный износ, рассчитываемый как разность между первоначальной стоимостью, которая пока еще больше износа, и накопленным износом ([ea #]-NI).
Помимо суммы списания износа за месяц для каждого объекта устанавливается новое значение накопленного износа и переустанавливается срок ускоренной амортизации.
Обратите внимание на то, что нам приходится использовать псевдопроводку фиктивного счета XXX c самим собой. Дело в том, что в момент выполнения файла-коэффициента код дебетуемого счета нам еще неизвестен, поэтому мы и вынуждены прибегнуть к такому искусственному приему для того, чтобы дать возможность файлу-коэффициенту его "вычислить".
Если у какого-то субсчета не задан счет отнесения износа, то по умолчанию износ относится на счет 26. В том случае, когда объект оприходован, но для него не была выполнена операция "ввод в эксплуатацию", значение обеих норм является равным нулю и формируется проводка с кредита счета 02 в дебет счета 26 с нулевой суммой.
Преобразование параметра в строку символов при определении счета отнесения износа здесь необходимо для преодоления противоречия между числовой формой внутримашинного хранения параметров в виде чисел и представления счетов строками символов.
Приведенная схема ведения учета со списанием износа на разные счета является достаточно общей. Она годна даже тогда, когда списание затрат должно производиться на разные субсчета нескольких синтетических счетов. Структура операций остается той же, однако, необходимо помнить, что коды субсчетов отнесения затрат должны представлять собой целые числовые значения, например, 26001, 26002, 25004, 25005, 44024 и т.д. и иметь одинаковую длину. Кроме того, файл-коэффициент при преобразовании параметра в строку счета должен учитывать длину кода субсчета.
При этом должна быть навсегда отключена опция "Числа с запятыми". В противном случае код счета будет либо неверно сохранен, либо неверно выделен из параметра и, скорее всего, операция начисления износа завершится сообщением: "Неизвестный дебетуемый счет".

Построенная операция всегда должна выполняться в самом начале месяца ДО всех операций по приходу ОС и их реализации, в противном случае износ будет начисляться по вновь введенным объектам или не начисляться по реализованным и выбывшим в данном месяце.
Теперь рассмотрим задачу зачета налоговых сумм. Здесь напрашивается следующее простое решение.
Файл-коэффициент ZACET содержит следующие команды:

* Зачет налоговых сумм по фондам
ND = [EP #,3]      НДС полученный
ZN = ND/6          сумма месячного зачета
NZ = [EP #,4]      НДС уже зачтенный
! ZN + NZ > ND     если почему-то получается "перезачет" НДС, то
  ZN = ND - NZ     списывается только незачтенный остаток
!
ZN = [RO ZN]       округление до рублей
SN = [EP #,5]      спецналог полученный
ZS = SN/6          сумма месячного зачета
SZ = [EP #,6]      спецналог уже зачтенный
! ZS + SZ > SN     если почему-то получается "перезачет"
*                  спецналога, то
  ZS = SN - SZ     списывается только незачтенный остаток
!
ZS = [RO ZS]       округление до рублей
$ = ZN             сумма проводки зачета НДС
"Механика" зачета в целом похожа на расчет износа. Сначала вычисляется сумма месячного зачета. Если уже зачтенная + вычисленная сумма больше полученного налога, то списывается только незачтенный остаток. Здесь списываемые суммы округляются до целых функцией [ro ]. Поэтому срок списания может превзойти 6 месяцев, поскольку оставшиеся 1-2 рубля спишутся в седьмом. Кстати, округление можно было применить и при начислении износа.
Построенную операцию следует выполнять после всех операций по движению ОС с тем, чтобы налоги зачитывались и по вновь приобретенным в данном месяце объектам.
Если по каким-либо объектам надо зачесть остаток сумм до истечения срока, можно завести дополнительную операцию индивидуального списания сумм аналогичную данной, но без ветви-цикла, в которой из приведенного файла-коэффициента следует оставить лишь вычисление разницы между полученным и уже списанным налогом. И, конечно, надо не забыть вместо # использовать @-обращение к счету.
От 30 апреля, со статусом в конце дня, зарегистрируйте операцию "зачет налогов", теперь перейдите в май и зарегистрируйте операцию "начисление износа". Ту же операцию выполните в июне, июле и августе. В июне и июле суммы отчислений будут те же, а в августе срок действия ускоренной амортизации закончится и программа выдаст другие цифры.

Построенный нами механизм проведения ускоренной амортизации очень удобен: можно установить норму и сроки, а потом полностью забыть про них, просто регистрируя операцию каждый месяц. "Финансы без проблем" с нашей подачи помнят все и вовремя прекратят действие ускоренной амортизации.
Теперь рассмотрим операции по реализации основных средств. Здесь все более или менее очевидно:

Первой проводкой списывается балансовая стоимость, далее накопленный износ, зачитываются "недозачтенные" суммы НДС и спецналога, а в параметры данного объекта "на всякий случай" проставляются нули.
При желании можно дополнить данную операцию проводками по отражению оплаты реализованного объекта, чтобы уж "подписано и с плеч долой":

Товары

В данной главе мы рассмотрим примеры настройки и выполнения основных операций, связанных с ведением учета в торговле. Рассмотрение вопроса ограничено простой схемой учета поступления и реализации товаров, ценообразования и списания издержек обращения. Для сведения заинтересованных лиц сообщаем, что подробные варианты настройки программы достаточно полно отражающие специфику ведения учета в розничной и оптовой торговле и хорошо зарекомендовавшие себя во многих организациях выполнены господином Васеленко С. и поставляются фирмой "Хакерс Дизайн" отдельно.
В нашем примере будет разобрана схема учета товаров по средневзвешенным ценам. Списание на реализацию в течении месяца будем производить по текущей средневзвешенной цене, а в конце месяца выполнять перерасчет себестоимости отгруженных товаров по фактической средней на конец месяца.
Субсчетами счета 41 будем считать наименования товаров. Для реализации учетной схемы будем использовать следующие параметры счета 41 (в скобках указаны названия параметров в плане счетов):

=1 - количество товара (Количество), 
=2 - отпускная цена (Отпускная цена), 
=3 - торговая наценка (Наценка %), 
=4 - суммарный приход в количественном выражении (Приход:кол-во), 
=5 - суммарный приход в суммовом выражении (Приход: сумма), 
=6 - реализация за месяц в количественном выражении (Отпуск: кол-во), 
=7 - учтенный НДС (НДС учтенный), 
=8 - учтенный спецналог (СПН учтенный). 
Определим операцию прихода товаров следующим образом:

Методики разложения суммы операции на "составляющие" файлом-коэффициентом NDS_SPN, подробно описана в главе Параметры счетов и нормативная информация. Везде далее мы будем пользоваться этими приемами без комментариев.
Итак, первые три "реальные" проводки "раскладывают" сумму прихода. В первом параметре накапливается количество товара данного наименования, в седьмом и восьмом параметрах "приходуется" НДС и спецналог.
Почему мы используем два параметра для накопления количества? Первый параметр нужен для фиксации реального количества товара имеющегося в наличии. При реализации товара мы будем вычитать из него реализованное количество. Четвертый и пятый параметры будут "бесконечно" накапливать приходы для возможности определения средней цены. Мы не можем использовать для этого первый параметр и значение сальдо субсчета из-за того, что некоторый товар может быть полностью распродан за месяц и среднюю цену на конец месяца нельзя будет вычислить из-за деления на ноль.
Попробуйте зарегистрировать, например, такую операцию:

Ввести ее легко - мы просто выбираем нужные пункты из 5 последовательных меню, при необходимости пополняя списки субсчетов счетов 41 и 60 (или другого счета расчетов, выбранного при регистрации). Посмотрим проводки:

Теперь займемся ценообразованием. Для этого можно использовать следующий набор операций:

Во-первых, отпускную цену можно установить вручную. Для этого достаточно выполнить операцию "ценообразование ручная установка отпускной цены". При ее регистрации надо выбрать товар (субсчет 41 счета) и в качестве суммы операции ввести отпускную цену, которая будет записана в соответствующий параметр. Остальные три из приведенных операций нужны для автоматического расчета отпускных цен по заданному проценту торговой наценки. Для этого надо задать ее для каждого товара, выполнив операцию "ценообразование ручная установка наценки". В качестве суммы операции здесь должен быть введен процент наценки. Далее может быть выполнен пересчет отпускных цен - в автоматическом режиме или индивидуально. Суть пересчета в автоматическом режиме (операция "ценообразование пересчет отпускных цен всех") состоит в переборе субсчетов счета 41 - товаров и заполнении второго параметра величиной, рассчитываемой файлом-коэффициентом CENA. Он содержит следующие команды:

* Расчет цены товара
$ = [EP $D,2]  на случай, если товар есть в справочнике но не 
*              заготавливался
! [EP $D,4] > 0  если товар заготавливался
  $ = ([EP $D,5]/[EP $D,4])*(100+[EP $D,3])/100  себестоимость с
*                                                наценкой
  $ = $*(100+[EP 68-02]+[EP 68-15])/100      цена с налогами
  $ = [RO $/100]*100                         округление до сотен
!
Разберем его немного подробнее. Суть расчета состоит в том, что отпускная цена определяется как сумма средней цены заготовления, сложившейся на текущий момент, со стоимостью процентной надбавки к ней же. "Дебетуемым" счетом псевдопроводки (которая, конечно же никак не изменяет сальдо субсчета) является код субсчета-товара. Поэтому в формулах используется ссылка $D. Это, как Вы помните, обозначение дебетуемого счета проводки из которой вызван файл-коэффициент.
Итак,
[ep $D,4] - общее количество заготовленного товара, 
[ep $D,5] - общая стоимость заготовления
Отсюда,
[ep $D,5]/[ep $D,4] - средняя цена единицы товара на 
		      момент выполнения операции
Далее [ep $D,3] - процент торговой наценки и, следовательно: ([ep $D,5]/[ep $D,4])*(100+[ep $D,3])/100 есть не что иное, как себестоимость заготовления единицы + процент наценки. На полученную сумму "наворачиваются" налоги, ставки которых взяты из параметров соответствующих субсчетов, которые мы туда "положили" в главе Параметры счетов и нормативная информация:
$ = $*(100+[ep 68-02]+[ep 68-15])/100 
И, наконец, полученное значение округляется до сотен:
$ = [ro $/100]*100 
Функция [ro ] округляет результат деления до ближайшего целого, к которому потом сзади "приписываются" два нуля.
Для чего мы используем оператор условия? Дело в том, что если некоторый товар введен в справочник, но по нему никогда не было приходов, то исчисление средней цены невозможно. Поэтому при расчете мы оставляем отпускную цену той же, какой она была заведена вручную или операцией установки отпускной цены.
Установим на наш товар 20% наценки:

Все правильно. Себестоимость единицы товара 5000, 20% наценки составляет 1000. Плюс к тому 20% НДС - 1200, да еще 1.5% спецналога - 90. Округляя до сотен получаем 7300.
Для чего мы рассчитываем цены? Да хотя бы для того, чтобы напечатать прайс-лист. Приведем текст формы:

* Прайс-лист

            Отпускные цены товаров

#41             перебор всех субсчетов счета 41 Товары
 NT=[N2 #]      наименование субсчета-товара
 CT=[EP #,2]    второй параметр субсчета - отпускная цена
* макет строки вывода
   ^^^^^^^^^^^^^^^^^^^NT    ^^^^^^^^^^^^^CT^^
   ^^^^^^^^^^^^^^^^^^^^^
   ^^^^^^^^^^^^^^^^^^^^^
# 
Конечно, то, что получается на выходе этой формы не очень-то презентабельно. Однако, никто не мешает Вам "пририсовать" к ней необходимые "бантики".
Теперь займемся реализацией. Предположим, что реализация происходит через кассу и безналично. В первом случае будем сразу дебетовать счет 50. А во втором соответствующий счет расчетов, поскольку банк обрабатывается отдельно. Пользуясь уже обкатанной методикой, заведем фиктивный счет - справочник счетов, дебетуемых при реализации:

Составим операцию по реализации товара:

Файл-коэффициент RealTov содержит следующие команды:

* Реализация товара
OD = 100+[EP 68-02]+[EP 68-15]       общий делитель
SV = $                               сумма выручки
ND = [RO SV*[EP 68-02]/OD]           НДС в выручке
SN = [RO SV*[EP 68-15]/OD]           СПН в выручке
S0 = SV-ND-SN                        сумма выручки без налогов
NZ = [RO [EP @41,7]*Q/[EP @41,1]]    сумма зачета по НДС
SZ = [RO [EP @41,8]*Q/[EP @41,1]]    сумма зачета по СПН
$  = [RO [EP @41,5]*Q/[EP @41,4]]    сумма, списываемая на
*                                    реализацию
В качестве суммы операции должна вводиться отпускная стоимость товара по расходному документу.
Расчеты предельно просты. Рассчитываются налоги, а сумма выручки очищается от них. Далее рассчитываются зачитываемые суммы. Расчет переменных NZ и SZ достаточно очевиден: зачитывается доля НДС и спецналога, соответствующая количеству отпущенного товара. Именно поэтому уменьшение наличного количества товара производится в операции после всех действий. В шестом параметре накапливается количество отпущенного за месяц товара. Это нужно, если мы собираемся пересчитать фактическую себестоимость в конце месяца.
Отразим операции по реализации. В первой отпустим товар через кассу по прайс-листу: посмотрим проводки:

посмотрим проводки:

На реализацию списано 300*5000 = 1500000. В кассу поступило 2190000. Из них 2190000*20/121.5 = 360494 - НДС, 27037 - спецналог. Зачтено по НДС 1000000*300/1000 = 300000 - доля поступившего НДС, приходящаяся на отпущенную партию. Аналогично по спецналогу. ЬбрЖ В шестом параметре установлена величина отпущенной партии. Учтенные по данному наименованию товара НДС и спецналог уменьшились на сумму зачета (7 и 8 параметры), остаток товара составил 700 единиц (первый параметр).
Все это можно увидеть в оборотном балансе:

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

Теперь пришлось выбирать из большего числа пунктов меню - операция учла, что на счете 62 есть субсчета. Проанализируем проводки:

Здесь отличие состоит в том, что при регистрации зафиксирована "связь" с конкретным покупателем.
Вообще говоря, при регистрации операций можно было бы использовать установленную цену и заставить "Финансы без проблем" самостоятельно считать сумму выручки, а не вводить ее с клавиатуры. Мы, однако, не рекомендуем этого делать, поскольку счет данному покупателю мог был быть выписан до последнего пересчета отпускных цен или ему была сделана скидка. Поэтому суммы лучше вводить вручную, основываясь на документе, а не машинной памяти.
Пришла новая партия товара и мы пересчитали отпускную цену:

Всего, за всю историю пришло 1000+2000=3000 единиц товара на сумму без налогов 1000*5000+2000*5500 = 16000000. Средняя цена - 16000000/3000 = 5333 (с длинным хвостиком). С надбавкой в 20% получится 5333*1.2 = 6400. Плюс налоги 6400*20/100 + 6400*1.5/100 = 1376. Итого получается 7776, с округлением 7800. Что мы и видим во втором параметре субсчета:

Теперь оказывается, что фактическая себестоимость товара в данном периоде выше, чем та, которую мы списали на реализацию. Поэтому выполним пересчет себестоимости. Для этого составим следующую операцию:

Файл-коэффициент REAL содержит следующие команды:

* Расчет фактической себестоимости реализованного товара
$ = 0      на случай, если товар не отпускался
! [EP $K,6] > 0  если товар отпускался
  $ = [RO ([EP $K,5]/[EP $K,4])*[EP $K,6]] - [MP 46,$K]
!
Как видите, расчет чрезвычайно прост. Средняя цена, сложившаяся к текущему моменту умножается на количество реализованного товара. Тем самым определяется средневзвешенная себестоимость всей отгрузки данного товара за месяц. Из нее вычитается ранее списанная сумма. Полученная величина становится суммой проводки с кредита соответствующего субсчета счета 41 в дебет счета 46. Вторая псевдопроводка операции обнуляет количество реализованных в данном месяце товаров, с тем, чтобы в следующем месяце пошел новый отсчет. Выполним данную операцию.
Средневзвешенная цена за месяц 5333 с хвостиком. Реализовано 1000 единиц, следовательно себестоимость отгрузки с учетом хвостика в средней цене из 33.3 коп, о котором машина помнит, составляет 5333333. В то же время, до сих пор мы списали 5000000. И теперь списываем остаток.
Напрашивается вопрос. Зачем мы списывали текущую среднюю себестоимость на реализацию в каждой операции, если потом все равно делали перерасчет в конце месяца? Да, действительно, этого можно было бы и не делать. Однако, до сих пор непонятно, что считать средней ценой - текущую среднюю или среднюю за период. Поэтому мы построили универсальную схему. Она умеет считать среднюю за период и в то же время годна для списания по текущей средней - в этом случае просто не надо выполнять операцию "Товары пересчет себестоимости".
Теперь нам осталось только создать операцию по списанию издержек обращения:

Сумма проводки здесь рассчитывается так:

[ed 44] - сальдо счета 44 на конец месяца: сумма издержек обращения;
[mp 46,41]+[ed 41] - стоимость реализованных за месяц ([MP 46,41]) и остатка ([ED 41]) товаров; 
[ed44]/([mp 46,41]+[ed 41]) - средний процент издержек обращения
Из формулы видно, что списание производится пропорционально стоимости реализованных товаров.
Теперь можете добавить другие товары, установить отпускные цены и "играться" дальше. Обратите внимание, как работает операция "Товары пересчет себестоимости". Мы заранее "положили" ее в конце месяца и теперь она работает динамически, "подкарауливая" результаты выполнения предшествующих действий. Такая возможность оперативного пересчета без лишних нажатий на клавиши доступна только в "Финансах без проблем". В большинстве других систем автоматизации бухгалтерского учета такой легкости пересчетов достичь нельзя.
На этом цикл операций по учету товаров завершен. Конечно, мы не рассмотрели много важных вопросов: возврат товара поставщикам, товары на консигнации, товары в пути, внутреннее перемещение и т.д. В принципе все они поддаются описанию в виде операций программы "Финансы без проблем". Поскольку мы не ставим себе целью перебрать все возможные схемы, оставляем решение этих вопросов на усмотрение читателя.

Учет материалов

Для демонстрации возможностей "Финансов без проблем" при организации компьютерного учета материалов рассмотрим достаточно типичную учетную схему. Ее суть состоит в том, что поступающие материалы учитываются на счете 10 по учетным ценам, заготовление происходит с использованием счета 15, возникающие отклонения фактических цен заготовления от учетных в момент оприходования списываются на счет 16. Отпуск материалов в производство также осуществляется по учетным ценам. В конце месяца отклонения фактических цен от учетных списываются на субсчета основного производства пропорционально отпуску материалов. При этом предполагается, что учет на счете 20 ведется в разрезе номенклатуры выпускаемой продукции.
Не забудьте удалить введенную нами ранее в главе "Формулы и переменные" операцию "Материалы приход", поскольку здесь мы ее поменяем.
Для возможности отработки предлагаемых здесь расчетных схем откройте субсчета на счетах 10, 15, 16, 20. Мы будем использовать следующие субсчета:

10-? Наименования материалов
20-? Наименования выпускаемой продукции
Кроме того, на счете 10 введем следующие параметры:
=1 - Количество 
=2 - Учетная цена 
Приводимые далее варианты настройки операций и отчетов предполагают, что НДС по материалам учитывается на субсчете 19-01, спецналог по материалам - на субсчете 19-11, расчеты с бюджетом по НДС проводятся через субсчет 68-02, а по спецналогу - через 68-15.
Для реализации описанной выше учетной схемы создадим операции:
 1. Приход материалов,
2. Отпуск материалов, 
3. Списание отклонений в стоимости материалов, 
4. Установка учетной цены
Начнем с операции прихода материалов. Здесь мы должны выполнить следующие действия:

1. Дебетовать субсчет 15-1 в корреспонденции со счетом "поставщика" на стоимость приходуемых материалов.

2. Дебетовать соответствующие субсчета счета 19 на сумму полученных НДС и спецналога.

3. На соответствующий субсчет счета 10 "принять" стоимость поступившего материала по учетным ценам.

4. К параметру "Количество" прибавить величину поступившей партии.

5. Разницу между приходной и фактической ценой отнести на счет 16-1 в корреспонденции со счетом 15-1.

При этом будем учитывать следующее. Если приходит новый материал, учетная цена которого еще не установлена, в момент регистрации операции прихода пользователь должен добавить соответствующий субсчет. В этом случае учетная цена автоматически устанавливается равной цене прихода. Поскольку в момент написания книги не было разъяснений о том, в какой момент следует проводить зачет фактически полученных сумм НДС и спецналога - при оплате или при оприходовании, выбран вариант зачета при оприходовании. Приводим описание операции "Материалы приход от поставщика":

Файл-коэффициент PMC содержит следующие команды:

* Приход материальных ценностей
UC = [EP $D,2]     учетная цена. $D - дебетуемый счет проводки
! UC = 0           если учетная цена = 0, то
  UC = S0/Q        учетная цена = фактическая цена
!
US = UC*Q          учетная стоимость = учетная цена * количество
OS = S0-US         отклонение = фактическая стоимость - учетная стоимость
NQ = [EP $D]+Q     новое количество материала
$  = US            сумма проводки = учетная стоимость
Следует отметить, что при выполнении данной операции запись отклонений идет только в "одну сторону" счета 16-1, то есть при превышении фактической стоимости над учетной разница будет дописываться, а в противном случае сторнироваться. В этом случае может получиться отрицательный дебетовый оборот. Обычно используют не сторнирование, а обратную проводку. Можно изменить файл-коэффициент так, чтобы он "вычислял" дебетуемый и кредитуемый счета и записывал их в переменные, а в проводках использовать *-обращения к счетам. Кому это интересно, может поупражняться. Мы же этого делать не будем, поскольку величина оборота субсчета 16-1 нас не интересует - важно лишь его сальдо, которое от такой "перемены мест слагаемых" не изменится. Оприходуем какой-нибудь материал, посмотрим проводки:

При регистрации операции мы создали новый субсчет счета 10. Поэтому учетная цена (параметр 2) установилась равной фактической и никаких отклонений не возникло. Продолжим приходование. Примем еще одну партию того же материала. А здесь уже зафиксированы отклонения:

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

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

Для пущей корректности в качестве "защиты от дурака" следовало бы написать файл-коэффициент для того, чтобы нельзя было списать материала больше, чем есть на самом деле. Впрочем, автор ориентируется на умных читателей.
Отпустим полученный нами материал в основное производство на разные виды продукции:

Посмотрим, что у нас в оборотном балансе:

Итак, в производство отпущено 1500 единиц материала на сумму 3000000 руб. (1500*2000). Отклонения в стоимости материалов составили (2500-2000)*1000 = 500000. (2500 - фактическая цена единицы материала во второй партии). Теперь займемся списанием отклонений в стоимости материалов от учетных цен. Здесь нам нужно предусмотреть следующее:

1. Вычислить коэффициент отклонений как отношение суммы отклонений на начало месяца и отклонений по поступившим за месяц материалам к сумме стоимости материалов на начало месяца и стоимости поступивших материалов.

2. На каждое наименование выпускаемой продукции списать долю суммарных отклонений, пропорциональную отпуску материалов на производство данного вида продукции.

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

Как уже говорилось, мы предполагаем, что счет 20 разбит на субсчета, с оответствующие выпускаемой продукции. Кроме того, мы предполагаем, что другие счета отпуска материалов не имеют субсчетов. В связи с этим мы не можем выполнить все необходимые действия в одной операции. Поэтому отклонения будут списываться раздельно по отпуску в производство и по отпуску на другие нужды:

Файл-коэффициент OtklOtp содержит команды:

* Списание отклонений от фактической стоимости материалов за месяц
US = [BD 10,MC]+[MD 10] стоимость заготовления по учетным ценам
$  = 0               если она равна нулю, значит материалов нет
! US > 0             и не приходило => нет и отклонений
  $ = [MP $D,10]*([BA 16-1,MC]+[MD 16-1])/US - [MP $D,16-1]
!
Разберем его составляющие:

[bd 10,MC] - сальдо на начало периода = стоимость материалов по учетным ценам на начало месяца;
[md 10] - дебетовый оборот за текущий месяц = поступление материалов за месяц по учетным ценам;
[ba16-1,MC] - сальдо со знаком на начало периода = накопленные к началу месяца отклонения в стоимости материалов;
[md 16-1] - дебетовый оборот за текущий месяц = отклонения, накопленные за месяц. Здесь мы используем тот факт, что по правилу построения операции "Материалы приход" кредитовых оборотов счета 16-1 не возникает - сторнируются дебетовые обороты;
[mp $D,10] - суммарный оборот в дебет счета проводки с кредита счета 10 = стоимость отпуска ВСЕХ материалов на данный объект учета;
[mp $D,16-1] - суммарный оборот в дебет счета проводки с кредита счета 16-1 = величина ранее списанных за текущий месяц отклонений по данному виду затрат.

Отсюда следует, что

US=[bd10]+[md 10]  - полная стоимость заготовления материалов по учетным 
                     ценам к текущему моменту,
[ba 16-1]+[md 16-1]- отклонения, накопленные к текущему моменту.
И, значит:
 $ = [MP $D,10]*([BA 16-1]+[MD 16-1])/US
сумма общих отклонений списываемая по данному направлению использования материалов.

Зачем мы вычитаем [mp $D,16-1]? Это делается для того, чтобы можно было выполнять списание когда угодно и сколько угодно раз в течение месяца - ранее списанные отклонения не будут включены в расчетную сумму!

Обратите внимание на то, что мы использовали только входящие сальдо и дебетовые обороты счета 16-1. Применять [ed 16-1] нельзя ни в коем случае, поскольку эта величина при выполнении операции будет меняться от проводки к проводке, а нам везде нужно значение СТРОГО на начало выполнения операции. Отметим, что если Вы не ведете субсчетов счета 20, то можно ограничиться одной операцией. С другой стороны, если, например, счет 23 ведется с разбивкой по видам продукции вспомогательного производства, то следует создать операцию аналогичную примененной к 20-му счету для 23-го.
Спишем отклонения в стоимости отпущенных в основное производство материалов, посмотрим проводки:

Все верно. На продукцию А (субсчет 20-1) отпущено 500 единиц материала (1000000 в учетных ценах), на продукцию Б (субсчет 20-2) - 1000 единиц (2000000 в учетных ценах). Всего материалов по учетным ценам 4000000 руб., списано в производство по учетным ценам 3000000 руб. Всего отклонений 500000 руб. Следовательно, всего должно быть списано 3/4 суммы учтенных отклонений - 375000 руб. Из них 1/3 на производство продукции А - 375000*1/3 = 125000 и 2/3 на производство продукции Б - 375000*2/3 = 250000.
Отпустим материалы на общехозяйственные нужды:

И спишем отклонения в стоимости материалов по прочим операциям:

Теперь отклонения полностью списаны. В связи с разбираемой учетной схемой, нам необходимо разработать операцию, которая устанавливала бы новые значения учетных цен. Напомним, что вручную поменять значения прямо в плане счетов нельзя - суммы всех ранее выполненных проводок будут пересчитаны:

Данная операция сторнирует (если новая учетная цена больше предыдущей) или доначисляет (в противном случае) отклонения, переоценивает соответствующий материал и устанавливает новое значение учетной цены. Теперь рассмотрим некоторые вопросы построения отчетов по учету и движению материалов. В варианте стандартной поставки имеется немало готовых полезных форм связанных с учетом товарно-материальных ценностей. Среди них: товаpный чек, расходная и пpиходные накладные, счет-фактуpа, ведомость остатков матеpиалов, ведомость списания матеpиалов, сводная накладная получения материалов от поставщика, опись МБП и некоторые другие. Имеет смысл тщательно с ними познакомиться. Однако, надо иметь ввиду, что для рассмотренной в книге учетной схемы они не годятся из-за существенных различий в распределении "ролей" параметров счета 10 в демонстрационных примерах и в книге. В примерах форм стандартной поставки первым параметром является динамически пересчитываемая цена материала. Количество там не хранится вовсе. Поэтому, для адаптации указанных форм к изложенной здесь схеме необходимо заменить формулы вычисления количества через цену в формах на непосредственное использование количества и цены материала, используемых в нашей схеме. Мы не будем подробно на этом останавливаться, а разработаем свой пример - оборотную ведомость. Текст формы "Оборотная ведомость" приводится далее:

Теперь посмотрим, что получается на выходе:

Это не обычная оборотная ведомость. Здесь еще присутствует расчет фактической стоимости заготовления материалов. Текст описания формы разбирать не будем - он достаточно подробно прокомментирован. Если Вы все-таки не понимаете, что там закодировано, еще раз прочитайте главы о построении отчетов в "Финансах без проблем". Приведенная здесь схема учета материалов рекомендуется во многих учебниках. В то же время, с точки зрения "точной" калькуляции она не выдерживает никакой критики, поскольку отклонения списываются не индивидуально у каждого материала на каждый вид продукции, а общей массой. Дело в том, что она разрабатывалась применительно к ручному счету при котором "точное" распределение отклонений слишком трудоемко. Конечно, для "Финансов без проблем" можно разработать и более тонкую схему, но мы не будем этого делать и оставим эту задачу в качестве полезного упражнения для любителей.

Зарплата

Правила расчета заработной платы весьма специфичны. Формализация большинства возникающих здесь проблем в общем виде, учитывающая все нюансы, весьма трудоемка. Поэтому, если Вы хотите используя "Финансы без проблем" автоматизировать соответствующие расчетные процедуры придется затратить определенные усилия. В то же время, вычислительные возможности программы вполне достаточны для выполнения подобного рода расчетов и нам известно немалое число пользователей успешно разрешивших проблемы расчета заработной платы. Кроме того, дилерами Хакерс Дизайн разработаны и поставляются стандартные варианты правил расчета. В данной книге мы рассмотрим только некоторые вопросы автоматизации расчетов, связанные с налогообложением. Будем исходить из того, что начисленные каждому сотруднику суммы уже известны. Удалите из дерева ранее созданные операции по начислению зарплаты. В данной главе мы создадим новые. Прежде всего, составим операцию по отражению индивидуальных начислений и удержаний из заработной платы. При этом мы будем исходить из следующих соображений. Будем считать, что субсчетами счета 70 являются сотрудники предприятия. Кроме того, договоримся о следующем распределении параметров данного счета:

=1 - количество льгот по подоходному налогу сотрудника 
=2 - накопленная с начала года сумма льгот 
=3 - начисленный с начала года доход 
=4 - удержанный с начала года подоходный налог
Заведем в плане счетов фиктивный счет MIN со статусом "внебалансовый" и в качестве его входящего сальдо укажем величину минимальной заработной платы. При этих предположениях операцию индивидуального начисления зарплаты можно записать следующим образом:

Файл-коэффициента PodNalog содержит следующие команды:

* Подоходный налог с физических лиц
DN=[EP $D,3]+[MK $D,MC]      Доход, начисленный с начала года.
NU=[EP $D,4]                 Удеpжанный ранее подоходный налог.
SL=[EP $D,2]+[EP $D]*[EA MZP]     Сумма льгот, прошлых и текущих
OD=DN*0.99-SL                     Облагаемый доход
! OD < 0
  PN=0
! OD in 0..10000000       Пpовеpки на пpинадлежность интеpвалу.
  PN=0.12*OD
! OD in 10000001..50000000
  PN=1200000+0.20*(OD-10000000)
! OD > 50000000
  PN=9200000+0.30*(OD-50000000)
!
$=PN-NU          Доначисленный в этом месяце подоходный налог.
! $ < 0          Возврата сумм по подоходному
  $ = 0          налогу не производим
!
NU = NU+$
Разберем составляющие расчета:
[ep$D,3] 	- доход, начисленный с начала года ДО текущего месяца; 
[mk $D,MC] 	- доход, начисленный в текущем месяце; 
[ep $D,3]+[mk $D,MC] - доход, начисленный с начала года ПО текущий месяц;
[ep $D,4] 	- подоходный налог удержанный ДО текущего месяца; 
[ep $D,2] 	- сумма льгот с начала года ДО текущего месяца; 
[ep $D] 	- количество льгот сотрудника в текущем месяце; 
[ea MIN] 	- величина минимальной заработной платы;
[ep $D]*[ea MIN] - сумма льгот в текущем месяце (МЗП*число льгот) 
Исходя из этого, формула OD=DN*0.99-SL рассчитывает величину облагаемого подоходным налогом заработка, начисленного с начала года (1% в Пенсионный фонд, поэтому DN умножается на 0.99). Далее, в операторе выбора в переменной PN рассчитывается сумма подоходного налога, подлежащего перечислению в бюджет. Из него вычитается величина уже удержанного подоходного налога ($=PN-NU), которая записывается в переменную, выражающую сумму проводки удержания налога. Если подоходный налог оказывается отрицательным (зарплата слишком мала или положено слишком много льгот), то устанавливаем сумму проводки равной нулю ($=0), поскольку возврат сумм подоходного налога не производится. Заключительным действием сумма удержанного с начала года налога увеличивается на только что рассчитанную величину для занесения в соответствующий параметр.
Опробуем составленную нами операцию в "деле". Для этого предположим, что на нашем предприятии по совместительству работает некто Сидоров А.И. Начислим ему 2 млн.руб. за январь:

Поскольку Сидоров А.И. не имеет льгот, программа учла только 1% пенсионного фонда и начислила 237600 подоходного налога. Все верно: (2000000-20000)*0.12 = 237600. В количество накопленных льгот записалось 0, в начисленный с начала года доход (параметр 3) - 2000000, а в удержанный с начала года подоходный налог (параметр 4) - 237600. Теперь выполните операцию в феврале:

Суммы проводок остались те же, но в параметры занесены уже другие значения. И так будет продолжаться до мая включительно. В июне сумма подоходного налога изменится (пока мы игнорируем факт изменения МЗП в этом периоде):

Годовой доход в июне достиг 12 млн., поэтому в отсутствии льгот: (12000000*0.99-10000000)*0.2+1200000 = 1576000. И так далее.
Созданная нами операция предполагает, что в качестве ее суммы будет вручную вводиться начисленная в текущем месяце заработная плата. При этом необязательно вводить все произведенные начисления суммарно именно в этой операции. Они могут быть введены в текущем месяце несколькими проводками, но обязательно ПЕРЕД данной операцией. Если операции по каким-либо начислениям выполняются после нее, то она должна быть выполнена повторно. В противном случае "Финансы без проблем" не "учтут" в подоходном налоге этих сумм. Этим свойством Вы можете воспользоваться, если надо начислить по каким-либо причинам не облагаемые подоходным налогом суммы.
Попробуйте в январе датой после введенной операции по начислению зарплаты Сидорову А.И. ввести, например, такую операцию:

Посмотрите на проводки операций начисления зарплаты Сидорову в феврале, марте и т.д. Они не изменились - доход начисленный 25 января не учтен. Если Вам понадобилось какие-то суммы проводить именно таким образом, то есть не облагая подоходным налогом, то в параметрах соответствующего субсчета эти суммы не будут отражены, но их легко можно вычислить, поскольку это есть не что иное как годовой оборот по кредиту данного субсчета:

Как видим, в третий параметр занесено значение учтенного дохода - 4000000, а калькулятор, вычислив функцию [ak 70-001] показывает значение кредитового оборота субсчета 71-001 - начисленный доход равный 14 млн. Аналогичное значение данная функция будет возвращать в файлах-коэффициентах и выходных формах.
Теперь разберемся с сотрудниками, имеющими льготы. Для этого в плане счетов у субсчетов счета 70 в первом параметре должны быть указаны значения количества льгот. Для тех, кто работает с начала года или тех, кто работал на момент начала использования программы "Финансы без проблем" эти значения могут быть указаны вручную при заведении плана счетов. Например:

Кроме того должно быть задано начальное значение счета MIN, "сальдо" которого содержит значение минимальной заработной платы:

Попробуем начислить 1 млн. руб. Астаховой М.С. в январе:

Выполним ту же операцию в феврале и марте. Далее, наступил апрель и теперь надо изменить минимум. Мы уже знаем, что "подправить" его вручную нельзя - суммы всех выполненных до этого проводок пересчитаются. Поэтому надо создать операцию, с помощью которой минимум можно было бы переустанавливать в течении года. Вот она:

Здесь используется искусственный прием: счет MIN дебетуется в корреспонденции с фиктивным счетом XXX на величину разницы между новой величиной минимальной заработной платы, вводимой в качестве суммы операции и ее старой величиной - значением "сальдо" счета MIN. Тем, самым значением сальдо счета MIN устанавливается новое значение минимальной заработной платы. А это как раз то, что нам нужно. Выполним операцию установки нового минимума:

Теперь можно вычислить обороты счетов и убедиться в том, что с текущего момента сальдо счета MIN стало равно 34400 (не забудьте правильно установить через календарь конец отчетного периода). Теперь начислим Астаховой в апреле 1 млн. руб:

Как видим, удержанный в текущем месяце подоходный налог отличается от налога, удержанного в предыдущих. Аналогично необходимо поступить и 1 мая, для установки минимума в 43700.
Использование параметров для хранения сумм начисленного за год дохода, удержанного подоходного налога и суммы льгот позволяет нам без дополнительных "ухищрений" рассчитать подоходный налог с тех сотрудников, которые были приняты на работу в течении года. Для этого надо создать операцию, которая устанавливает в данные параметры нужные значения. Назовем ее "Зарплата прием на работу":

Суть операции очень проста: она запрашивает начальные значения параметров, которые новый сотрудник "принес" при поступлении на работу. Предположим, некий Семенов К.К. принят на постоянное место работы с 1 мая 1995 года. Зарегистрируем этот факт с помощью "Финансов без проблем":

Постройте оборотный баланс, проанализируйте значения параметров счета 70 и убедитесь, что в нужном субсчете установлены введенные нами значения. Теперь с Семеновым можно "работать" также, как и с остальными.
Теперь разберемся с перерасчетами. Предположим, Голубкову Л. в течении января-марта начислялось как и Астаховой по 1 млн. в месяц, но удержание подоходного налога производилось из расчета 1 льготы. В марте Голубков принес справку о рождении ребенка из которой следует, что расчет подоходного налога должен был производиться начиная с января из расчета 2 льгот в месяц. Необходим перерасчет. Заставим "Финансы без проблем" его выполнять. Рассмотрим здесь такую технологию перерасчетов. Начисление за март будем производить как раньше, исходя из старого числа льгот у Голубкова. Но сразу после этого выполним следующую операцию перерасчета:

В качестве суммы операции надо вводить заранее вычисленную сумму дополнительных льгот за период их действия. Файл-коэффициент PNstorno содержит следующие команды:

 * Перерасчет подоходного налога по дополнительным льготам
DN=[EP $D,3]              Доход, начисленный с начала года.
NU=[EP $D,4]              Удеpжанный ранее подоходный налог.
SL=[EP $D,2]+$            Сумма льгот, прошлых и дополнительных
OD=DN*0.99-SL                     Облагаемый доход
! OD < 0
  PN=0
! OD in 0..10000000       Пpовеpки на пpинадлежность интеpвалу.
  PN=0.12*OD
! OD in 10000001..50000000
  PN=1200000+0.20*(OD-10000000)
! OD > 50000000
  PN=9200000+0.30*(OD-50000000)
!
$  = PN-NU             Разница в подоходном налоге.
NU = NU+$ 
Он составлен в предположении, что начисление зарплаты и расчет подоходного налога в текущем месяце уже производились, но по старым данным. Поэтому значения параметров содержат суммы уже исчисленных дохода, льгот и налога. Смысл действий в файле-коэффициенте состоит в том, что подоходный налог вычисляется относительно новой суммы льгот и в качестве суммы проводки берется разница правильно исчисленного налога и уже удержанного (PN-NU). Если сумма дополнительных льгот введена в виде положительного числа, то эта разница будет отрицательной и, соответственно, операция выполнит сторнирование уже начисленного подоходного налога и запись верных сумм льгот и налога в соответствующие параметры субсчета. После выполнения данной операции должна быть выполнена операция установки нового числа льгот у данного сотрудника:

В ней в качестве суммы операции нужно ввести новое количество льгот и это значение будет занесено в первый параметр соответствующего субсчета.
Попробуем использовать данные операции применительно к нашему примеру. Операции начисления зарплаты Астаховой за январь-март нами уже зарегистрированы. Выполним начисление Голубкову за те же месяцы. Имеем следующие данные. По Астаховой:

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

Легко видеть, что подоходный налог отсторнирован на нужное значение, а в параметры занесены те же, что и у Астаховой М.С. величины:

Теперь можно установить новое количество льгот у Голубкова Л:

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

Валюта

Рассмотрим некоторые вопросы организации многовалютного учета в программе "Финансы без проблем". В варианте правил стандартной поставки используется простейшая методика ведения валютного счета и его переоценки при изменении курсов. Автор настоятельно рекомендует ознакомиться с ней перед чтением последующего материала, поскольку он основан на похожих принципах. Также полезно посмотреть демо-ролик "Учет курсовых разниц при работе с валютами". Здесь приведен более сложный вариант, позволяющий переоценивать не только валютный счет, но и счета расчетов. И, наконец, весьма полезно разобрать пример организации работы пункта обмена валюты, размещенный нами в директории EXCHANGE при инсталляции программы.
Мы приведем изложение более общей схемы, позволяющей переоценивать не только синтетические счета в целом, но и валютные суммы "записанные" на конкретные объекты аналитического учета - поставщиков, покупателей, подотчетных лиц и т.д. Создадим справочник курсов валют в виде фиктивного счета kurs, субсчетами которого будут специальным образом кодированные наименования валют. "Сальдо" каждого из субсчетов будет содержать текущий курс данной валюты, первый параметр - предыдущий курс, а второй - дату установки курса в формате ГГГГММДД. Приводим пример организации данных в указанном справочнике:

Конечно, "сальдо" счета kurs бессмысленно - оно не выражает ничего. Но нам оно и не нужно.
Для манипуляций с курсом определим следующую операцию:

Она работает следующим образом. Сначала старое значение курса - "сальдо" фиктивного субсчета, соответствующего конкретной валюте переписывается в первый параметр. Далее, курс увеличивается на разницу между новым курсом, введенным в качестве суммы операции и предыдущим курсом. После этого дата установки нового курса в формате ГГГГММДД устанавливается во второй параметр счета.
Таким образом можно устанавливать значения курса любой из валют, внесенных в справочник.
Все субсчета, на которых учитывается валюта сведем в справочник "Счета учета валют", организованный на фиктивном счете vs. Коды субсчетов счета vs должны быть составными. Первые шесть символов должны в точности соответствовать аналогичному рублевому счету, а последние три - коду валюты. Например:

Входящее сальдо рублевых счетов, по которым проходят валютные суммы должно быть введено вручную, поскольку данная схема учета допускает "смешение" чисто рублевых сумм и эквивалентов валют. Это возможно, поскольку "принадлежащая" данному счету валюта "учтена" на фиктивных субсчетах справочника vs:

Для вычисления курсовых разниц построим следующую операцию:

Здесь процедура вычисления курсовой разницы применяется сразу ко всем аналитическим объектам, "хранящим" валюту, и должна выполняться в тот же день после установки изменений всех курсов, но до выполнения операций по движению валюты. Файл-коэффициент KursRaz вычисляет разницу курсов, учитывая примененное кодирование субсчетов фиктивного счета vs. При обработке каждого из них в переменную NS заносится код реального рублевого счета, а в переменные PR и OR положительная и отрицательная разницы, соответственно. Вычисления производятся следующим образом:

* Курсовая разница
TD = 10000*YC+100*MC+DC    текущая дата в формате ГГГГММДД
NS = [CP [N1 #],1,7]       выделен код "реального" субсчета
KV = [CP [N1 #],8,2]       выделен код валюты
KR = 0
PR = 0         переоцениваются только те валюты, курс которых
OR = 0         изменился сегодня
! [EP *KV,2] = TD   <=======================
  KR=([EA *KV]-[EP *KV])*[EP #] разница курсов*количество валюты
!
! KR > 0                   положительная разница
  PR = KR
! KR < 0                   отрицательная разница
  OR = -KR
!  
Все достаточно прозрачно. Код субсчета, учитывающего валюту, разделяется на две части - код рублевого субсчета и код валюты. Далее подсчитывается курсовая разница:
[ea *KV] - "сальдо" субсчета счета kurs = текущий курс валюты,
[ep *KV] - первый параметр субсчета счета kurs = старый курс, 
[ep #] - количество валюты на субсчете счета vs, 
([ea *KV]-[ep *KV])*[ep #] - курсовая разница по данному субсчету.
Если курсовая разница положительна, то PR содержит ее величину, а OR ноль и, наоборот, если курсовая разница отрицательна, то OR содержит ее абсолютную величину, а PR ноль. Опробуем наши операции. Сначала установим новые курсы валют на 20.01.95:

Выполним оборотный баланс и проанализируем субсчета счета kurs. Легко видеть, что установились новые курсы:

Теперь переоценим валютные суммы:

Легко проверить: 159*5000 = 795000 и 109*10000 = 1090000.
Теперь составим операции по движению валюты. Здесь должно учитываться как движение валюты в "натуре" на фиктивном счете, так и движение рублевых сумм на "реальных" счетах. Нам придется завести две операции: зачисление и списание валюты. В операции зачисления валюты мы будем "ставить" ее на учет в виде валютных сумм, а при списании - "списывать" конкретную учитываемую валютную сумму. Естественно, манипуляции с фиктивными счетами учета валютных сумм будут сочетаться с отражением движения рублевых эквивалентов на "реальных" счетах. Такие двойственные действия необходимы из-за того, что движение валютных сумм отражается внесистемными записями, а их рублевых эквивалентов в рамках правил двойной записи. С формальной точки зрения операции "зачисления" и "списания" необходимы для того, чтобы получать и расходовать суммы, которые переоцениваются на одном из счетов-участников проводки и не переоцениваются на корреспондирующем счете.
Заведем справочники :

Они должны содержать перечни соответствующих счетов, в специфически закодированном виде. Например:

Итак, приводим описание операций движения валюты в виде правил "Финансов без проблем":

Достаточно "мудреная" запись на самом деле расшифровывается очень просто. При зачислении валюты в первой псевдопроводке сначала предлагается меню из фиктивных субсчетов учета валютных сумм. Файл-коэффициент ScetDV из кода данного субсчета "извлекает" код рублевого субсчета и код валюты следующим образом:

* Код счета движения рублевого эквивалента
* Перед выполнением файла выбран субсчет фиктивного счета vs -
* код объекта, учитывающего валютную сумму
* первые семь символов кода должны содержать код реального
* субсчета,
* учитывающего рублевый эквивалент
* последние два символа должны содержать код валюты справочника
* курсов на фиктивном счете kurs
VS = [N1 $D]     фиктивный счет учета валютной суммы
RS = [CP VS,1,7] балансовый субсчет учета рублевого эквивалента
KV = [CP VS,8,2] код валюты
$ = 0            сумма псевдопроводки равна нулю  
Все использованные здесь функции нам уже известны, а комментарии достаточно красноречивы ...
Во второй псевдопроводке предлагается меню из субсчетов фиктивного счета spv. Из выбранного при регистрации операции кода файл-коэффициент Scet1 строит код кредитуемого субсчета проводки.
Далее, формируется проводка, рублевая сумма которой рассчитывается как произведение количества валюты, вводимой в качестве суммы операции на ее курс, извлекаемый как "сальдо" субсчета справочника kurs. И, наконец, последняя псевдопроводка дополняет количество валюты, учтенной в первом параметре выбранного при регистрации элемента справочника валютных сумм, на величину суммы операции. Зарегистрируйте, к примеру, такую операцию:

Она означает, что мы получили 1000 долл. США в результате реализации. Посмотрим проводки:

"Истинно, истинно говорю вам: если пшеничное зерно, падши в землю не умрет, то останется одно; а если умрет, то принесет много плода." (Евангелие от Иоанна, гл. XII, ст. 24.)
В операции списания валюты сказанное верно с точностью до "наоборот". Так, например, операция:

Списывает в общехозяйственные затраты 3000 марок и строит следующие проводки:

При этом на валютном счете остается 7000 марок. Для "перемещения" валюты между двумя переоцениваемыми счетами придется сначала выполнить "списание", а потом "зачисление". Напрямую "передать" валюту от одного счета валютной суммы к другому, к сожалению, не удастся, поскольку здесь в качестве меню нужно два раза "подать" список счетов учета валютных сумм vs, то есть, надо будет дважды использовать @-обращение к одному и тому же счету, а "Финансы без проблем" в одной операции позволяют выбрать субсчет лишь единожды. Поэтому для перемещения можно использовать, например, 79 счет:

Перед выполнением второй операции необходимо явно создать субсчет 60-100USD счета vs. Субсчет 60-100USD можно создать непосредственно во время выбора субсчета валютной суммы при регистрации операции.
Выполнив такое перемещение увидим, что первая операция отразила "уход" 2000$ с валютного счета:

А вторая зачислила их на субсчет поставщика:

В результате проведенных операций на валютном счете осталось 4000 долл. США и 7000 немецких марок и образовалась кредиторская задолженность поставщика в размере 2000 долл. США. Это можно узнать, рассчитав оборотный баланс и вызвав режим анализа субсчетов фиктивного счета vs:

"Финансы без проблем" и внешние программы

Настройка программы на выполнение разнообразных расчетов возможна не только на основе использования встроенных средств программирования. Программа имеет достаточно развитые возможности "общения" с внешними приложениями оформленными в виде *.exe и *.com файлов, а также с DLL-библиотеками. Таким образом, программистам предоставляется возможность самостоятельно "усовершенстовать" "Финансы без проблем", адаптируя программу к особенностям использования на конкретном предприятии или в конкретном регионе. Рассмотрение этих возможностей начнем с описания взаимодействия программы с приложениями, оформленными в виде *.exe или *.com файлов. Для вызова внешних программ в языке файлов-форм используется встроенная функция [ru ]. Ее общий формат:


[ru s1,s2,n],  где s1 - строка, содержащая имя вызываемой программы;
                   s2 - строка с передаваемыми аргументами ;
                   n - режим восстановления экрана: 
                   0 - очистить, а затем восстановить, 
	           1 - оставить как есть (для тех случаев, когда вызываемая программа 
                       ничего на экран не выводит)
Внешняя программа, вызванная функцией [ru ], результаты своей работы должна поместить в первую строку файла RU.TXT.
Рассмотрим следующий пример.
В вариант стандартной поставки "Финансов без проблем" входит файл-формы PLATEZKA.RPT, обеспечивающий формирование первичного документа "Платежное поручение". С помощью псевдопроводки "создать документ" он может быть "пристыкован" к операциям. Однако, каждый раз при формировании документа он заставляет нас вводить банковские реквизиты контрагента. Кроме того, организованный в нем последовательный ввод значений не очень-то удобен. Было бы намного приятнее выбирать необходимые значения из справочника, устанавливающего соответствие кода субсчета, передаваемого в форму, банковским реквизитам контрагента - расчетному счету, МФО и названию банка.
Для решения этой задачи можно использовать следующую простую программу BANK.EXE, написанную на языке СУБД Clipper Summer'87. При ее "сборке" должны использоваться библиотеки clipper.lib, extend.lib и ct1.lib:

parameters FBP_par
* если нет параметров - не работаем
* список параметров должен быть заключен в двойные кавычки
if pcount() = 0
   clear
   ? 'Программа может работать только вместе с "Финансами без проблем"'
   ? 'Параметры не указаны. Нажмите любую клавишу'
   inkey(0)
   quit
endif

set scoreboard off



* файл BANK.DBF должен иметь следующие поля
* SUB_SCET - символьного типа, длина   9
* KONTRAG  - символьного типа, длина 100
* RS       - символьного типа, длина  11
* MFO      - символьного типа, длина  10
* BANK1    - символьного типа, длина  50
* BANK2    - символьного типа, длина  50
* длина полей может быть и иной, но тогда надо изменить настройки
* вызова программы функцией [ru ]
* для приведенного в книге примера критична длина полей RS и MFO
* при изменении их в файле BANK.DBF должны быть изменены параметры
* функции [cp ]
* BANK.DBF должен быть предварительно проиндексирован по полю SUB_SCET

use bank index bank

* функция [ru ] должна должна передать программе
* код субсчета, выбранный при регистрации операции и
* название субсчета, разделенные точкой с запятой

subscet = token( FBP_par, ';', 1 )
kontrag = token( FBP_par, ';', 2 )

* ищем запись, относящуюся к данному контрагенту
seek rtrim(subscet)

* если такой записи нет, то добавляем запись с данным кодом и
* наименованием субсчета
if .not. found()
   append blank
   replace sub_scet with subscet, kontragent with kontrag
   do EditRecord
endif

* оформляем экран - функция [ru ] должна использоваться
* с параметром восстановления экрана
set color to n/bg
@  0,0 say center('Банковские реквизиты контрагентов',80,.T.)
@ 24,0 say ' Enter-выбрать  F5-добавить  F4-изменить  F8-пометить к удалению F2-сортировать '
set color to w/b,n/w
@ 1,0 clear to 23,79
@ 1,0 to 1,79 double
set cursor off



* выводим на просмотр записи о контрагентах для возможности модификации
declare f_list[3], h_list[3]
f_list[1] = 'if(deleted(),"*"," ")'
f_list[2] = 'sub_scet'
f_list[3] = 'left(kontragent,61)'
h_list[1] = ''
h_list[2] = 'Субсчет'
h_list[3] = 'Контрагент'
dbedit( 2, 0, 23, 79, f_list, 'KeyProc', '', h_list )

* записываем в файл RU.TXT строку,
* содержащую расчетный счет, МФО и название банка
memowrit( 'RU.TXT', RS+MFO+alltrim(Bank1)+' '+alltrim(Bank2) )

pack        && удаляем помеченные к удалению записи





* функция обработки нажатий клавиш в dbedit()
function KeyProc
parameters mode, field_ptr
if mode < 4
   return 1
endif
do case
   case lastkey() = 13            && выбрать запись
        return 0
   case lastkey() = -4            && добавить запись
        subscet = sub_scet        && копируются код субсчета и
        kontrag = kontragent      && название субсчета текущей записи
        append blank
        replace sub_scet with subscet, kontragent with kontrag
        do EditRecord             && редактирование банковских реквизитов
        return 2
   case lastkey() = -1            && восстановление индексов
        reindex                   && ох, капризные они у Clipper'а
        return 2
   case lastkey() = -3            && редактирование банковских реквизитов
        do EditRecord
   case lastkey() = -7            && пометить/снять пометку
        if deleted()              && к удалению записи
           recall
        else
           delete
        endif
endcase
return 1




* редактирование полей "Расчетный счет", "МФО" и "Название банка"
procedure EditRecord
save screen
set color to n/bg
@ 24,0 say center('Insert-вставка/замена   Удаление: Del,Bs,Ctrl/T,Ctrl/Y',80,.T.)
set color to w/b,n/w
@ 1,0 clear to 23,79
@ 2,2 say 'Субсчет: ..... '+sub_scet
@ 4,2 say 'Контрагент ... '+left (kontragent,50)
@ 5,17 say right(kontragent,50)
@ 7,0 to 7,79
@  9,2 say 'Расчетный счет ....' get RS
@ 11,2 say 'МФО ...............' get MFO
@ 13,2 say 'Банк получателя ...' get Bank1
@ 14,2 say '                   ' get Bank2
set cursor on
read
set cursor off
restore screen
Для использования программы необходимо штатными средствами обработки dbf-файлов создать файл BANK.DBF, включающий поля:
SUB_SCET - символьного типа, длина 9, 
KONTRAG - символьного типа, длина 100, 
RS - символьного типа, длина 11, 
MFO - символьного типа, длина 10, 
BANK1 - символьного типа, длина 50, 
BANK2 - символьного типа, длина 50
BANK.DBF должен быть проиндексирован по полю SUB_SCET. Имя индексного файла - BANK.NTX.
Программа получает от функции [ru ] в качестве параметра строку, заключенную в двойные кавычки (таковы правила СУБД Clipper), которая содержит код субсчета и его наименование, разделенные точкой с запятой.
Суть работы программы состоит в том, что она ищет в списке записей файла BANK.DBF запись, соответствующую субсчету, выбранному при регистрации операции в "Финансах без проблем". Если такой записи нет, то программа предлагает ввести банковские реквизиты контрагента.
Далее, в любом случае пользователю предлагается на выбор список сведений о контрагентах. Он может откорректировать любую запись, пометить запись к удалению или добавить новую. После нажатия на Enter, реквизиты выбранной записи объединяются в одну строку без всяких разделителей и записываются в файл RU.TXT, откуда их и "подбирает" функция [ru ]. Приведенная программа может использоваться во многих формах, требующих отражения банковских реквизитов. Мы приведем пример ее использования в форме печати платежного поручения. Скопируйте файл PLATEZKA.RPT из директории варианта стандартной поставки в директорию PROBA, переименуйте этот файл в PLAT_POR.RPT и внесите следующие изменения:


Теперь, измените листья ветви "Расчетный счет расход" дерева операций следующим образом:

Зарегистрируем операцию:

Выберите "Создать документ". В ответ на запрос файла-формы введите номер документа, например, 145. Стартовал BANK.EXE и не найдя записи, соответствующей субсчету 60-001 "ТОО Вега" предлагает нам ввести банковские реквизиты поставщика:

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

После нажатия на Enter происходит возврат в "Финансы без проблем" и завершение формирования документа:

Использование функции [ru ] может оказаться достаточно полезным. "Финансы без проблем" написать тяжело, а небольшой "прибамбас" к ним на Клиппере или Бэйсике - не составляет особого труда. Однако, не всегда функция [ru ] дает эффективное решение из-за потери времени на загрузку внешней программы и считывание файла RU.TXT. Особенно это касается случаев ее вызова из файлов-коэффициентов. Для преодоления этого затруднения в языке форм "Финансов без проблем" имеется функция [DLLcall ], позволяющая вызывать программы из DLL-библиотеки. Она имеет следующий формат:

[DLLcall library, index, data] 
где  library - наименование библиотеки DLL, 
     index - номеp вызываемой пpоцедуpы в библиотеке, 
     data - стpока данных, пеpедаваемая в пpоцедуpу 
Вызываемая процедура должна поместить результат своей работы в передаваемую строку и DLLcall вернет ее в качестве своего значения.
С точки зрения вызываемой процедуры передаваемый параметр data является указателем на строку, завершающуюся нулевым байтом. Процедура должна вернуть результат в ту же строку, рассматривая ее как буфер из 128 байт. Возвращаемый результат также должен завершаться нулевым байтом. При этом значение строки data не изменяется, поскольку вызываемой процедуре передается адрес промежуточного буфера с копией значения строки data.
Рассмотрим пример, демонстрирующий возможности использования функции DLLcall для адаптации "Финансов без проблем" к национальным языкам.
Ниже приводятся исходные тексты PASCAL-программ библиотеки MOLDOVA, содержащей две экспортируемые процедуры. Первая осуществляет перевод числа в словесное представление, а вторая выдает название месяца по его номеру на молдавском языке:

{$A+,B-,D+,E+,F-,G-,I-,L+,N-,O-,P-,Q-,R-,S+,T-,V+,X+}
{$M 16384,0,0}

library MOLDOVA;
uses strings;


type Sex = (male,female);
Var  Number : longint;
     ER     : integer;
     Frase  : string;
     F      : text;
     Level  : integer;


function StrNumS(R :longint; f :Sex) :string;
var N,L :longint; s :string;

const D0 :array [0..19] of string[20]
  = ('','unu','doi','trei','patru','cinci','sase','sapte','opt',
     'noua','zece','unsprezece','doisprezece','treisprezece',
     'paisprezece','cincisprezece','sasesprezece','saptesprezece',
     'optsprezece','nouasprezece');

      D1 :array [1..9] of string[20]
  = ('zece','douazeci','treizeci','patruzeci','cincizeci','saizeci',
     'saptezeci','optzeci','nouazeci');

      D2 :array [1..9] of string[20]
  = ('o suta','doua sute','trei sute','patru sute','cinci sute',
     'sase sute','sapte sute','opt sute','noua sute');

begin

inc(Level,1);

if R < 0            then StrNumS:='Minus '+ StrNumS(-R,f)

else if R = 0       then StrNumS:=''

else if R = 1       then
                      if Level=1 then
                        StrNumS:='un '
                      else
                        StrNumS:='unu '


else if R <= 19     then begin
                         StrNumS:=D0[R]+' ';
                         if f=female
                         then if      R = 1 then StrNumS:='о'
                              else if R = 2 then StrNumS:='doua ';
                         end

else if R <=  99    then begin
                           if (R mod 10)<>0 then
                             StrNumS:=D1[R div 10] + ' si ' + StrNumS(R mod 10,f)
                           else
                             StrNumS:=D1[R div 10] + ' ' + StrNumS(R mod 10,f)
                         end

else if R <= 999    then StrNumS:=D2[R div 100] + ' ' + StrNumS(R mod 100,f)

else if R <= 1999 then begin
                         StrNumS:='o mie ' + StrNumS(R mod 1000,f);
                         end

else if R <= 2999 then begin
                         StrNumS:='doua mii ' + StrNumS(R mod 1000,f);
                         end

else if R <= 99999 then begin
                         L:=R div 1000;
                         N:=L mod 10;
                         s:='mii ';
                         if N = 1 then s:='mie ';
                         StrNumS:=StrNumS(L,female) + s +
                                  StrNumS(R mod 1000,f);
                         end

else if R <= 999999 then begin
                         L:=R div 1000;
                         N:=L mod 10;
                         s:='de mii ';
                         StrNumS:=StrNumS(L,female) + s +
                                  StrNumS(R mod 1000,f);
                         end

else if R <= 1999999
                    then begin
                         StrNumS:= 'un milion ' +
                                  StrNumS(R mod 1000000,f);
                         end

else if R <= 2999999
                    then begin
                         StrNumS:= 'doua milioane ' +
                                  StrNumS(R mod 1000000,f);
                         end

else if R <= 999999999
                    then begin
                         L:=R div 1000000;
                         N:=L mod 10;
                         s:='milioane ';
                         StrNumS:=StrNumS(L,male) + s +
                                  StrNumS(R mod 1000000,f);
                         end

else if R <= 1999999999
                   then StrNumS:='un miliard ' +
                        StrNumS(R mod 1000000000,f)

else StrNumS:='****** N > 1,999,999,999 ******';

end;


procedure P(s :pChar); export;
var i,n :longint; c :integer;
    q,t :string;
begin
q:=StrPas(s);
t:='';
for i:=1 to length(q)
do if q[i] <> ','
   then t:=t+q[i];
Val(t,n,c);
if c <> 0
then q:='ERROR'
else q:=StrNumS(n, male);
q[1]:=upcase(q[1]);
StrPcopy(s, q);
end;

const M :array [1..12] of string[20] =
      ('ianuarie  ','februarie  ','martie  ','aprelie  ','mai  ','iunie  ','iulie  ',
      'august  ','septembrie  ','oktombrie  ','noembrie  ','decembrie  ');


procedure Q(s :pChar); export;
var q :string; n,c :integer;
begin
q:=StrPas(s);
Val(q,n,c);
if c <> 0
then q:='ERROR 1'
else if (n < 0) or (n > 12)
     then q:='ERROR 2'
     else q:=M[n];
StrPcopy(s,q);
end;


exports P index 1;
exports Q index 2;

begin
end
После компоновки библиотеки moldova.dll и размещения его в директории файлов данных бухгалтерии, можно вызывать содержащиеся в нем процедуры из файлов-форм. Приводимые процедуры можно использовать при подготовке первичных документов на молдавском языке вместо встроенных в "Финансы без проблем" "русскоязычных" функций [wn ] и [dt ]. Мы, однако, делать этого не будем и проверим работоспособность функции [DLLcall ], вызвав ее прямо из калькулятора:

Так по молдавски пишется 2458051. А вот так пишется слово 'сентябрь':

"Финансы без проблем" для Windows

Начиная с февраля 1995 года пользователям поставляется версия программы "Финансы без проблем" для Windows. Она полностью совместима с версией 4000 для DOS. Здесь нет никаких отличий ни в концепции, ни в структуре файлов, ни в базовом наборе функций языка форм. Все рассмотренные до сих пор в книге примеры одинаково пригодны как для DOS, так и для Windows версий. Именно поэтому акцент делался на использовании DOS версии программы, как существенно более распространенной.
В то же время, в версии для Windows поддерживаются основные дополнительные возможности, предоставляемые этой операционной системой. Основные отличия состоят в наличии многооконного интерфейса, а также возможности организовать фоновые вычисления и взаимодействие с другими Windows-приложениями на основе динамического обмена данными (DDE).
Прежде, чем перейти к рассмотрению этих новых возможностей, разберем процесс инсталляции Windows-версии программы. Windows-версия "Финансов без проблем" предъявляет более жесткие требования к аппаратному обеспечению, чем версия 4000 для DOS. В качестве минимальных требований к аппаратуре разработчиками указывается наличие процессора 286 с обязательным сопроцессором 287, 2Мб памяти и видеоадаптера VGA. При написании книги использовался компьютер 386DX без сопроцессора с 4Мб памяти и монитором 14". В данной конфигурации DOS версия работает превосходно, а версия для Windows приемлемо. И если расчеты производятся достаточно быстро, то про скорость обновления экрана этого сказать нельзя. Впрочем, любые Windows-приложения при такой конфигурации работают неторопливо. Существенно приятнее работать с программой при наличии процессора 486DX. При использовании программы в многооконном режиме особенно важно наличие "большого" монитора. Здесь хорошим вариантом является монитор 17" при разрешении 1024х768. В этом случае окна действительно являются окнами с хорошей обозреваемостью и возможности программы можно ощутить в полной мере.
Установка программы очень проста. После запуска Windows необходимо стартовать с дискеты файл FINSETUP.EXE. На экране появляется "полосатый" фон и окно "Тест системного шрифта" установщика программы. Для работы необходимо иметь, как минимум, два кириллических шрифта: системный шрифт (System font) и системный шрифт с одинаковой шириной всех букв (System fixed font). Для проверки наличия этих шрифтов в окне выводится тест по которому можно визуально определить их подключение к Windows.
Если какой-либо шрифт отсутствует, то необходимо нажать кнопку "Нет, нужна кириллица". В результате этого в каталог Windows будут добавлены шрифты FINWSYS.FON и FINWFIX.FON, а в файл SYSTEM.INI внесены необходимые изменения. При этом, предыдущая копия SYSTEM.INI будет сохранена в файле SYSTEM.OLD. После этого будет произведен рестарт Windows и повторная загрузка теста. После подключения шрифтов с кириллицей для продолжения процесса инсталляции нажмите клавишу "Да, строки в рамках видны нормально".
На экране появится основное окно установщика программы. Проведя мышью по пунктам диалога этого окна, ознакомьтесь с соответствующими им "баллонами" помощи и установите нужные значения. Далее, следуя указаниям установщика введите полученный от "Хакерс Дизайн" ключ привязки программы, аналогично установке DOS-версии.
При установке программы можно подключить к ней свою базу данных. Для этого надо поставить "крест" около фразы "Подключить свою базу данных", указать путь к директории ее размещения и наименование. В процессе установки на жесткий диск будут переписаны файлы оболочки программы (FINW.EXE, FINW.HLP), файл ключа привязки (FINW.COD), а также файлы установщика (FINWDDE.EXE), DDE-сервера (FINWDDE.EXE) и файл с информацией о программе (FINW.TXT).
При установке будут созданы (если отсутствовали) каталоги C:\FINW\EXAMPLE, C:\FINW\EXCHANGE, C:\FINW\FILM, C:\FINW\UTILS. В каталог C:\FINW\EXAMPLE будут скопированы файлы, состав которых полностью аналогичен тому, что применительно к DOS-версии мы называли комплектом (вариантом) стандартной поставки. Единственным исключением здесь являются файлы в формате Excel (DIRECTOR.XLS) и Lotus-123 (YEAR.WK4), содержащие примеры организации динамического обмена данными "Финансов без проблем" с другими Windows-приложениями. Содержимое каталогов C:\FINW\EXCHANGE и C:\FINW\FILM полностью идентично тому, что при установке DOS-версии мы скопировали в директории \FBP\STANDART\EXCHANGE и \FBP\STANDART\ROLIK. Здесь находятся примеры правил использования программы в обменном пункте валюты и демонстрационные ролики, посвященные некоторым вопросам использования программы, соответственно. В директорию C:\FINW\UTILS при инсталляции копируются утилита SUF.EXE, предназначенная для слияния информации нескольких рабочих мест и консолидации балансов нескольких предприятий, а также файлы преобразователей формата данных первой, второй и третьей версий в четвертую. Помимо этого, сюда будут переписаны программные файлы RTM.EXE, DPMI16BI.OVL, DPMINST.EXE, обеспечивающие работу утилиты SUF в защищенном режиме процессора.
В ходе инсталляции создается группа "Финансы без проблем". В ней будут присутствовать иконки "Help", "ReadMe", "Fin Setup", "DDE-server", "Example", "Exchange", "Film", назначение которых соответствует информации, размещенной в указанных директориях. Помимо этого, если в основном окне установщика Вы потребовали подключения своей базы данных, то в группе "Финансы без проблем" будет присутствовать пиктограмма с ее названием. Также, как и при использовании DOS-версии имеется возможность обслуживания с помощью одной копии программы нескольких бухгалтерий. Если соответствующие им директории с файлами данных и форм уже существуют, достаточно повторно вызвать установщик уже не с дискеты, а из окна группы "Финансы без проблем". Теперь в его главном окне будет доступна только возможность подключения новой базы данных. Действуя аналогично основному процессу инсталляции, укажите путь и название базы данных и установщик разместит ее пиктограмму в окне группы. Количество подключаемых таким образом баз данных ничем не ограничено.
Рассмотрим теперь основные отличия использования Windows-версии программы.
Как уже говорилось, основным отличием является возможность размещения на экране нескольких окон программы одновременно и организации фоновых вычислений. Так, например, можно одновременно открыть на экране окна операций и оборотного баланса.
Запустите "Финансы без проблем" и максимизируйте окно программы. Откройте окно реестра операций, а потом окно оборотного баланса. Обратите внимание, что в меню появились новые пункты Window и Edit. В меню Window выберите пункт "Tile по вертикали". Теперь видны одновременно оба окна.

Теперь попробуйте вводить операции. После завершения ввода операции окно "Обороты счетов" на какое-то мгновение окажется перечеркнутым. А потом в нем изменятся строки, соответствующие счетам, сальдо и обороты которых изменились. Таким образом, если окно "Обороты счетов" открыто, то при вводе новых операций или редактировании существующих, осуществляются фоновые вычисления, обновляющие сальдо и обороты счетов. При этом можно спокойно продолжать работу - вычисления каждый раз будут "отбрасываться" назад, но процессорное время будет использоваться эффективно: в тот момент, пока Вы ищете на клавиатуре нужную клавишу, программа трудится на Ваше благо. Когда в ее распоряжении окажется достаточно времени, чтобы завершить вычисления, перечеркивания с окна "Обороты" счетов изчезнут и его содержимое будет обновлено. В Windows-версии несколько иначе реализованы функции синтаксического контроля правил. Так, при удалении или изменении ветви дерева, зарегистрированные на ее основе операции уже не "мигают", но в них зачеркнутыми оказываются фразы, соответствующие отсутствующим ветвям:

Коды счетов и субсчетов, отсутствующих в плане счетов, в дереве операций также оказываются зачеркнутыми:

Также, как и при выполнении фоновых вычислений, при наличии неверных данных окно оборотного баланса перечеркивается.
По сравнению с DOS-версией упростился процесс поиска ошибок. При их наличии в нижней строке окна программы всегда присутствует кнопка с надписью "Где ошибка?" и рядом с ней пояснение о типе ошибки. Достаточно щелкнуть мышью по этой кнопке или нажать Alt/E и "Финансы без проблем" прямиком отправят Вас к месту ее возникновения. Иногда, повторные нажатия клавиши "Где ошибка ?" активируют еще одно окно, чтобы дать дополнительную информацию. Например, в какой-либо операции возникло деление на ноль. Тогда первое нажатие на кнопку выведет Вас на соответствующий лист дерева операций, а повторное укажет на операцию, в которой эта ситуация возникла.
После исправления всех ошибок кнопка исчезает. Теперь оборотный баланс может быть построен и перечеркивание с окна "Обороты счетов" снимается.
Программа имеет особенности при работе с принтерами. Считается, что Windows сама должна выполнять всю работу по печати. Однако, часто оказывается, что из-за беспорядка с наборами шрифтов и опциями драйверов возникают серьезные проблемы. "Финансы без проблем" решают эту проблему радикально. Здесь, детали изображения предназначенного для вывода на принтер подготавливаются в памяти компьютера в виде графического образа и, далее, преобразуются для конкретного принтера с подходящим для него коэфициентом поточечного расширения. Такой метод позволяет печатать русский текст на любых принтерах, способных выводить графику, имея только системные шрифты экрана с кириллицей. При этом получается удовлетворительное качество печати, в том числе на цветных принтерах. Имеются отличия и при выполнении форм. В DOS-версии файлы-форм, "вступающие" в диалог с пользователем при каждом "вопросе" останавливаются, ожидая ответа. В Windows-версии, когда одновременно может быть открыто несколько окон, такой подход неприемлем, поскольку окно формы должно динамически обновляться при внесении изменений в данные. В этом случае, при каждом обновлении исходных данных окно формы было бы вынуждено для рестарта расчетов предлагать ответить на "интересующие" форму вопросы. Это было бы слишком назойливо. Поэтому, разработчики предусмотрели следующий порядок работы. При первом запуске формы в ее верхней части создается раздел вопросов:

После ответа пользователя на все вопросы и нажатия клавиши Все выполняется расчет показателей формы и нижняя часть окна заполняется результатом ее выполнения. При изменении первичных данных форма больше не будет ожидать новых ответов на "интересующие" ее вопросы, а будет выполнять пересчет на основе установленных ранее значений. Ввиду этого, внесены небольшие ограничения в язык форм. Теперь тексты вопросов и значения ответов по умолчанию функций IR, IS, IA, IY должны быть константами, поскольку информация о них должна быть известна программе для возможности спланировать размещение элементов экранной формы.
Другим изменением, касающемся функций, является то, что игнорируется третий аргумент функции [ru]. В качестве запускаемой программы может фигурировать PIF-файл, в котором и указываются все необходимые параметры.
Некоторые изменения коснулись и состава опций программы. В Windows-версии отсутствуют (навсегда включены) опции "Экономить память", "Быстрые формы", "Синтаксис подсвечен", "Сначала все ошибки". Появилась опция "Шрифт". По умолчанию используется шрифт System. В то же время, при работе с "маленьким" монитором иногда бывает удобно выбрать другой шрифт для более компактного представления данных на экране.
Для независимости от русификаторов Windows введена опция "Русский внешний/свой ЙЦУКЕНГ/свой ЯВЕРТЫУ". Включив "Русский свой" даже при отсутствии русификаторов имеется возможность вводить с клавиатуры символы кириллицы, переключаясь с русского на латинский клавишей Alt-R.
Для управления печатью используются опции "Принтер: черно-белый/цветной" и "Левое поле бумаги". Включение первой опции в положение "Цветной" позволяет печатать в цвете или с использованием градаций серого цвета. Однако, в этом случае, вывод на печать требует больше времени и места на диске. Опция "Левое поле печати" не зависит от типа принтера и позволяет установить отступ в 0,1 или 2 см. "Финансы без проблем" для Windows полностью поддерживают механизм динамического обмена данными (DDE) между приложениями Windows. При этом, программа и сама может быть инициатором DDE-"общения", так и выступать DDE-сервером для других приложений.
Рассмотрим использование "Финансов без проблем" как DDE-сервера. Для этого используется специальная утилита FINWDDE.EXE, входящая в комплект поставки программы. Ей соответствует своя пиктограмма "DDE-сервер".
Использование DDE-сервера разберем на примере вычисления "удаленной" формулы в Microsoft Excel. Запустите "Финансы без проблем". Далее, переключитесь на диспетчер программ загрузите Excel. В состав комплекта поставки "Финансов без проблем" входит файл DIRECTOR.XLS. Он размещается в директории \FINW\EXAMPLE. Откройте его. При загрузке данной таблицы Excel задаст вопрос: "Данный документ содержит связи. Переустановить связи ?". Ответьте "Да". Далее, последует вопрос "Нет доступа к удаленным данным. Запустить приложение 'FINWDDE.EXE'?" Также ответьте "Да". Excel запустит FINWDDE.EXE, которая установит связь между Excel и "Финансами без проблем". Взору откроется следующая картина:

Поставьте курсор в клетку D1. Там содержится формула:

=FINWDDE|'C:\FINW\EXAMPLE'!'[ea 50]+[ea 51]+[ea 52]'
Вычисляя эту формулу Excel обращается к FINWDDE, а та, в свою очередь, к "Финансам без проблем" с "просьбой" вычислить формулу [ea 50]+[ea 51]+[ea 52]. Если "Финансы без проблем" могут вычислить переданную формулу, результат расчета отобразится в соответствующей клетке. Если в формуле будет обнаружена ошибка, то в клетке таблицы отобразится сообщение о содержании ошибки. Попробуем, например, изменить формулу следующим образом:
=FINWDDE|'C:\FINW\EXAMPLE'!'[ea 50]+[ea 51+[ea 52]'
После завершения редактирования в клетке D1 появится сообщение :
"#ERR: Счет 51+[ea отсутствует"
Соответственно этому изменится и диаграмма. Измените неверную запись. После завершения редактирования все вернулось на свои места. Теперь, поскольку связь установлена, выполнение новых операций в "Финансах без проблем", затрагивающих счета, сальдо которых используется для расчета показателей таблицы, будет вызывать автоматическое обновление данных в клетках и на диаграмме. Зарегистрируйте, например, операции уменьшающие сальдо денежных счетов и запасы товара. Можно видеть, как "прыгают" столбики диаграммы и изменяются значения в клетках таблицы. При этом, если еще идут фоновые вычисления, то в клетках отображаются значения "#BUSY".

"Финансы без проблем" и технология "клиент-сервер"

В последнее время стало чрезвычайно популярным использование локальных вычислительных сетей. Многие поставщики "железа" и программного обеспечения предлагают на рынке соответствующую продукцию. В развитии компьютерных технологий происходит, как бы виток спирали: переход к сетевым технологиям в середине 90х годов происходит так же бурно, как отказ от централизованной обработки данных в пользу персональных ЭВМ в начале 80х. Создается впечатление, что использование технологии "клиент-сервер" становится чуть ли не одним из критериев респектабельности фирмы. Лозунг "А ты записался добровольцем?" сменился лозунгом "А в твоем офисе используется технология клиент-сервер?".
Не отстают от всеобщего увлечения и разработчики систем автоматизации бухгалтерского учета. И если до середины 1993 года гонка шла в направлении автоматизации все большего и большего числа учетных процедур, то теперь основными критериями стали "SQL-ность" и "клиент-серверность".
А что же "Хакерс Дизайн"? Собирается ли фирма предложить своим пользователям сетевую версию?
Да, собирается. К моменту окончания книги бета-тестирование проходила сетевая версия программы "Финансы без проблем", предназначенная для использования в локальной вычислительной сети на основе использования технологии "клиент-сервер". При этом "Хакерс Дизайн" предлагает такую реализацию технологии сетевой обработки данных, которая в максимальной степени ориентирована на специфику решения именно бухгалтерских задач. Практически, это означает, что реализован специализированный сервер "Финансов без проблем", способный работать в любых сетевых средах.
На сервере размещаются план счетов, дерево видов операций и их реестры. Практически вся обработка данных выполняется сервером. Это, по мнению разработчиков, позволяет использовать в сети слабые рабочие станции, которые, фактически, являются просто терминалами. При этом декларируется возможность использования в качестве станций любых типов ЭВМ.
Как бы то ни было, но использование языка SQL в "общем" виде оставляет систему обработки данных на уровне низкоуровневых транзакций. Применительно к системе автоматизации бухгалтерского учета это означает, что отработка обращений к массиву проводок на сервере так или иначе связана с целым числом транзакций по отношению к одной проводке. Таким образом, контировка одного документа так или иначе требует более одной транзакции. Чем больше проводок, тем более замедленной оказывается реакция системы.
Учитывая то, что в "Финансах без проблем" минимальной единицей информации и, следовательно, единицей обмена с сервером, является операция, в общем случае определяющая не одну, а множество проводок, то здесь на одну транзакцию приходится больший объем данных, а сама база данных при разумном построении дерева операций оказывается более компактной, чем в системах построенных "от проводки". Следовательно, чисто теоретически (поскольку подобного рода тестирования автор не проводил) от такого построения системы обработки информации можно ожидать большей производительности.
В сетевой версии программы реализована многоступенчатая система защиты данных от несанкционированного вмешательства. Так, в частности, рядовым пользователям запрещено редактировать дерево видов операций, удалять счета и субсчета, имеется возможность ограничения доступа к ветвям дерева и редактирования данных прошлых периодов, вплоть до ограничения доступа текущим днем. Что из этого получится? Посмотрим. Ждать осталось недолго - выход сетевой версии планируется на начало осени.