Автоматизація аналізу фінансового стану підприємства

Суть платоспроможності і ліквідності балансу підприємства. Класифікація активів за ознакою ліквідності і пасивів за ознакою терміновості погашення. Аналіз стану автоматизації в галузі оцінки фінансового стану підприємства. Програмне забезпечення проекту.

Рубрика Финансы, деньги и налоги
Вид дипломная работа
Язык украинский
Дата добавления 18.02.2011
Размер файла 2,6 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Робота програмного додатку передбачається на IBM-сумісному комп'ютері. Додаток при своїй роботі передбачає використання встановленого прикладного програмного забезпечення Microsoft Office 2003. Вказане середовище передбачає використання для забезпечення функціонування операційної системи сімейства Microsoft Windows. Зокрема, для версії Microsoft Office 2003 необхідна наявність платформи Microsoft Windows XP і старше. Виходячи з наведених міркувань щодо необхідної операційної системи, буде доцільним для розгортування комплексу буде використання персонального комп'ютера з наступними мінімальними характеристиками:

а) процесор Intel Pentium III 1,2 Ghz;

б) 256 Мб ОЗУ;

в) 10 Гб НЖМД;

г) відеоадаптер SVGA 16 Мб 1024х768;

д) клавіатура, миша.

Для реалізації можливостей автоматизованого імпорту вхідної інформації необхідна наявність встановленого комплексу 1С:Підприємство. Можливий імпорт звітності, згенерованої на іншому ПК, хоча це призведе до певних незручностей, пов'язаних з процесом перенесення даних.

3. ПРАКТИЧНА РЕАЛІЗАЦІЯ АВТОМАТИЗОВАНОГО АНАЛІЗУ ПЛАТОСПРОМОЖНОСТІ І ЛІКВІДНОСТІ ПІДПРИЄМСТВА

3.1 Склад та особливості реалізації алгоритмічного забезпечення

Алгоритмічне забезпечення є основою написання програмного забезпечення, тому всі передбачені в проекті функції будуть реалізовані у відповідності з алгоритмічними схемами їх роботи[2].

Одним із ключових компонентів системи є можливість імпорту вхідних даних з файлів формату MS Excel 2003. Наведена функція буде реалізована для кожного з бланків звітності окремо. Нижче наведено блок-схему алгоритму імпорту даних балансу (рисунок 3.1) та блок-схему алгоритму імпорту даних звіту про фінансові результати (рисунок 3.2). Реалізація імпорту вхідних даних із 1С:Підприємство буде реалізована шляхом інтеграції в останню файлу-компоненту, що розширить можливості експорту згенерованої звітності. Нас цікавитиме експортування її у файли формату MS Excel 2003. Дана функція позбавить користувача необхідності ручного введення економічної інформації у файли вхідних даних, чим буде значно раціонально використовуватись час і виключить ймовірність помилок при введенні, що дуже важливо при обрахунку фінансових показників діяльності підприємства.

Рисунок 3.1 - Процедура імпортування даних балансу

Рисунок 3.1 - Процедура імпортування даних звіту про фінансові результати

3.2 Структура та особливості реалізації програмного забезпечення

При розробці автоматизованого рішення задачі аналізу фінансового стану підприємства було реалізовано програмний засіб на основі модульного принципу інтегрування компонентів. Це було викликано необхідністю забезпечити виконання черговості алгоритмів обробки інформації. Для написання програмного засобу було обрано середовище Borland Delphi 7 виходячи з його розповсюдженості, наявних можливостей для реалізації функціонального забезпечення проекту та ступеня освоєності. При виборі сховища довідкової інформації зупинимося на Microsoft Access 2003, адже в базі саме такого формату буде зберігатися все методичне забезпечення проекту. Це було зроблено виходячи з наступних міркувань:

а) програмний засіб передбачає лише локальне використання, тому відпадає необхідність у «клієнт-серверній» архітектурі доступу до даних;

б) з базою даних не передбачається інтенсивний обмін інформацією, отож швидкодія не має значення;

в) програмний засіб матиме змогу підключатися до бази даних використовуючи стандартний драйвер ADO[1], який присутній в сучасних версіях систем Microsoft Windows, тому навіть наявність самого MS Access не є необхідною;

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

Для забезпечення базової функціональності проекту реляційна база даних була створена в середовищі СУБД MS Access[6] шляхом створення і заповнення таблиць «Formulas», «Groups», «AdditionalIndexes», а також встановленням зв'язків між ними типу «один-до-багатьох». Надалі користувач матиме змогу працювати з наявним переліком заздалегідь введених коефіцієнтів в базі, а також при необхідності в процесі роботи вводити власні та зберігати їх для подальшого використання. Також в базі даних зберігатимуться додаткові дані, які необхідні для роботи користувача, але відсутні у Формі №1 та Формі №2 звітності.

