скачать рефераты
  RSS    

Меню

Быстрый поиск

скачать рефераты

скачать рефератыРеферат: Российский рынок экономических информационных систем. "ХАКЕРС ДИЗАЙН": сетевая система "Финансы без проблем"

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

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

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

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

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

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


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

Настройка программы на выполнение разнообразных расчетов возможна не только на основе использования встроенных средств программирования. Программа имеет достаточно развитые возможности "общения" с внешними приложениями оформленными в виде *.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');

Страницы: 1, 2, 3, 4, 5, 6


Новости

Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

  скачать рефераты              скачать рефераты

Новости

скачать рефераты

© 2010.