При написанні програмного засобу було використано частину компонентів, які є вільно доступними (програмна інтерпретація форм «Балонс» та «Звіт про фінансові результати» та класифікатор). Наведені компоненти були частково модифіковані та інтегровані до складу програмного комплексу[13].

Для забезпечення можливості імпорту вхідних даних та експорту результатів роботи було реалізовано спеціальні процедури роботи з зовнішнім програмним забезпеченням шляхом ініціації діалогу відкриття даних з файлу. Аналогічним чином реалізовано експорт результатів (розаховані коефіцієнти, класифікація активів та пасивів за ступенем ліквідності у кожному з періодів) у файли формату MS Excel.

Результатом проведення практичної реалізації стало забезпечення таких основних можливостей проекту:

а) імпорт вхідної інформації із файлів формату MS Excel;

б) автоматизоване зчитування вхідної економічної інформації з програмного комплексу 1С:Підприємство;

в) можливість вибіркового розрахунку коефіцієнтів;

г) редактор формул для введення нових коефіцієнтів чи редагування існуючих;

д) класифікація активів та пасивів відповідно до їх ліквідності;

е) можливість завдання декількох періодів для розрахунку;

ж) експорт результатів в файли формату MS Excel;

з) максимально спрощений інтерфейс користувача;

и) зберігання формул для обрахунку коефіцієнтів у реляційній базі даних MS Access.

Для реалізації вибіркового обрахунку показників реалізовано перевірку кожного елементу обрахунку на вказаність його користувачем у діалоговому вікні. Вибірковий обрахунок дозволяє оптимізувати використання програмного засобу шляхом фільтрування процесу обчислень та завданням необхідного складу вихідних даних.

Реалізація можливості вводу нових формул здійснена шляхом підключення до програмного засобу бази даних формату Microsoft Access 2003. Дана взаємодія здійснюється через механізм ADO[6] з використанням мови структурованих запитів SQL. Після введення формула зберігається і може бути використана неодноразово у наступних сеансах роботи (рисунок 3.3).

Рисунок 3.3 - Вигляд заповненої таблиці з формулами

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

Автоматична класифікація активів та пасивів за ступенем ліквідності відбувається за допомогою правил сортування[9], що вказані в нормативному забезпеченні фінансового аналізу і є загальноприйнятими.

3.3 Інтерфейс користувача та інструкція по використанню

Створений програмний додаток оснований на графічному віконному інтерфейсі з використанням вікон діалогу та вкладок. Вікна імпорту вхідних даних та експорту результатів використовують стандартні діалогові інтерфейси Windows роботи з файлами.

Блок введення даних представлений електронними формами «Баланс» та «Звіт про фінансові результати» з можливістю ручного введення даних за вказану кількість періодів, а також можливістю експорту вхідних даних із зовнішнього файлу формату MS Excel. Робота з редактором формул забезпечується з використанням спеціального вікна з інтегрованою довідковою системою. Вибір необхідних для розрахунку показників відбувається в результаті виклику форми для обрахунків, де користувач може відмітити необхідне за допомогою CheckBox. Підсистема виводу результатів обчислень представлена двома вкладками, які містять обраховані коефіцієнти та класифіковані активи й пасиви за ступенем ліквідності. В інтерфейсі доступ до даної функції реалізовано у вигляді контекстного меню по області результатів кожного окремого виду.

3.4 Проведення розрахунків на контрольному прикладі

Для отримання результату користувач повинен виконати описану нижче послідовність дій.

а) введення вихідних даних

Дані вводяться одним із двох способів:

1) вручну за допомогою клавіатури (рисунок 3.4);

2) імпортуванням даних з файлів спеціальної структури формату MS Excel (рисунок 3.5)

Рисунок 3.4 - Ручне введення даних

Рисунок 3.5 - Імпорт даних із зовнішнього додатку

Рисунок 3.6 - Діалог відкриття файлу

вказати кількість періодів, за які будуть проводитися обрахунки (рисунок 3.7)

Рисунок 3.7 - Вказання кількості періодів для обрахунку

б) при необхідності додати нові чи змінити існуючі коефіцієнти (рисунок 3.8 - 3.9), інструкція по введенню коефіцієнтів додається.

Рисунок 3.8 - Виклик редактора формул

Рисунок 3.9 - Вікно редактора формул

в) натиснути кнопку «Обрахувати» і вибрати у вікні перелік коефіцієнтів, розрахунок яких необхідно провести (рисунок 3.10).

Рисунок 3.10 - Проведення обрахунків

Після цього програма перейде в режим перегляду результатів, в якому на першій вкладці будуть розміщуватись коефіцієнти (рисунок 3.11).

Рисунок 3.11 - Відображення розрахованих коефіцієнтів

На другій вкладці буде виведено класифікацію активів і пасивів за рівнем ліквідності на кожен з періодів окремо (рисунок 3.12)

Рисунок 3.12 - Відображення класифікації активів та пасивів за ступенем ліквідності

Для забезпечення подальшого використання отриманих розрахунків існує механізм експорту результатів роботи програми у файли формату MS Excel. В інтерфейсі доступ до даної функції реалізовується у вигляді контекстного меню по області результатів кожного окремого виду результату і вибору пункту «Зберегти у файл Excel».

3.5 Оцінка очікуваних ефектів від впровадження системи

Ефект від впровадження системи створюється завдяки наявності на будь-якому підприємстві втрат, невикористаних можливостей і недостатньої технічної оснащеності управлінського апарату. Ефект виявляється в сфері керування й у сфері виробництва, на самому підприємстві, що автоматизується.

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

Ефективність автоматизованої системи визначають зіставленням результатів від функціонування системи і витрат усіх видів ресурсів, необхідних для її створення і розвитку. При розробці системи ставився акцент на її простоту для кінцевого користувача та швидке освоєння, тому витрати, пов'язані з освоєнням програмного комплексу зводитимуться до мінімуму. А це, як відомо, не призведе до значної призупинки ведення бізнес-процесів на підприємстві, де час є вирішальним фактором. Інтеграція системи з встановленим комплексом 1С:Підприємство проводиться простим копіюванням одного файлу-компоненту в директорію останнього, після чого можливе використання автоматично згенерованої звітності, що також зменшує потреби часу на впровадження і підвищує економічну ефективність проекту. Використання для аналізу фінансового стану підприємства автоматично генерованих файлів зі звітністю забезпечує уникнення процесу ручного введення інформації, даючи величезну економію часу в процесі безпосередньої експлуатації, яку вже потім можна виміряти виходячи із ціни години людської праці відповідного працівника. Для своєї коректної роботи програмний засіб не потребує обов'язкової наявності специфічного програмного забезпечення окрім офісного пакету MS Office, який часто присутній на автоматизованих робочих місцях.

Програма є ефективним засобом в інструментарії фінансиста чи аналітика і дає змогу провести аналіз фінансового стану підприємства на основі даних балансу та звіту про фінансові результати.

ВИСНОВКИ

В даній роботі було розглянуто набір найбільш відомого програмного забезпечення для фінансового аналізу. Проте недоліком більшості програм є їх обмеженість у використанні тільки бухгалтерської звітності підприємства, а також вимагає необхідності встановлення дорогого спеціалізованого програмного забезпечення. Це негативно впливає на глибину аналітичних досліджень і аналітичні можливості розглянутих програмних продуктів, значно знижує обґрунтованість висновків за наслідками такого дослідження. Тому програми повинні бути гнучкими щодо внесення доповнень, мати високий рівень сегментації, однаково розвинені засоби настройки, зручні функції імпорту даних, а також настроювання на потреби користувача.

В процесі вирішення задачі автоматизації аналізу фінансового стану підприємства було розроблено зручний у використанні програмний продукт, що може бути ефективно застосований фінансистом чи фінансовим аналітиком. Розроблений інструментарій дозволяє отримати оброблену інформацію для подальшого прийняття рішень. Результати роботи програми мають використовуватися для забезпечення подальших процесів аналізу, в якому важко виключити людський фактор, адже специфіка фінансового аналізу полягає в тому, що його нормативні значення є індивідуальними в кожному конкретному випадку, що вимагає залучення знань експерта. Однак це дозволяє позбавитися рутинних розрахунків і забезпечити набагато більшу ступінь обробленості інформації. Використання розробленої системи може бути ефективним в банківській діяльності при визначенні рейтингу позичальника (юридичної особи). Для користувача буде зручною можливість паралельної оцінки декількох підприємств за різними наборами показників із подальшим їх порівнянням. Слід відмітити, що програмний засіб має можливість імпортувати вхідні дані із програм, що можуть формувати звітність у зовнішні файли формату MS Excel. Важливою особливістю є реалізована функція автоматизованого імпорту вхідної інформації із програмного комплексу 1С:Підприємство, що виключає необхідність ручного введення, а також позбавляє від помилок введення даних. Щодо можливостей, які ще не реалізовані в проекті, слід віднести врахування фактору інфляції при розрахунку показників на декілька періодів, а також введення набору типових нормативних оцінок коефіцієнтів.

ПЕРЕЛІК ПОСИЛАНЬ

1. SQL в примерах и задачах: Учебное пособие/ И.Ф. Астахова, А.П. Толстобров, В.М. Мельников. - Мн.: Новое знание, 2002.

2. Баженова И.Ю. Delphi7. Самоучитель программиста. - М.:КУДИЦ-ОБРАЗ, 2003. - 448с.

3. Глушаков С.В., Ломотько Д.В. Базы данных. - Х. - М.: Фолио; АСТ, 2002.

4. І.Ф. Рогач, М. А. Сендзюк, В.А.Антонюк. Інформаційні системи в фінансово-кредитних установах: Навч. посібник - К.: КНЕУ, 2001.

5. Інформаційні системи в фінансово-кредитних установах: Навч.- метод. посібник для самост. вив. дисц. / І.Ф. Рогач, М. А. Сендзюк, В.А.Антонюк, О.О. Денісова. - К.: КНЕУ, 2001.

6. Когаловский М.Р. Энциклопедия технологий баз данных.- М.: Финансы и статистика, 2002.- 800 c.- ISBN 5-279-02276-4.

7. Королев Ю.А. Системы для экономического анализа // Бухгалтер и компьютер. - 2003. - № 10 (49) - с. 35-43

8. Культин Н.Б. Delphi в задачах и примерах. - СПб.: БХВ - Петербург, 2005. - 288 с.

9. Культин Н.Б. Основы программирования в Delphi7. - СПб.: БХВ - Петербург, 2003. - 608 с.

10. Куперштейн В. И. Современные информационные технологии в делопроизводстве и управлении. - СПб.: БХВ - Санкт-Петербург, 1999. - 256 с.

11. Прокопенко И.Ф. Компьютеризация экономического анализа (теорія, практика). - К.: ЮНИТИ, 2001. - 412 с.

12. Соколова Г.Н. Информационные технологии экономического анализа. М.: ЛТД, 2002. - 560 с.

13. Тейксейра. С., Пачеко К. Delphi 5. Руководство разработчика, том 2. Разработка компонентов и программирование баз данных: Пер. с англ.: Уч. пос.- М.: Издательский дом ”Вильямс”, 2000.

14. Федорова Г.В. Информационные технологии бухгалтерского учета, анализа и аудита. - М.: Омега - Л, 2004. - 304 с.

15. Чекалова А. Базы данных: Delphi.- 2000.

ДОДАТКИ

Додаток А

Інструкція користувача по введенню формул

Приклад 1.

Додамо показник абсолютної ліквідності.

Вибираємо групу «Аналіз майнового стану підприємства»

У перше поле вводимо: «Коефіцієнт оновлення основних засобів»

У друге: A4001/B4031

Рисунок А.1 - Вікно редактора формул

Примітка: формула водиться латинськими літерами

Пояснимо формулу.

В операнді A4001:

а) А - означає Додаткові дані;

б) цифра 4 - кінець звітного періоду;

в) останні три цифри 001 - код рядка у таблиці «Додаткові дані».

В операнді B4031:

а) B - означає Баланс;

б) цифра 4 - кінець звітного періоду;

в) останні три цифри 031 - код рядка (статті) Балансу (в даному випадку це "Первісна вартість оборотних засобів").

Приклад 2.

Показник оборотності активів.

У перше поле вводимо: Коефіцієнт оборотності активів

У друге: F4035 / ((B3280 + B4280) / 2)

Пояснимо формулу.

У першому операнді F4035:

а) F - означає Звіт про фінансові результати;

б) 4 - звітний період;

в) 035 - код рядка (статті) у Звіті про фінансові результати (в даному випадку це "Чистий дохід (виручка) від реалізації продукції (товарів, робіт, послуг"));

У другому операнді B3280:

а) B - Баланс;

б) 3 - початок звітного періоду;

в) 280 код рядка (статті) Балансу (в даному випадку "Баланс"):

У третьому операнді B4280:

а) B - Баланс;

б) 4 - кінець звітного періоду;

в) 280 код рядка (статті) Балансу (в даному випадку "Баланс")

Додаток Б

Функції імпорту балансу та звіту про фінансові результати

function Xls_To_excel_bal(AXLSFile: string): Boolean;

const

xlCellTypeLastCell = $0000000B;

var

XLApp, Sheet: OLEVariant;

RangeMatrix: Variant;

k, r: Integer;

begin

Result := False;

XLApp := CreateOleObject('Excel.Application');

try

XLApp.Visible := False;

XLApp.Workbooks.Open(AXLSFile);

Sheet:= XLApp.Workbooks[ExtractFileName(AXLSFile)].WorkSheets[1]; Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate

xbal := XLApp.ActiveCell.Row

ybal := XLApp.ActiveCell.Column;

SetLength(excel_bal, ybal, xbal);

RangeMatrix := XLApp.Range['A1', XLApp.Cells.Item[xbal, ybal]].Value;

k := 1;

repeat

for r := 1 to ybal do

begin

excel_bal[(r - 1), (k - 1)] := RangeMatrix[K, R];

end;

Inc(k);

until k > xbal;

RangeMatrix := Unassigned

finally

if not VarIsEmpty(XLApp) then

begin

XLApp.Quit;

XLAPP := Unassigned;

Sheet := Unassigned;

Result := True;

end;

end;

end;

function Xls_To_excel_zvit(AXLSFile: string): Boolean;

const

xlCellTypeLastCell = $0000000B;

var

XLApp, Sheet: OLEVariant;

RangeMatrix: Variant;

k, r: Integer;

begin

Result := False;

XLApp := CreateOleObject('Excel.Application');

try

XLApp.Visible := False;

XLApp.Workbooks.Open(AXLSFile);

Sheet := XLApp.Workbooks[ExtractFileName(AXLSFile)].WorkSheets[1];

Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;

xzvit := XLApp.ActiveCell.Row;

yzvit := XLApp.ActiveCell.Column;

SetLength(excel_zvit, yzvit, xzvit);

RangeMatrix := XLApp.Range['A1', XLApp.Cells.Item[xzvit, yzvit]].Value;

k := 1;

repeat

for r := 1 to yzvit do

begin

excel_zvit[(r - 1), (k - 1)] := RangeMatrix[K, R];

end;

Inc(k);

until k > xzvit;

RangeMatrix := Unassigned;

finally

if not VarIsEmpty(XLApp) then

begin

XLApp.Quit;

XLAPP := Unassigned;

Sheet := Unassigned;

Result := True;

end;

end;

end;

Додаток В

Процедура імпорту змінної балансу в електронну форму

procedure TFormBal.ExcelToClick(Sender: TObject);

var

i,k:byte;

begin

if OD_Balance.Execute then

begin

FN_Balance:=OD_Balance.FileName;

Xls_To_excel_bal(FN_Balance);

UkrBalanceSheet.ClearBal;

RzComboBoxBal.ItemIndex:= ybal-4;

RzComboBoxBalChange(Self);

for k:= 1 to ybal-2 do

begin

for i:=1 to xbal-1 do

begin

if Length(excel_bal[k+1,i])>=1 then

begin

if (excel_bal[k+1,i])[1]='-' then Delete(excel_bal[k+1,i],1,1);

if (excel_bal[k+1,i])[1]='(' then Delete(excel_bal[k+1,i],1,1);

if (excel_bal[k+1,i])[Length(excel_bal[k+1,i])]=')' then Delete(excel_bal[k+1,i],(Length(excel_bal[k+1,i])),1);

end;

if (excel_bal[k+1,i]<>'') and (excel_bal[k+1,i]<>'()') and (excel_bal[k+1,i]<>'( )') then

begin

if excel_bal[1,i]='11' then UkrBalanceSheet.SetItemValue(011,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='12' then UkrBalanceSheet.SetItemValue(012,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='20' then UkrBalanceSheet.SetItemValue(020,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='31' then UkrBalanceSheet.SetItemValue(031,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='32' then UkrBalanceSheet.SetItemValue(032,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='40' then UkrBalanceSheet.SetItemValue(040,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='45' then UkrBalanceSheet.SetItemValue(045,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='50' then UkrBalanceSheet.SetItemValue(050,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='60' then UkrBalanceSheet.SetItemValue(060,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='70' then UkrBalanceSheet.SetItemValue(070,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='011' then UkrBalanceSheet.SetItemValue(011,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='012' then UkrBalanceSheet.SetItemValue(012,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='020' then UkrBalanceSheet.SetItemValue(020,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='031' then UkrBalanceSheet.SetItemValue(031,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='032' then UkrBalanceSheet.SetItemValue(032,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='040' then UkrBalanceSheet.SetItemValue(040,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='045' then UkrBalanceSheet.SetItemValue(045,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='050' then UkrBalanceSheet.SetItemValue(050,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='060' then UkrBalanceSheet.SetItemValue(060,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='070' then UkrBalanceSheet.SetItemValue(070,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='100' then UkrBalanceSheet.SetItemValue(100,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='110' then UkrBalanceSheet.SetItemValue(110,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='120' then UkrBalanceSheet.SetItemValue(120,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='130' then UkrBalanceSheet.SetItemValue(130,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='140' then UkrBalanceSheet.SetItemValue(140,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='150' then UkrBalanceSheet.SetItemValue(150,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='161' then UkrBalanceSheet.SetItemValue(161,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='162' then UkrBalanceSheet.SetItemValue(162,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='170' then UkrBalanceSheet.SetItemValue(170,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='180' then UkrBalanceSheet.SetItemValue(180,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='190' then UkrBalanceSheet.SetItemValue(190,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='200' then UkrBalanceSheet.SetItemValue(200,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='210' then UkrBalanceSheet.SetItemValue(210,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='220' then UkrBalanceSheet.SetItemValue(220,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='230' then UkrBalanceSheet.SetItemValue(230,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='240' then UkrBalanceSheet.SetItemValue(240,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='250' then UkrBalanceSheet.SetItemValue(250,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='270' then UkrBalanceSheet.SetItemValue(270,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='300' then UkrBalanceSheet.SetItemValue(300,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='310' then UkrBalanceSheet.SetItemValue(310,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='320' then UkrBalanceSheet.SetItemValue(320,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='330' then UkrBalanceSheet.SetItemValue(330,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='340' then UkrBalanceSheet.SetItemValue(340,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='350' then UkrBalanceSheet.SetItemValue(350,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='360' then UkrBalanceSheet.SetItemValue(360,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='370' then UkrBalanceSheet.SetItemValue(370,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='400' then UkrBalanceSheet.SetItemValue(400,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='410' then UkrBalanceSheet.SetItemValue(410,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='420' then UkrBalanceSheet.SetItemValue(420,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='440' then UkrBalanceSheet.SetItemValue(440,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='450' then UkrBalanceSheet.SetItemValue(450,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='460' then UkrBalanceSheet.SetItemValue(460,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='470' then UkrBalanceSheet.SetItemValue(470,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='500' then UkrBalanceSheet.SetItemValue(500,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='510' then UkrBalanceSheet.SetItemValue(510,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='520' then UkrBalanceSheet.SetItemValue(520,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='530' then UkrBalanceSheet.SetItemValue(530,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='540' then UkrBalanceSheet.SetItemValue(540,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='550' then UkrBalanceSheet.SetItemValue(550,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='560' then UkrBalanceSheet.SetItemValue(560,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='570' then UkrBalanceSheet.SetItemValue(570,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='580' then UkrBalanceSheet.SetItemValue(580,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='590' then UkrBalanceSheet.SetItemValue(590,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='600' then UkrBalanceSheet.SetItemValue(600,k,StrToCurr(excel_bal[k+1,i]));

if excel_bal[1,i]='610' then UkrBalanceSheet.SetItemValue(610,k,StrToCurr(excel_bal[k+1,i]));

end;

end;

end;

end;

UkrBalanceSheet.CalculateAllPeriods;

end;

Додаток Г

Процедура розрахунку показників

procedure TForm_Koef.SpeedButtonCalcClick(Sender: TObject);

var i,j,rowss,npp,kolper:Integer;

begin

for i:=0 to FormCalc.MassOfFormulasLength-1 do

begin

if RzCheckListCacl.ItemChecked[FormCalc.MassOfFormulas[i].F_Index]=true then

FormCalc.MassOfFormulas[i].F_Checked:=True

else

FormCalc.MassOfFormulas[i].F_Checked:=False;

end;

FormCalc.Coefficients.ClearIS();

rowss:=2;

npp:=1;

for i:=0 to FormCalc.MassOfGrupsLength-1 do

begin

FormCalc.Coefficients.Cells[0,rowss]:='Група';

FormCalc. Coefficients.Cells[1,rowss]: =FormCalc. Mass Of Groups[i].G_Name;

inc(rowss);

for j:=0 to FormCalc.MassOfFormulasLength-1 do

begin

if (FormCalc. Mass OfFormulas[j]. G_ID = FormCalc.MassOfGroups[i].G_ID)

and (FormCalc.MassOfFormulas[j].F_Checked=True) then

begin

FormCalc.Coefficients.Cells[0,rowss]:= IntToStr(npp);

FormCalc.Coefficients.Cells[1,rowss]:=FormCalc.MassOfFormulas[j].F_Name;

for kolper:=0 to FormCalc.UkrBalanceSheet.PeriodCount-1 do

begin

FormCalc.Coefficients.Cells[2+kolper,rowss]:=FormCalc.Formula(FormCalc.MassOfFormulas[j].F_Expression,kolper,kolper+1);

if (kolper=FormCalc.UkrBalanceSheet.PeriodCount-1) and (FormCalc.UkrBalanceSheet.PeriodCount<>2) then

begin

if FormCalc.Coefficients.Cells[3,rowss]='x' then

FormCalc.Coefficients.Cells[3+kolper,rowss]:='x'

else

FormCalc.Coefficients.Cells[3+kolper,rowss]:=FormCalc.Answer(FormCalc.Coefficients.Cells[2+kolper,rowss]+'-'+FormCalc.Coefficients.Cells[3,rowss])

end;

end;

inc(rowss);

inc(npp);

end;

end;

end;

Form_Koef.Close;

FormCalc.PanelCalc.OnClick(Sender);

end;

Додаток Д

Процедура завантаження інформації з бази

procedure Load;

var i,j:Integer;

begin

Form_Koef.RzCheckListKoef.Clear;

SetLength(FormCalc.MassOfFormulas,0);

SetLength(FormCalc.MassOfGroups,0);

Form_Koef.ADOTableGr.Close;

Form_Koef.ADOTableCoef.Close;

FormCalc.ADOConnection.Connected:=False;

FormCalc.ADOConnection.Connected:=True;

Form_Koef.ADOTableGr.Open;

Form_Koef.ADOTableCoef.Open;

FormCalc.MassOfFormulasLength:=Form_Koef.ADOTableCoef.RecordCount;

FormCalc.MassOfGrupsLength:=Form_Koef.ADOTableGr.RecordCount;

SetLength(FormCalc.MassOfGroups,FormCalc.MassOfGrupsLength);

SetLength(FormCalc.MassOfFormulas,FormCalc.MassOfFormulasLength);

i:=0;

j:=0;

with Form_Koef.ADOTableGr do

while not eof do

begin

FormCalc.MassOfGroups[j].G_ID:=Form_Koef.ADOTableGrG_ID.Value;

FormCalc.MassOfGroups[j].G_Name:=Form_Koef.ADOTableGrG_Name.Value;

Form_Koef.ADOQuery.Close;

Form_Koef.ADOQueryGr.Parameters.ParamByName('G_ID').Value:=Form_Koef.ADOTableGrG_ID.Value;

Form_Koef.ADOQuery.Open;

with Form_Koef.ADOQuery do

while not eof do

begin

FormCalc.MassOfFormulas[i].G_ID:=Form_Koef.ADOQueryG_ID.Value;

FormCalc.MassOfFormulas[i].F_Name:=Form_Koef.ADOQueryF_Name.Value;

FormCalc.MassOfFormulas[i].F_Expression:=Form_Koef.ADOQueryF_Expression.Value;

FormCalc.MassOfFormulas[i].F_Checked:=True;

inc(i);

Next;

end;

inc(j);

Next;

end;

Form_Koef.ADOTableGr.Close;

Form_Koef.ADOQueryCoef.Close;

Form_Koef.ADOTableCoef.Close;

FormCalc.ADOConnection.Connected:=False;

end;

Додаток Е

Фукнкція обробки рядків формул

function TFormCalc.Formula(s:string;nachper,konper:word):string;

var i,SLength,propusk:integer;

cell,period,rezult,znachcell:String;

AllB3,AllF3,AllA3:boolean;

begin

SLength:=length(S);

propusk:=-1;

AllB3:=False;

AllF3:=False;

AllA3:=False;

for i:=0 to SLength-1 do

begin

if s[i]+s[i+1]='B3' then

AllB3:=True;

if s[i]+s[i+1]='B4' then

AllB3:=False;

if s[i]+s[i+1]='F3' then

AllF3:=True;

if s[i]+s[i+1]='F4' then

AllF3:=False;

if s[i]+s[i+1]='A3' then

AllA3:=True;

if s[i]+s[i+1]='A4' then

AllA3:=False;

end;

for i:=1 to SLength do

begin

if i> propusk then

begin

if (s[i]='B') or (s[i]='F') or (s[i]='A') then

begin

if s[i]='B' then

begin

cell:=s[i+2]+s[i+3]+s[i+4];

period:=s[i+1];

if period='3' then

begin

if AllB3=true then

period:=IntToStr(konper)

else

if konper=1 then

begin

Formula:='x';

Exit;

end

else

period:=IntToStr(nachper);

end;

if period='4' then

begin

period:=IntToStr(konper);

end;

znachcell:= FloatToStr(FormCalc.UkrBalanceSheet1.GetItemValue(StrToInt(cell),StrToInt(period)));

if (cell='012') or (cell='032') or (cell='162') or (cell='360') or (cell='370') then

begin

Delete(znachcell,1,1);

rezult:=rezult+znachcell;

end

else

rezult:=rezult+znachcell;

end;

if s[i]='F' then

begin

cell:=s[i+2]+s[i+3]+s[i+4];

period:=s[i+1];

if period='3' then

begin

if AllF3=true then

period:=IntToStr(konper)

else

if konper=1 then

begin

Formula:='x';

Exit;

end

else

period:=IntToStr(nachper);

end;

if period='4' then

begin

period:=IntToStr(konper);

end;

if (cell='220') and (FormCalc.UkrIncomeStatement.GetItemValue(StrToInt(cell),StrToInt(period))=null) then

cell:='225';

if (cell='225') and (FormCalc.UkrIncomeStatement.GetItemValue(StrToInt(cell),StrToInt(period))=null) then

cell:='220';

if (cell='100') and (FormCalc.UkrIncomeStatement.GetItemValue(StrToInt(cell),StrToInt(period))=null) then

cell:='105';

if (cell='105') and (FormCalc.UkrIncomeStatement.GetItemValue(StrToInt(cell),StrToInt(period))=null) then

cell:='100';

znachcell:=FloatToStr(FormCalc.UkrIncomeStatement.GetItemValue(StrToInt(cell),StrToInt(period)));

if (cell='015') or (cell='020') or (cell='030') or (cell='040') or (cell='070') or (cell='080') or (cell='090')

or (cell='140') or (cell='150') or (cell='160') or (cell='180') or (cell='205') or (cell='210') then

begin

Delete(znachcell,1,1);

rezult:=rezult+znachcell;

end

else

rezult:=rezult+znachcell;

end;

if s[i]='A' then

begin

cell:=s[i+2]+s[i+3]+s[i+4];

period:=s[i+1];

if period='3' then

begin

if AllA3=true then

period:=IntToStr(konper)

else

if konper=1 then

begin

Formula:='x';

Exit;

end

else

period:=IntToStr(nachper);

end;

if period='4' then

begin

period:=IntToStr(konper);

end;

if FormCalc.AdditionalIndexes.GetItemValue(StrToInt(cell),StrToInt(period))='x'then

begin

Formula:='x';

Exit;

end;

znachcell:=FormCalc.AdditionalIndexes.GetItemValue(StrToInt(cell),StrToInt(period));

rezult:=rezult+znachcell;

end;

propusk:=i+4;

end

else

if s[i]='V' then

rezult:=rezult+'+'

else

rezult:=rezult+s[i];

end;

end;

for i:=0 to Length(rezult) do

if rezult[i]=',' then

rezult[i]:='.';

Formula:=Answer(rezult);

End

Размещено на Allbest.ru


Подобные документы

  • Теоретичні аспекти поняття фінансового стану підприємства: сутність, значення для діяльності. Аналіз фінансового стану ВАТ "Видавництво Харків". Показники платоспроможності і ліквідності підприємства. Заходи щодо покращення фінансового стану підприємства.

    дипломная работа [146,6 K], добавлен 21.08.2010

  • Сутність ліквідності підприємства та її значення для оцінки фінансового стану. Методологія дослідження ліквідності балансу підприємства. Забезпечення фінансування в необхідних обсягах. Структура оборотних активів. Швидкість обороту коштів підприємства.

    курсовая работа [188,7 K], добавлен 09.05.2012

  • Інформаційне забезпечення оцінки фінансового стану підприємства. Показники фінансового стану підприємства. Оцінка ліквідності та платоспроможності підприємства. Оцінка фінансової стійкості підприємства. Комплексна оцінка фінансового стану підприємства.

    лекция [122,8 K], добавлен 15.11.2008

  • Аналіз основних теоретичних положень щодо оцінки фінансового стану підприємства. Особливості інформаційного забезпечення, методів та прийомів оцінки ліквідності та платоспроможності підприємства. Показники фінансової стійкості, прибутку, рентабельності.

    курсовая работа [61,1 K], добавлен 31.05.2010

  • Характеристика показників, що потрібні для проведення фінансового аналізу. Класифікація активів підприємства по рівню ліквідності. Аналіз руху коштів ВАТ "Стахановський вагонобудівний завод" за 2009 й 2010 р. висновки щодо фінансового стану підприємства.

    курсовая работа [115,5 K], добавлен 05.02.2011

  • Види, завдання, інформаційна база аналізу фінансового стану підприємства. Інформаційне забезпечення оцінки фінансового стану підприємства. Комплексна оцінка фінансового стану підприємства ВАТ "Парадіз". Напрямки поліпшення фінансового стану підприємства.

    курсовая работа [197,5 K], добавлен 14.06.2010

  • Економічна сутність й значення оцінки фінансового стану підприємства. Методичні підходи до оцінки глибини фінансової кризи суб’єкта господарювання. Аналіз фінансового стану, ліквідності і платоспроможності підприємства. Ефективність антикризових заходів.

    дипломная работа [525,7 K], добавлен 28.12.2013

  • Інформаційне забезпечення аналізу фінансового стану підприємства, показники фінансової стійкості. Техніко-економічна характеристика заводу. Аналіз складу та структури джерел коштів, активу балансу. Оцінка платоспроможності, ліквідності та рентабельності.

    курсовая работа [219,7 K], добавлен 31.05.2013

  • Поняття та завдання фінансового аналізу підприємства, основні показники його торговельної діяльності. Аналіз показників майнового стану, фінансової стабільності, ліквідності й платоспроможності, ділової активності та рентабельності підприємства.

    курсовая работа [81,7 K], добавлен 28.04.2011

  • Характеристика галузі діяльності підприємства, його майна і джерел коштів. Аналіз ліквідності балансу, фінансової стійкості підприємства. Пропозиції щодо зниження собівартості продукції і зростання прибутку для покращення фінансового стану підприємства.

    курсовая работа [176,9 K], добавлен 25.10.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.