АННОТАЦИЯ

 

Дипломдық жобаның тақырыбы «АКБУРА -555» ЖШС –ның қызметтерін автоматтандыратын БҚ құрастыру менеджеріне арналған бағдарламалық қамтамасыздандыру құрастыру.

Дипломдық жоба талаптарына сәйкес 3 бөлімнен тұрады: есептің қойылымы, бағдарламалық қамтаманы жобалау, бағдарламалық қамтаманы жүзеге асыру. Сонымен қатар дипломдық жобада аннотация, мазмұны, кіріспе, қорытынды, қолданылған әдебиеттер тізімі және қосымшалар келтірілген.

 

Мазмұны

 

 

КІРІСПЕ.........……………………………………………………………………… 

4

1 ЕСЕП ҚОЙЫЛЫМЫ............................................................................................

6

1.1 Ақпараттық жүйелер мен АРМ қарастыру және талдау ...............................  

8

1.2 БҚ құруға арналған негіздеу ............................................................................

9

1.3 Техникалық тапсырма ………………………………………………………...    

13

2  БАҒДАРЛАМАЛЫҚ ҚАМТАМАСЫЗ ЕТУДІ ЖОБАЛАУ ...........................

14

2.1 Зерттеу объектісін талдау .................................................................................

14

2.1.1 Өңделінетін бағдарламалық қамтамасыз етуді тағайындау .......................

15

2.1.2 Құрылымдық жобалау ...................................................................................

16

2.1.3 Ағындық ақпараттық талдау .........................................................................

19

2.2 Бағдарламалық және аппараттық құралдарды таңдау мен негіздеу ............

19

2.2.1 Функциональды бағдарламалық қамтаманы таңдау ...................................

20

2.2.2 Арнайы бағдарламалық қамтаманы таңдау .................................................

24

2.2.3 Аппараттық құралдарды таңдау ...................................................................

30

3 БАҒДАРЛАМАЛЫҚ ҚАМТАМАСЫЗДАНДЫРУДЫ ЖҮЗЕГЕ АСЫРУ ....

31

3.1 Шешудің алгоритмін құрастыру ......................................................................

31

3.1.1 Модульдер мен берілгендер құрылымының жұмыстарын сипаттау ........

32

3.1.2  Файлдық жүйенің логикалық және физикалық құралымы .......................

34   

3.1.3  Класстардың интерфейсін сипаттау ............................................................

39

3.2 Ақпараттық модульдер мен бағдарламаны толықтай жөндеу .....................

39

3.2.1 Бағдарлама интерфейсін құру .......................................................................

40

3.2.2 Экрандық интерфейстің идеологиясын таңдау ...........................................

59

3.3 Нақты мысалда тестілеу ....................................................................................

59

3.4 Құжаттау .............................................................................................................

65

3.4.1  Қолданушы нұсқауы .....................................................................................

65

3.4.2  Бағдарламалаушы нұсқауы ...........................................................................

66

ҚОРЫТЫНДЫ .........................................................................................................

67

ӘДЕБИЕТТЕР ТІЗІМІ .............................................................................................

68

Қосымша А Бағдарлама листингі ..........................................................................

Қосымша Б Қалыптар .............................................................................................

69

87

 

 

 

1 ЕСЕП ҚОЙЫЛЫМЫ

 

1.1. Ақпараттық жүйелер мен АРМ қарастыру және талдау

 

Заман шарттарына сай кәсіпорынды нәтижелі басқару компьютерлік технологияны қолданусыз мүмкін емес. Бағдарламалық өнімді дұрыс таңдау – бұл есептің кез келген түрін автоматтандырудың бірінші және сипаттаушы этапы. Қазіргі уақытта ерекше мәселелерден ақпараттық жүйелерді (АЖ) немесе АРМ таңдау проблемасы стандартты процедураға айналуда. Бұл мәнде қазақстандық кәсіпорындар шетелдік бәсекелестерден арта қалуда. Шетелдік кәсіпорындарда, ереже сай, АЖ ұрпағының барлық жаңарту тәжірибесі жеткілікті. Дамыған батыс елдерде әлдеқашан АЖ және АРМ төртінші ұрпағы ауысуда.  

Қазіргі уақытта ақпараттық технологиялар мәндер қатары бойынша, жеке алғанда: ақпараттық жүйеде реализациялау тәсілі бойынша, мәселені басқаруды қамту дәрежесі, реализацияланатын технологиялық операциялар кластары бойынша, қолданушы интерфейсінің типі бойынша, ЭЕМ желілерін қолдану нұсқалары бойынша, пәндік саланымен қамтамасыздандыру бойынша классификациялануы мүмкін. Бұл мәндердің әр қайсысы сол не басқа ақпараттық жүйені таңдау туралы шешімді қабылдауға әсер етеді. [4].

Қазіргі кезеңде Қазақстан Республикасы халқын жұмыспен қамту орталықтарында мәліметтер қоры, ақпараттық жүйелер және автоматтандырылған жұмыс орындары интеграциялануда. Қазақстандық АТ – рыногында қазіргі кезде халықты жұмыспен қамту орталықтарына арналған ақпараттық жүйелер және автоматтандырылған жұмыс орындарын ұсынатын кәсіпорындар жоқ. 

Бағдарламалық қамтамасыздандыруды өндіретіндер ұсынатын бағдарламалық өнімдер мәліметтер қорын басқаратын ақпараттық жүйелерді ұсынады. Берілген бағдарламалық өнім өнімділігінің негізгі көрсеткіштері бағдарламалық қамтама жазылған бағдарламалық тілді таңдауға және деректер қорын басқару жүйелерін (ДҚБЖ) таңдауға тәуелді болады.  

Дамыған еңбек кәсіпорындары тиімді басқарусыз елестету мүмкін емес. Кез келген кәсіпорындар мен мекемелер, ал әсіресе халықты жұмыспен қамту орталықтарының жұмыс тиімділігі көбінесе тәуелді болатын ақпаратты өңдеу жүйелері негізгі категория болып табылады. Мұндай жүйе тиісті:

жұмыстар жиыны бойынша жалпы және/немесе нақтыланған есептерді алуды қамтамасыз етуге;

керекті көрсеткіштерді өзгерту тенденцияларын оңай анықтауға мүмкіндік жасауға;

тоқтауларсыз уақыт бойынша критикалық ақпараттарды алуды қамтамасыз етуге;

нақты және толық мәліметтер талдауын орындауға.

Дамыған ДҚБЖ негізінде Windows қосымшалары болып табылады, сонымен қатар берілген орта дербес ЭЕМ мүмкіндіктерін айтарлықтай толық қолдануға мүмкіндік береді. Жоғары өнімділікті ДК бағасының төмендеуі бағдарламалық қамтаманы өңдеуші ресурстарды орналастыру туралы төмен дәрежеде ойлауы мүмкін Windows ортасына кеңірек өтуді ғана емес, сонымен қатар ДК бағдарламалық қамтамасыздандыруды бүтінге айналдырып және ДҚБЖ жеке түрде ЭЕМ аппараттық ресурстарға сыншылдығын ескертті.  

Мәліметтер қоры басқару жүйелерін ұсынатындар ішіндегі ең жарқындары: Lotus Approach, Microsoft Access, Borland dBase, Borland Paradox, Microsoft Visual FoxPro, Microsoft Visual Basic, сонымен қатар «клиент-сервер» технологиясы бойынша құрылған қосымшаларда қолданылатын Microsoft SQL Server және Oracle мәліметтер қоры. Іс жүзінде кез келген дамыған ДҚБЖ қолдану мен мүмкіндіктердің аналогтық аймағы бар, басқа компаниямен шығарылатын аналогтан тұрады. Кез келген қосымша деректерді ұсынудың көптеген форматтарымен жұмыс істеуге, конверттердің көп саны болуының арқасында экспортты және импортты жүзеге асыруға қабілетті. Танымалдарға, сонымен қатар, басқа косымшаларды, мысалы, мәтіндік процестерді, графиктерді және т.б. құру пакеттерін және жоғары дәрежедегі тілдер нұсқаларын (көбіне – SQL және/немесе VBA диалекттері) құру және қосымшаларды өндіретін интерфейстерді визуалды бағдарламалау құралдарын пайдалануға мүмкіндік беретін технологияларда жатады. Сондықтан енді нақты қосымша қай тілде және қандай пакет негізінде жазылғаны, сонымен қатар онда берілгендердің қандай форматы қолданылғанының маңызды мәні жоқ. Сонымен бірге, «қосымшаны тез өңдеу» немесе кең ресми мәлімделетін «ашық жақын келу» әдебиетте негізделген RAD (ағылшын тілінен Rapid Application Development), яғни әртүрлі қосымша бағдарламаларды қолдану қажеттілігі және мүмкіндігі және айтарлықтай иілгіш және қуатты берілгендерді өңдеу жүйелерін өңдеуге арналған технологиялар «де-факто» стандарты болды. Сондықтан «классикалық» ДҚБЖ бір қатарында қиын, ал кейде «классикалық» ДҚБЖ құралдарымен өңдеуге болмайтын жұмыс жылдамдығы бойынша критикалық қосымшаның керекті компоненттерін тез құруға мүмкіндік беретін Visual Basic 4.0, Visual C++, Builder C++ бағдарламалау тілдері жиі-жиі ескеріледі. Заманға сай деректер қорын басқаруға жақындау да «клиент-сервер» технологиясын кең қолдану керектігін түсіндіруде.

Кейбір бағдарламалық өнімдерді кеңірек қарастырамыз.

Visual FoxPro жоғары жылдамдылығымен ерекшеленеді, диалекттері көптеген ДҚБЖ құрылған xBase және SQL қолданатын объектілі-бағдарлы бағдарламалау тілінен тұрады. Объектілі моделдің жоғары дәрежесінен тұрады. Есептеу желілерінде қолданылғанда берілгендерге қолданушылардың бөлек ену мүмкіндігі сияқты монопольды түрде қамтамасыз етеді. Әртүрлі платформалардағы жұмыстарға арналған кәсіпорын масштабы қосымшалары үшін қолданылады.

Access ең әйгілі Microsoft Office пакеті құрамына кіреді. Негізгі артықшылықтар: көптеген соңғы қолданушылар белгісі және деректердің жоғары тұрақтылығына ие, игеруде қарапайым, кәсіпсіз бағдарламалаушы да қолдануы мүмкін, түрлі форматтағы деректер қорынан есеп дайындауға мүмкіндік береді, түрлі деректер және коммерциялық емес қосымшаларды өңдеу негізінде тәуелсіз формалар есебін құруға арналған.

Сонымен, бүгінгі күнде өңдеуші қандайда бір нақты пакет рамкаларымен байланысты емес, ал есептің қойылымына байланысты ең әртүрлі қосымшаларды қолдануы мүмкін.  Сондықтан, қазіргі уақытта ең керектісі ДҚБЖ дамуының жалпы бағыты және қосымшаларды өңдеудің басқа құралдары болып табылады.

Дипломдық жұмыстың зерттеу пәні Болгария, Германия, Ресей, Турция және т.б. өндіруші фирмалардың автохимия, автоаксессуарлар және автокосметика көтеме саудасымен айналысатын «Ақбура -555т» ЖШС болып табылады.

Фирма 2002ж құрылған. Фирма аумағында тауар сақталынатын қойманың астына жер бөлінген. «Ақбозат» ЖШС өнімді Қазақстанның кез келген қаласына транспорттайды. Іске асырылған өнім номенклатурасы бірнеше мың атаудан тұрады және әрдайым өсіп отырады.

«Ақбура -555» ЖШС ұйымдық-заңды формасының көзқарасы негізінде жауапкершілігі шектеулі қоғам формасында құрылды.

 «Ақбура -555» ЖШС қызметінің негізгі мақсаттары болып табылады:

- өзара тиімді шарттардағы жұмыс;

- заң жүзінде жіберілетін барлық әдістермен кірістерді шығару;

- азамат қажеттіліктерін айтарлықтай толық және сапалы қанағаттандыру мен жеке және заңды тұлғалардың, олармен келісілген келісімдер мен контрактілері негізінде тапсырыстарын орындау. Компания қызметкерлерінің нәтижелі менеджменті арқасында тұтынушыларға автохимия, автоаксесуарлар және автокосметика өндірушілердің жаңалықтарын ұсынады, өндірушілердің Казахстан Республикасындағы ресми диллері «Ақбозат» компаниясы болып табылады.

«Ақбура -555» ЖШС қызметінің негізгі мәселесі мүмкіндігінше максималды кіріс алу болып табылады.

«Ақбура -555» ЖШС құрылтай құжаттарына сәйкес заңда тиым салынбаған қызметтің кез келген түрінмен айналысуға құқылы, сонымен бірге қызметтер пәні болып табылады:

- көтерме және бөлек сауда;

- тауарды алып-сатуда делдалдық қызметтер;

- жабдықтау және өтім;

- басқа қызмет түрлерінің орнатылған ретін жүзеге асыру.

«Ақбура -555» ЖШС негізгі кіріс көздері өнімді іске асырудан түскен қаржылық құралдар болып табылады. «Ақбура -555» ЖШС негізгі шығыс көздері болып табылады:

тауарды сатып алуға және жөндеуге кеткен шығындар;

өндірістік орынды жалға алуға кеткен шығындар;

электрэнергияға, жылуға кеткен шығындар;

қызметшілердің жалақысына және АТР кеткен шығындар.

Фирма басында негізінде басқарушылық сұрақтарды, сонымен бірге стратегиялық сұрақтарды да шешетін бас директор тұрады. Ол барлық бөлімнің қызметтерін бақылайды. Сонымен қатар ол қаржылық ағын іс-әрекеті сұрақтарымен де хабардар болып отырады.

Бухгалтерлік бөлім өзінен үш бөлімшені: бас бухгалтер, көшірме, төлем және касса ұсынады.

 Бас бухгалтер бухгалтерлік есеп жүргізеді, балансты жүзеге асырады, әртүрлі кездесулі салыстырмалы тексерулер, барлық салықты есептейді және оның қарамағындағы бөлімшеде пайда болған сұрақтарды шешеді.

«Төлемдер» бөлімі арнайы банктік бағдарлама арқылы банктен алымдарды және жіберулерді орындайды. Бұларға материалдарды жеткізушілер есебі бойынша төлем, салықтарды төлеу, фирманың есеп айыратын есебінен делдалдан күнделікті ақшалық құралдарды алу және басқада төлемдер.

Кассир фирманың бар жабдықтарын (жалақы беру, шаруашылық қажеттіліктерге құралдар бөлу, командировкалар беру және т.с.с.) үйлестірумен айналысады.

Экономикалық қауіпсіздік бөліміне кіретіндер: объекттің қауіпсіздігіне және жіберілген жүйеге жауапты күзет бастығы, ақпараттық қауіпсіздікті сақтау және есептеуіш комплекстің функционалдылығымен қамтамасыздандыру міндеттерін атқаратын жүйелік администратор.

Автоматтандырылған жүйе «Көшірме» бөлімшесінің мәселелерін шешуге арналған. Бұл бөлімшенің негізгі мәселелері – бұл шығын құжаттарын көшіру, кірістерді енгізу, банктік көшірмелерді енгізу, ішкі құжаттарды көшіру, номенклатура және жаңа жабдықтаушыларды енгізу, қордағы қалдықтарды біржола жою, жабдықтаушылармен өзара есеп айырысу.

 

1.2 БҚ құруға арналған негіздеу

 

ДК өңдеуді негіздеуді қалыптастыру үшін «Ақбура -555» ЖШС кәсіпорынының қордағы операциялар есебіне талдау жүргіземіз.

Материалдар қозғалысы және дайын өнім есебі

Тауарлар қозғалысының есебі және дайындауы нормативтік актімен сәйкес жүргізілуі тиіс.

Тауардың түсуі, орын ауыстыруы және қалдыру сандық және бағалық түрдегі алғашқы құжаттарда бейнеленеді. Алғашқы есептік құжаттар формалары қабылданған шаруашылық операцияларды жүзеге асыруға арналған есептік құжаттар жүйесі құрамындағы кәсіпорынмен анықталады және орнатылады.

Алғашқы құжатар бухгалтерлік есеп туралы Ереженің талаптарына сәйкес және Қазақстан Республикасындағы есептілікке сәйкес дайындалуы керек және келесі міндетті реквизиттерден тұруы керек: құжат атауы (қалыптар); қалып коды; құрастыру күні; шаруашылық операциялар мазмұны; шаруашылық операцияларды өлшеуіштер (табиғи және ақшалық түрде); шаруашылық операцияларды іске асыруға және олардың дұрыс дайындалуына жауапты тұлғалар дәрежесі атаулары, жеке қолтаңбалар және олардың шифрлерін ашу; сонымен бірге кәсіпорынның мөрі мен мөртабаны.

Құжаттың өз уақытында және дұрыс дайындалуына жауапкершілікті, бухгалтерлік есепте бейнелену үшін қойылған уақытқа оларды жіберуге, құжаттағы берілгендердің сенімділігіне осы құжаттарды құрастырған және қол қойған тұлғалар өз мойнына алады. Алғашқы құжаттар есеп бойынша және қабылдау операцияларын дайындау бойынша, сақтау және материалдарды және дайын өнімдерді кәсіпорында қалдыру тексеріс біткеннен кейін нормативті тізбемен сәйкес үш жылға сақталады.

Түскен тауарлар кірісі туралы келесі жолдамалы құжаттарға: тауар-транспорттық мәлімдеме, есеп-фактур, есеп және түскен тауар саны мен сапасын куәландыратын басқа да құжаттарға мөртабан қою жолымен дайындалады.

Тауарды сатып алуда немесе оны қабылдағанда міндетті түрде сатып алынған тауарға сәйкес сертификаттың болуын қадағалау керек.

Талап – мәлімдеме кәсіпорын ішінде құрылымдық бөлімшелер немесе заттық түрде жауапты тұлғалар арасында тауар қозғалысы есебі үшін қолданады.

Мәлімдемені екі көшірмеде тауарды беретін құрылымдық бөлімшенің заттық түрдегі жауапты тұлғасы құрастырады. Бір көшірмесі беретін қоймаға құндылықтарды жазуға арналған негіздеме ретінде, ал екіншісі қабылдаушы бөлімшеге құндылықтардың кірістіруге қызмет етеді.

 Осы мәлімдемелермен қоймадағы іске асырылмаған тауарларды беру, сонымен бірге мерзімі өткен өнімдерді қайтару бойынша операциялар дайындалады, егер олар талап бойынша ертерек алынған болса.

Мәлімдемені заттық түрдегі жауапты тұлға тапсырушы мен қабылдаушыға сәйкес қол қояды және оны тауар қозғалысы есебі үшін бухгалтерияға тапсырады.

Қойма есебін бақылау

Кәсіпорын бухгалтері түскен тауарлар кірісі туралы өз уақыттылығына және толықтығына, оларды көшіруде дұрыстылығына, сонымен бірге заттық түрдегі жауапты тұлғалар есебін құру дұрыстығына міндетті.

Заттық түрдегі жауапты тұлғалар есебін тексеру бухгалтер орнатуға тиісті:

қосымша тіркелген құжаттар негізінде жасалған есепте құжаттың шынайылығы және жазулардың дұрыстығы, сонымен бірге құжат даталарының есепті ұсынатын кезеңге сәйкестігі;

есеп кезеңінің соңындағы алдыңғы есепте көрсетілген берілген есептегі тауар қалдықтарымен есептің алдыңғы кезеңіндігі қалдықтардың сәйкестігі;

есепте алдыңғы есептік кезеңге тауар қалдықтарының түгендеме тізімдегі нақты қалдықтарға түгендеме күнінің сәйкестігі;

шаруашылық операциялардың (қабылдау, демалыс, тауарды көшіру және т.б.) заңдылығы және дәлелділігі;

құжатта барлық керекті реквизиттердің, заттық түрдегі жауапты тұлғалардың қолтаңбаларының болуы.

тауарларға бағалардың дұрыстығы.

Түгендеу

Тауардың нақты бар болуын тексеру нақтылауға және қалдықтарды салыстыра тексеруге керекті құрал. Түгендеудің іс жүзінде үш әдісі қолданылады – кезеңдік, үзіліссіз және таңдамалы.

Кезеңдік түгендеу – түгендеуді жүргізіп жатқан тұлғаларға қалдықтарды нақты есептеуге мүмкіндік жасау үшін түгендеу кезеңінде қойма жұмысы тоқтатылуға тиісті.

Үзіліссіз түгендеу – түгендеушілер әр күні немесе әр аптада нақты қосымшаның берілген мөлшерін немесе бірнеше пайызын есептейді және осы әдіске сәйкес тұрақты жүргізілетін есептер түзелуде.

Таңдамалы түгендеу – ерекше бақыланатын атауларды тексеру, жаппай түгендеуге қарағанда жеке әлдеқайда нақты.

Бухгалтерия қандай тауар түрлерін тексеру керектігін және қоймашылар жұмысын бухгалтерия қашан бақылайтынын анықтай отырып түгендеуді жүргізуге бастаушы болуға міндетті. Түгендеу жүргізілуін бухгалтерия өкілі қадағалауға міндетті.

Түгендеуді негізгі мақсаттары келесідей:

тауардың нақты болуын табу;

бухгалтерлік есеп берілгендерімен тауардың нақты болуын салыстыру;

міндеттердің есепте толық сипатталуын тексеру.

«Бухгалтерлік есеп және есептілік туралы Ережеге» сәйкес түгендеуді жүргізу міндетті:

кәсіпорын мүлкін жалға, сатып алуға, сатуға берген кезде, сонымен бірге мемлекеттік немесе муниципалды бүртұтас кәсіпорынды құру кезінде заңмен қарастырылған жағдайларда;

заттық түрдегі жауапты тұлғалардың ауысуы кезінде (жұмыстарды беруді қабылдау күні);

ұрлық немесе жасырын қолдану, сонымен бірге бұзылған құндылықтар фактілерін орнату кезінде;

стихиялық апаттар, өрт, авто апаттар және басқа да экстремальды шарттармен шақырылған төтенше жағдайлар кезінде.

Есептік жылдағы түгендеу саны, оны өткізу күндері кәсіпорын басшысымен орнатылады.

Кәсіпорында түгендеуді өткізу үшін тұрақты жұмыс істейтін түгендеу комиссиясы орнатылады.

Тұрақты жұмыс істейтін және түгендеу комиссиясының жұмысшыларының тұлғалық құрамын кәсіпорын басшысы бұйрығымен бекітеді.

Құндылықтардың нақты бар болуы туралы мәлімет түгендеу жазбаларында немесе түгендеу актілерінде, кемінде екі көшірмеде жазылады.

Материалдарды сақтау

Тауарды қоймаға орналастыру әдісі сақтау әдісін таңдаудағы мәселені қолдануға тәуелді таңдалады, секциялардың рационалды орналасуы кезінде, тауарды бүлінуден қорғауда, қойманың кез келген ұйымына ену мүмкіндігі кезінде қойма көлемін максималды қолдану қажеттілігі.

Сақтаудың келесі әдістері ажыратылады:

тауардың әртүрлі түрлері және сорттары бір-бірінен бөлек орналастырылады;

партиялық – қоймаға түскен тауардың әрбір партиясы бөлек – бөлек сақталады;

партиялы-сорттық – қоймаға түскен тауардың әрбір партиясы өзімен өзі сақталады, мұнда партия ішіндегі тауар түрі және сорты бойынша сортталады және бөлек орналастырылады;

атауы бойынша – әрбір атаудағы тауарлар бөлек сақталады.

Тез орналастыру және таңдау үшін, сақтаудың талап етілген режимін қамтамасыз ету үшін сақтаудың тұрақты орындарын қарастыра отырып, олардың сақталуын қадағалау мүмкіндігі үшін тауарларды орналастыру сұлбалары өңделеді. Сұлбаны өңдеу кезінде түскен тауардың кезеңділігі мен көлемі және оның өтімі мен жүзеге асырылуы, салудың оптималды әдістері назарға ілінеді.

Сақтау кәсіпорыны қамтамасыз етуге міндетті:

Тауардың саны және сапасының сақталуын;

бақылаушы мүшелерге сәйкес тауарларды көріп шығу шарты.

Тауар қасиетінің сақталуын қамтамасыз етуге материалдарды сақтаудың гидротермиялық режиміне тиісті құрумен, олардың салуының және орналасуының қолайлы жүйесімен, сақтау процесінде кәсіпорынның тұрақты бақылауы арқылы қол жеткізіледі.

Сақтауды жақсы ұйымдастыру кезінде:

өткелдерде тауарларды орналастырмайды;

оларды тым жоғары штабельдерге қосуға болмайды;

тауарды сақтаудың оптималды режимдерін қолдайды – ауаның температурасы және ылғалдығы, ауаның температурасын термометр құралдарымен немесе  дистанциялық бақылау жүйелерімен бақылайды, ал қоймалардағы ауаның ылғалдылығын өлшеу үшін гигрометрлер қолданылады;

ауаның температурасы мен ылғалдылығын жылулықты және вентиляцияны реттеу көмегімен реттеп отырады.

«Ақбозат» ЖШС қоймалық операциялары есеп жүйелерінің кемшіліктері:

Қиын технологиялық бау қоймаға түскен және қоймадан өндіріске жіберілген және жүктелген өнімнің мұқият есебін талап етеді.

Тауарлар есебі «Ақбозат» ЖШС қоймасындағы есептің ең маңызды бөлігі болып табылады. Бухгалтерлік есеп материалды құндылықтар, сонымен бірге өнімдер қозғалысын қадағалауға арналған. «Ақбозат» ЖШС-те тауарлы-материалдық құндылықтар қозғалысы есебінде әліде көптеген жетіспеушіліктер кездеседі. Есеп сомалық есептеуде жүргізіледі. Бұл барлық ассортимент бойынша қосымша тауарлар санын көруге мүмкіндік жасамайды. Қойма меңгерушісі материалдардың түсуін реттеу, қорда азайған тауарлар түрін қосымша сатып алу жұмыстарын жүргізу үшін барлық атауы бойынша кәсіпорын қоймасындағы қалдықтарды әрқашан көруге міндетті.

Бүгін кәсіпорында біз деректерді өңдеу жүйесінің әдеттегі түрін көреміз, мұнда қызметші құжат тігілетін папкаға деректерді қолдан енгізеді.

Тауар және қорды жүзеге асыру есебінің автоматтандырылған процесінің болмауы еңбектік және қаржылық ресурстарды рационалсыз қолдануға әкеп соқтырады.

«Ақбозат» ЖШС кәсіпорынында қазіргі уақытта тауарды жүзеге асыру және операциялар есебін жүргізудің кемшіліктері болып бухгалтерлік есептің қолдан жүргізілуі табылады, бұл бухгалтер және менеджер қызметін әлдеқайда бәсеңдетеді және қиындатады.

«Ақбозат» ЖШС қоймасына жеткізушілерден материалдардың қозғалуы жеткізу шарттары мен жүкті тасымалдау ережелерінде қарастырылған жолдама құжаттар: мәлімдеме (накладной) және есеп-фактурамен формаланады.

Кәсіпорынға мәлімдемеден бөлек жолдама құжаттардың үлкен көлемі келеді. Мәлімдемелерде 30-ға дейін атаулар болады.

Мәлімдемеде көшірменің нөмірі және күні; жеткізуші және қабылдаушы фирмалар атауы; өнімнің атауы және қысқаша сипаттамасы, оның саны (бірлік санда), бағасы және өнімді жіберудің жалпы сомасы (салық есебінің бағаға қосылуымен) көрсетіледі. Мәлімдеме екі экземплярға жазылады, жіберген және қабылдаған заттық жауапты тұлғалармен қол қойылады және өнімді жіберуші мен қабылдаушы кәсіпорындардың домалақ мөрлерімен сендіріледі. Бір экземпляр өнімні жіберушіде қалады, екіншісі өнімді қабылдаушыға беріледі.

Сонымен бірге есеп-фактур көп жүргізіледі. Есеп-фактур құрамы мәлімдеме құрамына ұқсас, сонымен бірге екі экземплярда жазылады (бірі өнімні жіберушіде қалады, екіншісі өнімді қабылдаушыға беріледі).

 

1.3 Техникалық тапсырма

 

Қазіргі уақытта «Ақбозат» ЖШС кәсіпорында тауарды іске асыру есебін жүргізудің кемшіліктері: бухгалтерлік есеп және менеджер жұмысы қолмен жүргізіледі, ал бұл болса бухгалтер және менеджер қызметін айтарлықтай төмендетеді және қиындатады.

Бүгін кәсіпорында біз деректерді өңдеу жүйесінің әдеттегі түрін көреміз, мұнда қызметші құжат тігілетін папкаға деректерді қолдан енгізеді.

Материалдар кірісі бойынша бірінші құжаттардың есебі жауапты тұлғамен тәуелсіз формадағы тауарлар түсімі журналында жүзеге асырылады, онда кіріс құжаттарының аттары, күні мен номері, құжат туралы қысқаша анықтама, құжаттың тіркелген күні, кіріс материалдары туралы ақпарат, тауар жабдықтаушылар туралы міндетті түрде болуы керек.

Қазіргі уақытта есепті қолдан жүргізудің тиімсіздігі мен артта қалуына байланысты қор операциялары есебін және өнімді іске асыру процестерін автоматтандыру мүмкіндігі пайда болды.

Тауарды іске асыруға және «Ақбозат» ЖШС менеджерінің жұмысының тиімділігіне арналған бағдарламалық қамтамасыздандыруды өңдеуге объективті қажеттілік туындады. 

 

БАҒДАРЛАМАЛЫҚ ҚАМТАМАСЫЗ ЕТУДІ ЖОБАЛАУ

 

2.1 Зерттеу объектісін талдау

 

Ақпаратты өңдеу процесі әрқашан негізгі адамдық қызмет және мұндай процестің ақпараттық ресурстармен бірігуі уақыт өте ақпараттық жүйелер деп аталына бастады. Ақпараттық жүйелер – бұл жинақтауға, сақтауға, дәлдеп түзетуге, іздеуді болдыруға, ақпаратты өңдеуге және беруге мүмкіндік беретін ақпараттық қорлар және процедуралардан тұратын комплекс. Есептеу техникасының пайда болуымен АЖ дамудың сапалы, революциялық процесін, бағдарламалық-техникалық комплекс және байланыс құралдары болып табылатын физикалық және функционалдық комплекстерді басынан өткізді.

Дамыған АЖ ұлттық және әлемдік ақпараттық орталарға интеграцияланған төтенше қиын адам-машиналық комлекстерді ұсынады. АЖ тиімділігі көп жағдайда оның сапасымен және қолданушының оған сенімділігімен анықталады. Өнімнің сапасы, жобалау процесі, өнімділігі және қызметі түгелдей ақпараттық технологиялар аймағына да жататын адам өмірінің деңгейін және ұлттық шаруашылық жағдайын анықтайтын тораптық мәселелердің бірі болып табылады. Ақпараттық жүйелерге келесі негізгі компоненттер жатады:

  • есептеу техникасының аппараттық құралдары;
  • телекоммуникацияның (байланыстар) аппараттық құралдары;
  • ААЖ реализациялау функцияларының бағдарламалық құралдары;
  • ақпараттық берілгендер қоры (БҚ);
  • регламентирленген функцияларды құжаттау және ААЖ барлық компоненттердің қолданылуы;
  • бағдарламалық-техникалық құралдармен қызмет көрсететін және қолданатын мамандар.

АЖ аппараттық компоненттері жетеліктей әмбебап мінезден тұрады және нақты ақпараттық технологиялардың функционалдық мәнінен айтарлықтай тәуелділігі төмен.  Бірақ оларды таңдауда әрқашан техникалық мінездемелер қатары, талдау және осы компоненттердің сынауы прибор жасаудың қиын аймақтарында өңделінген дәстүрлі әдістері және құралдарымен жетерліктей өткізілу мүмкіндіктері ескеріледі.  

АЖ қалған компонеттері адам қызметінің нақты аймағында мәселелерді шешу мәнін, функцияларын және сапасын анықтайтын оның ителлектуалды бөлігін құрайды. Бұл компоненттер мақсаттық өзгерістерімен, мәндердің қиын формалданатын және тексеруді терең зерттеу әдістерін талап ететін сипаттамаларының жоғары түрлілігімен ерекшеленуі мүмкін. [7].

Кез келген нақты АЖ көбінесе инфрақұрылым деп аталатын оны қоршаған ақпараттық ортада әрекет етеді. Ақпараттық жүйелердің инфрақұрылымында әдетте телекоммуникациялық желілерді және олармен байланысатын объектілер: серверлер, автоматтандырылған жұмыс орындары, желілік ақпараттық ресурстар каталогтарын және т.б. түсінеді. Түрлі сипаттағы ақпараттық қорлар (банктер және деректер қорлары) және басқа да ақпараттық құрылымдар ақпараттық ресурстар болып табылады.

Қазіргі кезде ААЖ инфрақұрылымының әсіресе телекоммуникациялық компоненттері тез дамуда. Бірақ, басында-ақ барабар технологиялар қосымшалары жоқ кезінде бейнеленетін компьютерлік желілер жағдайында қолданушы сұранысының әлсіздігі негізгі қиындық болып табылды.

Әлемнің барлық елінде көпсандық, нақты, қолданбалы жүйелерді өңдеуге көп құрал, қаражат жұмсалады және теориялық сұрақтарға мүлде аз көңіл бөлінеді. Негізінде, мұндай жолды кезінде автоматтандырылған басқару жүйесін құру және телекоммуникациялық технологиялар салаларындағы жұмыстарда да бұл керекті этап – «өсім сырқаты» болып табылды.

Жұмыс жағдайының концептуалды, жүйелік ойының керектігі кейбір пәндік салада күшіне енеді. Бұл саланың дамуының берілген этабында өзара әлсіз байланысқан білімнің, фактінің, мәселелер мен қызығушылықтардың көптеген мөлшері алынады.

Қиын перспективті автоматтандырылған ақпараттық жүйелерді бөлек өңдеуде құру процесі қызмет түрінің жоғары көптүрлілігін қосады және ғылыми-техникалық мамандар және политикалық және экономикалық мәселелерді қабылдайтын тұлғалар арасындағы өзара тар байланысты талап етеді.

Жинақталған тәжрибе АЖ келесі талаптарға жауап беруі керектігін көрсетеді:

– маманның ақпараттық және есептеу қажеттіліктерін уақытылы қанағаттандыру;

– қолданушы жауабы мен сұранысына минималды уақыт;

– қолданушы және оның сұраныстарына дайындық деңгейіне адаптация;

– жүйеде жұмыстарды қабылдау қарапайымдылығы және қатынас жеңілділігі;

– қызмет көрсетудің қарапайымдылығы және сенімділігі;

– қолданушымен қатынаста шыдамдылық;

– қолданушыны тез оқыту мүмкіндігі;

– есептеу желісі құрамында жұмыстардың болу мүмкіндігі.

Сонымен, жоғарыда айтылған қасиеттерді қолдайтын және берілген талапқа жауап беретін бағдарламалық қамтаманы өңдейміз. Біріктірілген үлкен көлемді әртүрлі ақпараттар туралы мәлімет қажеттілігі, әртүрлі және көбінесе  қарсы мақсаттардың және назарлардың үлкен сандарының бірігуіне қажеттілік туындайды. [8].

 

2.1.1 Өңделінетін бағдарламалық қамтамасыз етуді тағайындау

 

Қор операцияларының есебін дұрыс құрастыру үшін және өнімді жүзеге асыру үшін келесі мәселелер қажетті болып табылады:

жеткізушілер және партия бөлігінде материалдардың қоймаға түсу есебі;

кәсіпорын ішіндегі материалдардың жылжу есебі;

дайын өнімді жүзеге асыру есебі;

партия және жеткізулер бөлігінде материалдар үшін жеткізушілермен есеп айырысу есебі.

Әрбір мәселені бөлек-бөлек қарастырайық.

Қоймаға материалдардың түсу есебі материалдардың кімнен түскендігін, материалдардың қашан келгендігін, қандай бағамен, материалдардың жарамдылық мерзімін, түскен материалдар үшін төлем мерзімін міндетті түрде ескеруі керек өте жауапты мәселе.

Кәсіпорын ішіндегі материалдардың жылжу есебі келесілерді білуге керек:

өндіріске қандай материалдар және қандай мөлшерде беріледі;

қоймада және өндірісте қалған материалдар.

Дайын өнімді жүзеге асыру есебі қандай өнім көбірек өндірілетіні және жүктелетіні, яғни көптеген сұраныстарда қолданылатындығы туралы мәліметтерді алуға көмектеседі.

Материалдар үшін жеткізушілермен есеп айырысу есебі аталған ақшалық қаражаттардың артық қолданылуынан жалтаруға және жеткізушілермен құруға көмектеседі.

Қойма операциялары есебін ұйымдастыру бойынша барлық есептерді және өнімді іске асыруды орталықтандырылған бухгалтериямен орындау қажет, себебі барлық қорды бір комплекске біріктіру мүмкіндігі жоқ.

Негізгі мәселе мүмкін кірісті максималды алу, яғни АРМ менеджерін құру болып табылады. Сонымен бірге қызмет пәні болып келесілер табылады:

- көтерме және бөлшек сауда;

- тауарды сату-сатып алуда делдалдық қызметтер;

- жабдықтау және өтім;

- қызметтің басқада түрлерінің орнатылған тәртіпте жүзеге асырылуы.

 

2.1.2 Құрылымдық жобалау

 

Бағдарламаны өңдеуде құрылымдық енудің маңызы автоматтандырылған функцияларға оның декомпозициясын (бөлшектеу) бекіту. Автоматтандырылған функциялар: мәселелерге бөлінетін өз кезегінде ішкі функцияларға ажыратылатын жүйе функционалдық ішкі жүйелерге бөлінеді. Бөлшектеу процесі нақты процедураларға дейін жалғастырылады. Осымен автоматтандырылған жүйе барлық компоненттері өзара байланысқан тұтас ұсынумен сақталады. [9].

Объекттің құрылымдық сұлбасы бағыныңқы жүйелерімен, мәселелерімен және бағынышты мәселелерімен 2.1 суретте көрстілген.

 

 

 

 

Сурет 2.1 – Объекттің құрылымдық сұлбасы

 

Кіріс ақпаратында әртүрлі тасымалдағыштарда орналасқан: дербес компьютер жадындағы алғашқы құжаттар, машиналық тасымалдағыштардағы мәселелерді шешуге қажетті барлық ақпарат түсіндіріледі.

Орынды кәсіпорыннан өндірістік кәсіпорынның кіріс ақпаратқа, теру әдістерін, тіркеу, тапсыру, сақтау және ақпаратты өңдеу, оның құрамы және уақытылы алынуы өндірістік процестерді тиімді басқаруына және шапшаңдығына тәуелді.

Дипломдық жобада өңделетін кіріс ақпарат үшін автоматтандырылған жүйелер болып табылады:

Кіріс операцияларын бейнелеуге арналған қолдан толтырылған кіріс мәлімдемелері. Бұл құжаттар жеткізушіден қоймаға материалдардың түсу есебі үшін қажетті.

Өндіріске материалдарды көшіруді бейнелеуге арналған: талаптама – мәлімдеме.

Шығын құжаттарын бейнелеуге арналған: қолдан толтырылған тауарлық мәлімдеме және есеп-фактура. Бұл құжаттар қоймадан өнімнің жүктелуін растайды.

Дайындау операцияларын формалау және материалдарды жасау үшін жеткізушілерді есептік құжаттарды қолданылады: есеп-фактура, тауарлы-транспорттық мәлімдемелер және т.б. құжаттар.

Қоймалық операциялар есебін және өнімді жүзеге асыру мәселелерін автоматтандырылған шешімін өңдеуде келесілер нәтижелік көрсеткіштер болып табылады:

Кіріс мәлімдемесін баспаға шығару;

Тауарлық мәлімдемені баспаға шығару;

Есеп-фактор баспаға шығару;

Кіріс бойынша журналды баспаға шығару;

Шығын бойынша журналды баспаға шығару;

Қордағы қалдықтар бойынша ақпартізім;

Мерзімі бойынша құжаттарды іздеу;

Жеткізуші бойынша құжаттарды іздеу;

Клиент бойынша құжаттарды іздеу;

Нөмірі бойынша құжаттарды іздеу;

Кәсіпорын қоймасына материалдық құндылықтардың кіріс есебі нәтижесінде біз машиналық шығын құжаттарын аламыз: Кіріс мәлімдемесі және есеп-фактура. Бұл құжаттар Кіріс, Жеткізушілер Анықтамасы, Материалдар Анықтамасы кестелеріндегі ақпараттарды өңдеу нәтижесінде алынады. Бұл құжаттар фирмада қалады және түсім материалдары есебі бойынша есептеулерді жүргізу үшін бөлек бумаға тігіледі.

Сонымен бірге материалдық құндылықтардың түсу есебі кіріс бойынша Журнал көмегімен жүргізіледі. Журналда барлық кіріс бойынша операциялар: көрсетілген мерзім бойынша операциялар, құжат нөмірлері, құжат сомасы және анықталған мерзімге жеткізушілердің атауы бейнеленеді. Кіріс бойынша Журнал Кіріс, кіріс бойынша Журнал сұранысы көмегімен Журнал кестелерін өңдеу нәтижесінде формаланады. Кіріс бойынша Журнал барлық кіріс мәлімдемелерінің регистрі болып табылады.

Делдалға тауарды жүзеге асыруда біз машиналық шығын құжаттарын: Шығын мәлімдемесі және есеп-фактура аламыз. Шығын мәлімдемесі және есеп-фактура Шығын, ГП Шығын, Клиенттер Анықтамасы, Өнімдер Анықтамасы кестелері ақпараттарын өңдеу нәтижесінде алынады. Бұл құжаттар дайын өнімді жүзеге асыру есебі үшін қажет. Құжаттардың бір көшірмесі клиентте қалады, ал екіншісі фирмада қалады.

Шығындар бойынша құжаттар Журналы белгіленген мерзімдегі, мысалы айдағы барлық шығын құжаттарын тіркеу мүмкіндігін береді. Журналда дайын өнімді жүзеге асыру мерзімі, жүзеге асыру құжаттарының нөмірі, жүзеге асыру сомасы және клиент атауы тіркеледі. Шығын бойынша құжаттар Журналы шығын бойынша есепті жүргізуге мүмкіндік береді.

Қоймадағы ТМЦ қозғалысы есебі мәселелерін автоматтандырылған шешімін өңдеу кезінде біз қоймадағы қалдықтар бойынша ақпартізім (ведомость) шығын машиналық құжатын аламыз. Берілген ақпартізім Қалдықтар кестесінде сақталынатын ақпараттарды өңдеу нәтижесінде алынады. Бұл кесте берілгендері әр тауар түскенде және әрбір шығында жаңартылады. Сондықтан олар кез келген уақытта белсенді болып қалады.

 Мерзімі бойынша құжаттарды Іздеу, жеткізуші бойынша құжаттарды Іздеу, клиент бойынша құжаттарды Іздеу, нөмірі бойынша құжаттарды Іздеу есептерін формалау кезінде Журнал кестесінің берілгендерін қолданады. Берілген есеп көрсетілген клиент және нөмір бойынша белгіленген мерзімдегі барлық құжаттарды бейнелейді.

 

 

2.1.3 Ағындық ақпараттық талдау

 

Ақпараттық қамтама астында (АҚ) классификациялау жүйелері және ақпаратты кодтау, құжаттардың бірыңғайлылық жүйесі, ақпараттық ағындар сұлбасы, сонымен бірге берілгендер қорын құру методологиясының бірге жинақталуы түсініледі. [10].

АҚ ішкі және сыртқы машиналық болып бөлінеді. Сыртқы машиналық ақпараттық қамтама есептеуіш техника құралдарын қолданбай адаммен түсінілетін формада ақпараттық жүйелерді функционирлеуге қолданылатын құжаттар жиынтығын өзімен бірге ұсынады. Ішкі машиналық ақпараттық қорға ақпараттық қамтаманың машиналық тасымалдағыштардағы берілгендерді қолдану жиынтығын ұсынатын бөлігі жатады.

 Ақпаратпен жұмыс кезінде керекті түсінік болып оның классификациясы табылады. Кез келген классификация әрқашан салыстырмалы. Бір және сол бір объект түрлі белгісімен немесе критерийімен классификациялануы мүмкін. Кей кезде сыртқы орта шартына тәуелді жағдайларда объект әртүрлі классификациялық топтарға тиісті болуы мүмкін жағдайларда кездеседі.

Анағұрлым жалпы белгілер негізінде: көріну орны, өңдеу сатысы, бейнелеу әдісі, тұрақтылық, басқару функциялары келесі классификацияларға келтіруі мүмкін [11]:

– кіріс ақпараты – бұл қандай да бір құрылымдық бөлімшеге түсетін ақпарат;

– шығыс ақпараты – бұл қандай да бір құрылымдық бөлімшеден түсетін ақпарат;

– ішкі ақпарат – бұл объект ішінде көрінетін ақпарат;

– алғашқы ақпарат – бұл объект қызметі процесінде тікелей көрінетін және алғашқы сатыға тіркелетін ақпарат;

– екінші ақпарат – бұл алғашқы ақпаратты өңдеу нәтижесінде алынатын және аралық немесе нәтижелік болуы мүмкін ақпарат;

– айнымалы ақпарат нақты сандық және сапалық сипаттарды қайтарады;

– тұрақты ақпарат – бұл өзгермейтін уақыттың ұзақ мерзімінде көптен қолданылатын ақпарат.

Өңделінетін деректер қоры кестелерінің құрамы мен құрылымы берілген жұмыстың 3 тарауында көрсетілген.

 

2.2 Бағдарламалық және аппараттық құралдарды таңдау мен негіздеу

 

Бағдарламалық қамтама (БҚ) – бұл мақсаттарды жүзеге асыруға және ақпараттық жүйелер мәселелеріне, сонымен бірге техникалық құрамдарды нормалы жұмыс жасауға арналған бағдарламалар комплексі [12].

Бағдарламалық қамтама құрамына жалпы жүйелік және арнайы бағдарламалық өнімдер, сонымен қатар техникалық құжаттамада кіреді.

Шығару жұмысын өңдеу кезінде мынадай бағдарламалық құралдар қолданылды: Windows операциялық жүйесі, MS Office бағдарламалық пакеті, Access деректер қорын басқару жүйесі, Интернет іздеулер бағдарламалары, Delphi және Akбоzaт.exe – «Ақбозат» ЖШС менеджерінің БҚ өңдеу өңделген бағдарламаларының визуальды ортасы.

 

2.2.1 Функциональды бағдарламалық қамтаманы таңдау

 

Windows туралы жалпы анықтамалар.

Microsoft корпорациясы үстелдік компьютерлерге арналған операциялық жүйелерді шығарудан дүниежүзі бойынша (рыноктың шамамен 90%) алдынғы қатарды иеленеді. Microsoft вице-президентті Стива Балмердің айтуы бойынша корпорация аппараттық құрылғылары жоғары санды Windows орнатуға талпынуда. Сонымен қатар Microsoft Windows-ты кейбір тұрмыстық жүйелерге, мысалы телевизорға арнайы бейімдендіруге қабілетті [13].

Microsoft фирмасы шығарған MS DOS алғашқы дисктік операциялық жүйе 80-ж басында пайда болды. Ол пернетақтадан командаларды символдық енгізумен негізделген жабайы қолданушылық интерфейстен тұрады.

Ал сол уақытта құрастырылған Apple фирмасының Mackintosh типті компьютерлеріне арналған операциялық жүйе игеруде әлдеқайда көрнекті және жеңіл графикалық интерфейстен тұрған. Ол командаларды сақтауды талап етпеген және белгі түрінде бейнеленген файлдар және каталогтармен жұмыс істеуге мүмкіндік берген.

MS-DOS қолданушылық интерфейстің кемшіліктері Microsoft-тың 1985ж  Windows графикалық қабықшасының алғашқы версиясын шығаруына түрткі болды. Бірақ сол кездегі аз қуатты IBM PC-бірлескен компьютерлер графикалық ортаның толыққұнды жұмыс жасауын қамтамасыз ете алмаған.

1990ж алдынғы қарастырылған версияға қарағанда қызметтердің айтарлықтай жоғары комлексін ұсынатын Windows 3.0 пайда болды.  Формальды жағынан Windows толыққұнды операциялық жүйе болмаған – ол өз түйіні және графикалық интерфейсімен  MS-DOS жүйесінің түйіні мен командалық процессорын салып бітірді және MS-DOS алдын ала тиеуісіз жұмыс істей алмайтын еді.  

Рынокта Windows-тың қозғалуына маңызды мағына бағдарламалық фирмалардың басым көпшілігі соған арнап өз бағдарламаларын өңдей бастағаны болып табылады. Microsoft сонымен бірге Windows арналған өз бағдарламалық өнімдерін шығарды, мысалы атақты текстік редактор Word немесе кестелік процессор Excel.

1992ж сәуірде экрандық объектілерді тышқанмен басқару мүмкіндіктері сәтті кеңейтілген Windows 3.1 пайда болды.

1995ж  Windows95 атын алған Windows-тың кардиналдық жаңа версиясы пайда болды. Бұл толыққұнды операциялық жүйе болды. Оны көп мақсатты режимде жақсатылған жұмысы, қабылдамауға жоғары тұрақтылықтылық және жүйелік ресурстарды көбірек орынды қолданылуы ерекшелейді. Windows95-те қазіргі мезетте қандай қосымшалар қосылып тұрғанын көрсетуге мүмкіндік беретін Жіберу (Пуск) батырмалы мақсаттар панелі пайда болды.

1998 жылдық бақылаудан кейін Windows98 пайда болды. Ол алдынғы Windows95 өнімдерінің барлық жаңартуларынан тұрады, бірақ әлдеқайда өнімді және тұрақты, компьютердің энергияны төмен қолдану режиміне ауыстыруға мүмкіндік береді, Интернетпен жұмысқа арналған құрылғылардан және сканер мен цифрлық камералар сияқты графикалық ену құрылғыларынан тұрады.[14].

Бірнеше уақыттан кейін жаңа редакция Windows98 – Second Edition (SE) пайда болды, ал 2000 жылдың екінші жартысында Microsoft Windows Millennium Edition (қысқартылғанда Windows Ме) операциялық жүйесі сатуға шығарылды. Олардың екеуіде бұрынғыдай  MS-DOS негізделеді.

Windows Ме айрықша ерекшеліктері –  Microsoft Office 2000 офистік қосымшасымен тығыз ықпалдастық, басқа фирмалар құрастырған бағдарламалардың үлкен мөлшерімен жұмыс, Интернетті тиімді пайдалану мүмкіндігі. Бұл операциялық жүйемен мультимедиа, телефон, факс, диск, сонымен бірге локальды желі және Интернетпен жұмыстарға арналған бағдарламалар жеткізіледі.

1993 жылы үйдегі қолданушыларға арналған операциялық жүйемен қатар Microsoft мамандалған қолданушыларға арналған компьютерді ақпаратты қамтамасыз етуді көбірек жоғары талап ететін өте жаңа графикалық операциялық жүйе Windows NT3.1 шығарды. Бұл жүйенің негізгі ерекшеліктері: әртүрлі аппараттық платформалар арасында тасымалдаушылық, жалпы 32-разрядты көппроцессорлық жүйелерді қолданады. Бұл операциялық жүйелер желіде және басқару құрылғыларымен жұмысты қамтамасыз етеді. С2 стандартты деңгейімен АҚШ Министрлер қорғанысымен қорғауды қамтамасыз етеді. Осы стандарттың кейбір талаптарын айта кетейік:

• сақталған ақпараттарға бөлде адамдардың енуіне мүмкіндіктің болмауы үшін компьютерді парольмен қорғау;

• әрбір қолданушының барлық қызметінің жеңілдетілуі;

• сыртқы әсер етуден жүйелерді қорғау;

• файл деңгейінде ену құқықтарын шектеу.

1996 жылы Windows95 ұқсас қолданушылық интерфейстен және Интернетке шығуға арналған құралдардың толық жинағынан тұратын NT операциялық жүйе ұрпағының жаңа версиясы Windows NT 4.0 пайда болды. Оның жалғасы ретінде үшінші мыңжылдықтың операциялық жүйесі деп аталатын Windows2000 пайда болды.

Дербес компьютердің өнімділігіне, сенімділігіне және функционалды мүмкінділіктеріне орнатылған операциялық жүйенің әсері сияқты оның аппараттық мінездемелеріде (процессор моделі, оперативті жады көлемі және т.б.) әсер етеді. Операциялық жүйе – бұл қосымша бағдарламалар жұмысын басқаратын, аппараттық құралдар ресурстарын (процессорлар, жадылар, дисктік кеңістіктер және сыртқы құрылғылар, мысалы принтерлер немесе факстар) тарататын және қолданатын бағдарлама.

Windows 2000 – Интернетті қолданушылар талаптарын есептей отырып өңделген графикалық қолданушылық интерфейсті, жоғары өнімді, сенімді, әмбебап, көпағынды, көпмақсатты 32-разрядты операциялық жүйе. Ол офистік қосымшалы, ойындық және көңілді бағдарламалары бар үстелдік және тасымалдаушы (notebook) компьютерлерде жұмыс істейтін қолданушыларға арналаған.

Көпағындық бір процессор рамкасында бірнеше операциялардың бір мезгілде орындалуымен түсіндіріледі. Мысалы, егер сіз Microsoft Excel көпағынды бағдарламамен жұмыс істеп отырсаңыз, онда сіз бір мезгілде бір электронды кестені баспадан шығарып, екіншілерін жөндеп отыруыңызға болады. Ағындардың бір-бірінен тәуелсіз орындалуынан жүйелердің өнімділігі артуда.

Көпмақсаттық дегеніміз операциялық жүйелердің бір мезгілде бірнеше мақсатты орындау мүмкіндігі. Мысалы, сіз текстік редакторда құжатты редакциялауыңызға, электронды кесте есептерін орындауыңызға және компакт-дискте жазылған әндерді тыңдауыңызға болады. Операциялық жүйе процессор жұмысын бақылайды және егер жіберілген мақсат ресурсқа қажетсінсе, онда оның орындалуы сол ресурсты алғанға дейін тоқтатылуы мүмкін.

Көпқолданушылық режим. Егер компьютерде бірнеше адам жұмыс жасаса, онда олардың әрқайсысы Қолданушы аты және Паролі өрістерінде өзінің мәліметтерін енгізгені дұрыс. Бұл әрбір қолданушыға өзінің белгілер жинағын, бағдарламалар тобын құруға, жеке түрлі-түсті сұлбасын беруге, мақсаттар панелін қолайлы жерге орналастыруға және Жіберу мәзіріне жаңа пунктерді қосуға мүмкіндік береді.

Windows компьютерлерімен қолданушының тиімді «қарым – қатынасы» негізінде әртүрлі объектілерден: жұмыс үстелі, терезелер, бумалар, белгілер және т.б. тұратын графикалық қолданушылық интерфейс арқылы жүзеге асырылады.  Файлдардың, бумалардың және компьютердің әртүрлі құрылғыларының нақты аттарын есте сақтаудан гөрі, қолданушыға олардың белгілерін қолдану әлдеқайда ыңғайлы.

Құжатты – ориентирленген енуді жүзеге асыру құжаттар мен жұмыс жасайтын бағдарламалармен емес, сол құжаттармен шоғырлануға мүмкіндік береді. Мысалы, дыбыстық файлды тыңдау үшін Windows Media (Windows Media Player) дыбыстық бағдарламаны қоспай-ақ файл белгісіне екі рет шерту жеткілікті.

Windows графикалық интерфейс WYSIWYG (What You See Is What You Get – сіз нені көрсеңіз, соны аласыз) принципін жүзеге асырады. Бұл принципке сәйкес экрандағы сурет біз баспаға шығарғанда алған бейнеге ұқсас.[15].

Операциялық жүйенің жоғары сенімділігі әрбір жіберілген 32-разрядты қосымша үшін бөлек адрестік кеңістікті белгілеу есебінен қамтамасыз етіледі. Қосымша басқа қосымша жадының аумағында қолданыла алмайды немесе өте көп процессорлық уақытты алады. Қандайда бір қосымшаның апаттық тоқтатылуы басқа бір қосымшаның жұмысы кезінде білінбейді.

Windows компьютерге қосылған құрылғылар мен платтардың аттары және мінездемелерін автоматты түрде анықтауды, сонымен бірге сәйкес драйверлерді автоматты түрде жүктеуді қамтамасыз ететін Plug and Play технологиясын қолдайды. Оперативті жадыны алмауы үшін және жүйелік ресурстарды босатуы үшін құрылғыны өшіру және оның драйверін орнату сәйкес бекітіледі. Plug and Play жаңа құрылғыларды орнатуды жеңілдетеді, егер ол бұл стандартты қолдамайтын болсада. Plug and Play кемшілігі аппараттық құрылғылар сұранысы кезінде компьютерді жүктеуде периодтың жоғарылауынан тұрады.

Intel MMX технологиясы (MultiMtlia extension – мультимедиялық кеңейтілу) Windows2000-та жүзеге асырылған, аудио және видео мәліметтерін өңдеу процесін тиімдейді, модем немесе аудио жүйемен өзара байланысы кезінде процессордың жүктелу уақытын қысқартады. Жаңа технология 220 командадан тұратын процессордың стандартты жинағына және де 57 жаңа команда қосты. Бұл командалар циклдарды орындауды жылдамдатады және берілгендерді өңдеу өнімділігін жоғарылатады. ММХ технологиясы әртүрлі ойындарда кеңінен қолданылады.

USB әмбебап жүйелі шина (Universal Serial Bus) – бұл Microsoft, Intel және Compaq компаниялары шығарған жаңа стандарт. Ол жүйелі интерфейс бойынша құрылғылардың өзара байланысын қамтамасыз етеді және бір ауыстырып-қосқышпен дербес компьютердің барлық порттарын ауыстыруды ұсынады. Бір USB портқа 127 сыртқы құрылғыларға дейін қосуға мүмкіндік береді. Мысалы, сіз бір USB портқа бір мезгілде бір ауыстырып-қосқыш арқылы монитор, видеокамера, сканер және принтерді қоса аласыз. Цифрлық камералар және сканерлер токты қосымша қоректену көздеріне қосылусыз USB ауыстырып-қосқыштан алады. Мәліметтерді алмасу жылдамдығы 12 Мбит/с дейін жетуі мүмкін. USB құрылғыларына қосылу үшін драйвері бар диск және компьютерді қайта қосу талап етілмейді [16].

Windows Ме PCI (Peripheral Component Interconnect) шиналары кезінде бірнеше монитормен жұмыс жасауға мүмкіндік береді. Оларды әртүрлі қосымшаларды бейнелейтін үлкен бір монитор ретінде немесе бір құжат бөлігі ретінде орнатуға болады. Дисплейлер әртүрлі кеңейтулер және кадрлар жиілігінен тұруы мүмкін. Бірден бірнеше экрандар эксплуатациясы жұмыс аумағының өлшемін үлкейтуге мүмкіндік береді. Бұл столдық типографиялармен жұмыс жасайтын, веббеттерді құрыстыратын, видеофайлдарды жүзеге асыратындарға өте ыңғайлы. Ойындарда алды, оңы, солы, арты перспективаларын құру үшін бірнеше монитор қолдануға болады. Бір мезгілде бірнеше монитормен жұмыс жасау үшін сәйкес видеоадаптерлер (қазіргі кезде – графикалық адаптерлер PCI).

Модем немесе желілік карта қолдана отырып сіз желіге қосыла аласыз және көрші бөлмеде, басқа ғимаратта немесе тіпті басқа қалада орналасқан, бірақ сіздің компьютеріңізбен бір жерде тұрған сияқты әртүрлі құрылғыларды, мысалы принтер немесе сканер іске қоса аласыз. Internet Explorer мен операциялық жүйе интеграциясы локальды желідегі және World Wide Web компьютерде орналасқан құжаттармен жұмыста ерекшеліктерді жояды. Internet Explorer арқылы операциялық жүйе веб-түйінмен жұмыс үстеліне ақпаратты жеткізуді қамтамасыз ететін активті каналдар технологиясын жүзеге асырады.

Мамандандырылған қызметке арналған офистерде Microsoft Windows2000 қолдануды ұсынады. Операциялық жүйе таңдай отырып, мынаны ұғу қажет. Windows Ме қарағанда Windows 2000 Professional бизнес қажеттіліктеріне жақсы сәйкестеледі. Ол сенімді, компьютердің тұрақты жұмысын қамтамасыз етеді, файлдар мен бумалар қорғанысын жақсырақ қамтамасыз етеді, бірақ Windows 2000 Professional компьютерлер ресурстарына өте талапты: ол дискте көп орынды алады, оперативті жадыны көбірек талап етеді және т.б.

 

2.2.2 Арнайы бағдарламалық қамтаманы таңдау

 

Қанша бағдарламалау бар болса, сонша онда әрқашан түсетін, бірақ түбінде шығатын түкпірлер кездеседі. Түкпірлердің бірі немесе кризистердің бірі қолданушының графикалық интерфейсін өңдеумен байланысты жұмыста кездеседі. Әдетте айналған кейбір қарапайым терезелерді, батырмаларды, мәзірді, тышқан және пернетақта оқиғаларын өңдеуді, бағдарламаға сурет және ән қосуды қолдан бағдарламалауға бағдарламалаушының көптен-көп уақытын талап еткен. Жағдайлар қатарында бұл барлық сервис бағдарламалық кодтардың 80–90% көлемін алуды бастады. Бұл барлық еңбек жиі босқа түскен жоқ, бірақ бір жылдан кейін қабылданған графикалық интерфейс стилі басқасымен ауыстырылды және барлығын қайтадан бастауға тура келді.

Бұл жағдайдан шығу екі жағдай көмегімен анықталады. Біріншісі – мысалы, Windows-тағы және т.б. кітапханаларды қолдану мүмкіндігінен пайда болған интерфейстің көптеген функцияларын стандартизациялау қосымшаның графикалық интерфейс стилін ауыстыру нәтижесінде (мысалы, Windows 3.х-тен Windows 95-ке өткенде) қандайда бір қайта бағдарламалаусыз автоматты түрде жаңа жүйеге икемделе алатын болды. Бұл жолда бағдарламалаудың технологиясын толық жетілдірудің керекті мәселелерінің бірін, яғни кодты қайта пайдалануды шешуге арналған керемет шарттар құрылды. Қайбір кезде өңделген қалыптар, компоненттер, функциялар әртүрлі мәселерді шешу үшін кейін бір рет емес, бірнеше рет қолданылуы мүмкін. Әрбір бағдарламалаушы басқа бағдарламалаушылар жұмысына және әртүрлі фирмалармен құрылған үлкен кітапханаларға ену мүмкіндігін алған. Және де әртүрлі алгоритмдік тілдерде өңделген бағдарламалық қамтамалар сәйкестігі қамтамасыз етілді.

Екінші бағдарламалар өмірін түбегейлі жеңілдеткен революциялық қадам Visual Basic-те көрінген және  Borland фирмасының Delphi және C++Builder-де  жалтыраған іске асыруды тауып алған визуальды бағдарламалаудың пайда болуы болды.

Визуальды бағдарламалау алдындары айлар бойы жасайтын жұмыстарды минут немесе сағат ішінде орындауға мүмкіндік беретін қолданушы интерфейсін қарапайым және көрнекті процедураға жобалауды келтіруге мүмкіндік береді. Delphi-дің дамыған түрінде бұл былай көрінеді.

Сіз Delphi Өңдеудің Интегралданған Ортасында (ӨИО немесе Integrated development environment – IDE) жұмыс жасаудасыз. Орта сізге компоненттер орналастырылатын формалар (қосымшада олар бірнеше болуы мүмкін) ұсынады.  Әдетте бұл терезелік болып, бірақ көрінбейтін формалар болуы да мүмкін. Формаға тышқан көмегімен Delphi кітапханаларындағы компоненттер пиктограммалары тасымалданады және орналастырылады. Қарапайым манипуляция көмегімен сіз осы компоненттердің өлшемін және орнын өзгерте аласыз. Осымен сіз жобалау процесінің барлық уақытында нәтижені, яғни форма және онда орналасқан компоненттердің бейнеленуін көре аласыз. Қосымшаны бірнеше рет жіберуді және терезелер мен компоненттер өлшемін таңдауға қам жемесеңізде болады. Жобалау нәтижелерін сіз бағдарламаны компиляцияламас бұрын, тышқан көмегімен қандайда бір операцияны орындаудан кейін-ақ көре беруіңізге де болады.

Бірақ визуалды бағдарламалау дәрежесі бұған сәйкес келмейді. Ең бастысы форманы жобалау және оған Delphi компоненттерін орналастыру кезінде оған берілген компонентті сипаттайтынын сәйкес фрагменттері қосылған бағдарламалардың коды автоматты түрде формалау болып табылады. Одан кейін қолданушы сәйкес диалогтық терезелерде осы компоненттердің үнсіз жағдайда берілген қандай да бір қасиеттерін өзгерте алады және керек жағдайда қандай да бір оқиғалардың өңдеуіштерін жаза алады. Шындығында, жобалау – формаға компоненттерді орналастырумен, оның кейбір қасиеттері мен жобаларын, қажет жағдайда оқиға өңдеушілерін берумен сәйкес келеді.

Компоненттер қосымша жұмысы кезінде көрінетін визуальды және сол не басқа қызметтік функцияларды орындайтын визуальды емес болуы мүмкін. Визуальды компоненттер қолданушы қосымшаны орындау кезінде қандай түрде көрсе, жобалау процесінде экранда бірден бейнеленеді. Бұл оның орналасу орны мен дизайнын – формасын, өлшемін, сәндеуін, мәтінін, түсін және т.б. өте жеңіл таңдауға мүмкіндік береді. Визуальды емес компоненттер жобалау процесінде пиктограммалар түрінде формада көрінеді, бірақ кадр артында сол үшін өте пайдалы жұмыс атқарғанымен қолданушыға қосымшаны орындау кезінде олар көрінбейді.

Delphi визуальды компоненттері кітапханаларында көптеген компьютерлер типі қосылған және олардың номенклатуралары версиядан версияға өте жылдам кеңейтіледі. Кез келген ең мәнді қосымшаны іс жүзінде құру үшін жаңа компоненттерді құруға асықпай-ақ қазіргі барларыда жеткілікті болады. Мұнда ең тәжрибесі жоқ алдынғы қадамын жасап жатқан бағдарламалаушыда тәжрибелі маман жасағандай көрінетін қосымша құруы мүмкін.

Өздігінен компонент құру жеткілікті жағдайда жеңіл, сондықтан да дүниежүзінде бүгінгі күні әлдеқайда әйгілі RAD-ортаға арналған мыңдаған ақысыз және ақылы компоненттер таралуда, олардан компоненттер кітапханасы – объектілі депозитарийлер формаланады. Компоненттер бар-жоғы он қатар шығыс кодын жазып, бай мүмкіндіктермен дайын қосымшаны топтауға мүмкіндік беретін «құрылыстық кірпіштер» рөлінде алға шығады және мұндай компоненттік ену бағдарламаларды құруға өте перспективті болып саналады, себебі артық күшсіз және заңды негіздерсіз бөгденің еңбегін қайта пайдалану рұқсат етілген.

Қосымшаларды тез өңдеу жүйелері.

Визуальды объектілі – ориентирленген бағдарламалау қосымшаны тез жасау RAD атағын алған технологияны құруға қабілетті. Бұл технология Delphi-де кіретін жүйелі бағдарламалаудың жаңа ұрпағы үшін де мінездемелі.

Дүниежүзінде бірінші қарапайым және көрнекті интерфейс Visual Basic ортасы болды. Ол тышқан көмегімен қолданушы интерфейсін көрнекті конструктирлеу мүмкіндігін беретін компьютер мен бағдарлама өңдеушісінің өзара байланысының жаңа стилін формалады, алдыңғы уақытта қарапайым емес жолмен: кодтарды жазу, олардың трансляциясы мен бағдарламаның орындалуынан кейін ғана оның экранда қалай бейнелетінін көруге болады.

Бірақ Visual Basic-ке кең сұраныс болды және көптеген жағдайлардан бос емес, онда өте сыналмаған адамдарға араналған бағдарламалаудың жаңа әлемін ашуға көмектесті. Олардың негізгілері - өңделіп жатқан қосымшаларды орындау кезіндегі төмен өнімділік, тілдің объектілі ориентирленуі және қалдықтың жетіспеушілігі, қуатты тиімді қосымшаларды құруға емес сапасыздарының тез өңделуіне қабілетті, сонымен бірге жетіспеушіліктердің басқада қатарлады.

Delphi – бұл қосымшаны тез өңдеу ортасының дамуындағы келесі қадам. Ол Visual Basic-те табылған көптеген ақауларды жөндейді. Delphi өңдеушілері бір қарағанда Visual Basic ортасына ұқсас, бірақ шын мәнінде одан әлдеқайда жақсы құрал құрастырды.

Delphi Object Pascal тілінде негізделеді. Borland фирмасының Паскаль (Turbo Pascal 1.0 бастап) ұрпағының тіліндегі компиляторлар ең жылдам компиляторлардың бірі болып табылады. Қазіргі кезде Object Pascal – бұл жақсы компилятор түріндегі мықты тіректі объектілі – ориентирленген тіл.

Object Pascal-да Delphi қосымшасын ориентациялау өңдеуші мүмкіндіктерін ешқандай тарылтпайтығын ескерген жөн. Delphi қосымшалары басқа тілдерде, яғни С++ және ассемблерде де өңделген жұмыстарды қолдануы мүмкін. Басқа фирмаларда, атап айтқанда, Microsoft немесе тәуелсіз өңдеушілер құрастырған кітапханаларда қолданылуы мүмкін. Қосымша қатарын орындауды қолдайтын өздігінен орындалатын файлдан немесе пакеттер түріндегі өз жұмыстарыңызды да жүзеге асыруыңызға болады.

Delphi-дің негізгі мәселелерінің бірі туралы бөлек айту керек – деректер қорымен жұмысқа арналған қосымшаларды өңдеуде.  Delphi бұл аумақта деректер қорын басқарудың кез келген жүйелерімен жұмыс істей отырып, ең алдынғы позицияларды алады.

Delphi  құрылғыларымен деректер қорын қолдау

Деректер қоры Delphi-дің негізгі бөлігі болып саналады. Бұл шыныменде солай. Бірақ бұл тіл осы сфера үшін арнайы құрылмасада, иұндай деректермен жұмыстарды жүзеге асыру таңдандырады. Тіпті деректер қорымен жұмысқа арналған арнайы тілдер (яғни MS Visual FoxPro ұқсас) міндетті түрде осы типті бағдарламалардың қарапайымдылығы және қуаттылығы жағынан артта қалады.

Delphi барлық қиыншылықтарын жасырады және сол уақытта ең керемет қуат береді. Delphi-де әліге дейін мұндай қысқа уақыт аралығында жүзеге асыра алмаған есебім болмаған. Ең бастысы, бұлардың барлығы түсінуге өте ыңғайлы және жеңіл жүзеге асырылған.

Delphi Access деректер қорын және ең қарапайым және кеңінен тараған dbf және paradox қорларын қолдайды. Соңғылары сенімсіз болып саналады, оларда бағдарламаның жұмысқа қабілетсіздігіне әкелетін индекстік бүтіндік үнемі бұзылып тұрады.

Бұдан он жыл алдын деректер қорын бағдарламалау өте қиын мәселе болатын. Бұл мәселе аумағында қандайда бір жетістікке де көптеген бағдарламалаушылар өз уақытында докторлық дәреже алған. Қазір мұндайды елестету қиын, өйткені Delphi көмегімен бағдарлама жазу процесі қарапайымдалды, ал деректер қорының көптүрлілігінің саны әлдеқашан ондықтармен есептелінеді.

Деректер қоры жергілікті (клиенттің компьютерінде, бағдарлама жұмыс жасайтын жерде орнатылған) және өшірілген (өшірілген компьютерде, серверде орнатылған) болып бөлінеді. Серверлік деректер қоры өшірілген компьютерде орналасады және серверлік бағдарламалық қамтама басқаруымен жұмыс жасайды. Олардың негізгі артықшылықтарына бір деректер қорынан бір уақытта бірнеше қолданушымен жұмыстар мүмкіндігін апаруға болады және мұнымен желіге минимальды жүктеу жүзеге асады.

Тағы желілік деректер қоры бар, бірақ оларды біз қарастырып отырмаймыз, өйткені олар желіге аса үлкен жүктеу құрады және жұмыста бағдарламаушы үшін де, соңғы қолданушы үшін де ыңғайлы емес.

Клиент-серверлік технологияда клиент бағдарламасы серверге қандайда бір ақпарат алу үшін қарапайым текстік сұраныс жібереді. Сервер оны өңдейді және ақпараттың тек ғана керекті порциясын қайтарады. Егер қандайда бір ақпаратты өзгерту керек болса, тағыда серверге оларды өзгертуге сұраныс жіберіледі және сервер өз қорынан ақпараттарды өзгертеді. Сонымен, желі бойынша негізінен килобайттан аз орын алатын мәтіндік сұраныстарда ауытқу болады. Барлық берілгендер серверде өңделеді, бұл дегеніміз, клиент машинасы едәуір аз жүктеледі және ресурстарға қатты талапты емес. Сервер клиентке тек қана ең керекті ақпараттарды жібереді, бұл дегеніміз, барлық қор көшірмесін керексіз ауытқыту қажет емес.

Осылардың барлығының арқысында желілік деректер қоры әлдеқашан ескірді және іс жүзінде мүлде қолданылмайды. Оларды іс жүзінде толығымен клиент-сервер технологиясы ығыстырады. Ал жергілікті деректер қоры әрдайым қолданыста болады. Оларды сақтау форматы өзгеруі мүмкін немесе қандайда бір жаңа функциялар қосылуы мүмкін, бірақ деректер қорының өзі өзгермейді.

Деректер қоры кестесі – бұл берілгендері бағанға тізілген екі өлшемді массив (Excel кестесінен айқын мысал). Деректер қоры – өрескел тілде айтқанда, бұл бары-жоғы бірден бірнеше кестеге дейін сақталуы мүмкін файл. Жергілікті деректер қорының көбі тек бір ғана кесте (dBase, Paradox, XML) сақтауы мүмкін. Бірақ бір файлда бірнеше кесте (мысалы Access) орналастыруға болатын жергілікті қор ұсынушылар бар.

Реляциялы деректер қоры – бұл бағандары ретінде ондағы сақталған деректердің аттары алынатын кесте, ал әр қатар берілгендердің өзін сақтайды. Деректер қоры кестесі Excel (егер шынын айтатын болсақ, онда Excel деректер қорының технологиясы негізінде құрылған өзіндік форматы түрінде өзінің берілгендерін сақтайды) электронды кестесіне ұқсайды. Деректер қорының жергілікті кестелері жергілікті қатты дисктерде сақталуы мүмкін немесе файлдық сервердің желілік дискінде сақтау орталықтандырылған. Бұл файлдар  басқа кез келген файл сияқты стандартты құрылғылар көмегімен көшірілуі мүмкін, өйткені деректер қорының кестелерінің өзі белгілі бір орналасу орнына жалғанбаған. Негізгісі, бағдарламаның өз кестесін таба алуы.

Әрбір кестеде қатарды бір мағынамен теңестіретін бірегей бір өріс болуы керек. Бұл өріс кілттік деп аталады. Бұл өрістер бірнеше кестелерді өзара (мұнымен әлі алда танысатын боламыз) байланыстыру үшін өте жиі қолданылады. Бірақ тіпті егер сіздің кесте байланыспаған болсада, кілттік өріс бәрібір міндетті түрде керек. Кілт ретінде мүмкіндігінше сандық тип қолданған жөн және егер деректер қоры мүмкіндік берсе, онда жақсы болады, егер ол тип  "autoincrement" (автоматты түрде жоғарылайтын/ төмендейтін сан немесе санауыш) болса.

Деректер қорының кестесідегі бағандар атыда бірегей болуы керек, бірақ бұл жағдайда сандық болуы қажет емес. Оларды қалай атаса да болады, тек бірегей және саған түсінікті болса болды, ал қалғаны ешкімге қатысты емес.

Әрбір баған (деректер қорының өрісі) міндетті түрде анықталған типті болуы керек. Тип саны және оның көп түрлілігі деректер қорының типіне тәуелді, мысалы dBASE (DBF кеңейтілулі файлдар) форматы тек қана 6 типті ал   Paradox 15-ке дейін қолдайды.

Деректер қоры бір файлда (Access) немесе бірнеше (Paradox, dBase) файлда сақталуы мүмкін.Кеңірек айтқанда, кесте берілгендері әрқашан бір файда сақталады, ал қосымша ақпарат бөлек файлдарда орналасуы мүмкін. Қосымша ақпарат ретінде нақты өрістер үшін үнсіз жағдайда шектеу немесе мәндер тізімі болатын индекстер болуы мүмкін. Егер кем дегенде бір файл бүлінсе немесе өшірілген болса, онда берілгендер жүзеге асыруға қиындық туғызуы мүмкін.

Индекстер дегеніміз не? Кестедегі берілгендер өте жиі қандайда бір өрістерге ұшырап жатады, өйткені қандайда бір қатарға жүзеге асыру жүргізуден алдын, оны табу қажет болады. Тіпті анықтамалар ретінде қолданылып жүрген статикалық кестелер де сұраныстағы берілгендерді шығарудан алдын іздеу операциясына ұшырайды. Іздеу айтарлықтай көп еңбекті операция, әсіресе егер кесте өте көп қатардан тұрса. Индекстер осы процедураның үдеуіне бағытталған, сонымен қатар талдау кезінде бастапқы нүкте ретінде де қолданылуы мүмкін. Берілген этапта саған не индекстелмегеніне білу жеткілікті.

 Delphi-де қорлармен жұмысқа арналған бірнеше компоненттер жиыны орналасқан. Әрбір жиын айқын бір ьортадағы мәселені шешуге өте ыңғайлы. Олардың барлығы берілгендерге енудің әртүрлі технологияларын қолданады және мүмкіндіктері бойынша ерекшеленеді. Өзінің өнімдеріне тек қана өзіндік өңдеудің  ADO берілгендерге ену технологиясын өңдеуді қарастырған Microsoft өарағанда Borland формасы түрлі технологиялар арқылы жұмыс жасайтын түрлі құрылғыларды ұсынады және тек қана өзінің өңдеулерімен шектеп қана қойған жоқ. Заттардың былай орналасуы басқа бағдарламалаушылар алдында зор артықшылыққа ие болады.

Бұдан басқа кез келген жағдайда қолданыла алатын топтарда бар.Data Access бет белгісінде берілгендерге енудің негізгі компоненттері орналасқан.  Data Controls бет белгісінде кестедегі берілгендерді бейнелеу және жүзеге асыруға арналған компоненттер орналасқан.

BDE бет белгі Borland Database Engine деп аталатын Borland фирмасы өңдеген технология бойынша берілгендер қорына енуге мүмкіндік беретін компоненттерден тұрады. Бұл технология қатты ескірген және ол тек қана ескі версиялармен үйлесімділікте қолданылады. Бұған қарамастан, ол ескі берілгендер қоры типтері  Paradox және dBase – пен жақсы жұмыс жасайды.

DBExpress – бұл Borland фирмасының берілгендерге енудің жаңа технологиясы. Ол жоғарғы иілгіштігімен ерекшеленеді және берілгендер қоры қолданатын клиент серверлік қосымшаларды бағдарламалауға өте ыңғайлы. Бір атты бет белгі компоненттерін серверлік технология бойынша құрылған деректер қорымен, мысалы  Oracle, DB2 немесе MySQL қолдану ыңғайлы.

ADO (Active Data Objects) – Microsoft корпорациясы өңдеген берілгендерге ену технологиясы. Өте жақсы кітапхана, бірақ оны тек қана  Microsoft берілгендер қорымен, нақты айтқанда  MS Access немесе MS SQL Server – мен қолдану ұсынылады. Сонымен қатар оны қолдануға болады, егер тек қана ODBC арқылы жұмыс жасайтын деректер қорының арнайы сервері болса.

Access деректер қорымен жұмыс компьютерге Office бағдарламамен бірге орнатылатын немесе бөлек орнату ретінде жүретін DAO арнайы өңдеу арқылы жүзеге асырылады или идти как отдельная установка.

Microsoft Access релациялық деректер қорын ұсынады.

Access деректер қорында ақпарат бөлек кестелер түрінде ұсынылады. Мұнда кестелердің әрбір бағаны берілгендер өрісімен, ал әрбір қатар берілгендер жазбасымен сәйкес келеді.

Берілгендер жазбасы бірнеше өрістерден тұрады. Мұнда келесі ережелер жүргізіледі: берілгендер жазбасы бір бүтін ретінде қарастырылартын өзара байланысқан өрістер тобын ұсынады. Мысалы, берілгендер жазбасы нақты клиент немесе өнім жөнінде ақпараттан тұруы мүмкін. Кестедегі әрбір берілгендер жазбасы бірдей өріс санынан тұрады. Әрбір өріс ақпарат типінен тұрады.

Берілгендердің әртүрлі типтері бар. Нақты өріс берілгендер үшін берілгендер типі осы өрісте қандай ақпараттардан орналасуына байланысты таңдалады. Берілгендер өрісінің өдшемі оған таңдалынған типке байланысты анықталынады. Мәтіндік өрістер (TEXT): бөлек сөздерден (мысалы аттар), сөздердің және сандардың үйлестіруілерінен (мысалы пошталық адрес) немесе математикалық есептеулерге қолданылмайтын сандардан (мысалы сымтетік нөмірлері), сонымен қатар арнайы белгілерден ( «/» немесе «–») тұруы мүмкін. Сандық өрістер (NUMBER): әртүрлі есептеулерге (өнім бағалары) арналған сандардан тұрады. Дата және уақыт өрісі (DATE/TIME): дата және / немесе уақыттан тұрады. Ақшалық қосындылар өрісі (CURRENCY): ақшалық бірліктерді– р. (рубль), $ (доллар), DM (неміс маркасы) және т.б. белгілейтін ақшалық қосындылар форматындағы сандық өлшемдерден тұрады. Логикалық өрістер (YES/NO): ИӘ/ЖОҚ (YES/NO) немесе АҚИҚАТ/ЖАЛҒАН  (TRUE/FALSE) мәнді логикалық берілгендерден тұрады. Мәтіндік ескертулер өрісі (MEMO): үлкен мәтіндік аймақтардан тұрады ( 32 000 белгіге дейін).

Қолданушы сұранысты ұйымдастыруы мүмкін. Сұраныстар деректер қорынан қолданушыға қызықты ақпараттарды таңдау үшін қолданады. Берілгендер қоры кестесіндегі қолданушыға қызықты берілгендерді ыңғайлы динамикалық кестелер түрінде бейнелеу және ұсыну үшін қолданылатын таңдаудаң стандартты сұраныстары жиі қолданылады. Іс әрекеттерді орындау сұраныстары. Таңдаудың стандартты сұраныстарымен бірге оларды құру үшін қолданылған қорлар кестесіне әлдеқашан тәуелсіз болып кеткен жаңа нақты берілгендер кестелерін құру үшін қолданылатын іс әрекеттерді орындау сұраныстарын да атап айтуға болады.

Access – те деректер қорында сақталған ақпаратты енгізудің, жүзеге асырудың және көріп шығудың бірнеше әдістері бар. Олардың ішінде қарапайымы болып келесілер табылады: деректер қорының кестесін ашу немесе кестелік режимдегі сұраныс және берілген кестеге немесе сұранысқа тиісті берілгендердңі көріп шығуға, ескілерін өшіруге немесе жүзеге асыруға, жаңа жазбаларда енгізуге болады.

Бірақ тағы басқа әдіс бар – деректер қорындағы ақпаратты көрнекті ұсынуға арнайы арналған және берілгендерді енгізу ретінде және берілгендер қорында сақталған ақпараттарды қабылдау ретінде жеңілдете алуы мүмкін берілгендер формасын дайындау.

Есеп беруде қолданушы деректер қорынан алынған ақпаратқа оның анализі мен есептеулерінің нәтижесін қосып көрнекті түрде ұсынуы мүмкін. Қолданушы есеп беру макетін және оның сәндеуін таңдауға ерікті. MS Access – те есеп беру структурасының бірнеше стандартты компоненттері қарастырылған (атаулар, ескертулер, колонтитулдар, негізгі бөлім), бірақ есеп берудің нақ макеті қандай болатынын қолданушы шешеді.

2.2.3 Аппараттық құралдарды таңдау

Windows 2000 орнатылатын компьютерге бірнеше негізгі талаптарды атайық:

• 150 МГц  және одан жоғары тактілі жиілікті Pentium процессоры;

• оперативті жады 64 Мбайт төмен емес, оперативті жадының максимальдығы 4 Гбайт;

• қатты дискіде 295 Мбайт төмен емес бос орынның болуы;

• VGA видеоадаптері, Super VGA жоғары рұқсаттықты монитор ұсынылады. Мультимедия мүмкіндіктерін пайдалану үшін міндетті түрде 16 млн. түстен тұратын графикалық карта керек;

• дыбыстық карта;

• компакт-дисктерден оқу құралы;

• пернетақта, тышқан немесе басқа манипулятор;

• 3,5 дюймді иілгіш диск үшін дискжетек.

 

 

3 БАҒДАРЛАМАЛЫҚ КОМПЛЕКСТІ ЖҮЗЕГЕ АСЫРУ

 

3.1 Шешудің алгоритмін өңдеу

 

Модуль аралық интерфейс жұмыс алгоритмінің құрылымын 3.1 суретте көрсетілгендей түрде ұсынуға болады. 

 

 

 

 

 

 

 

 

 

 

Сурет 3.1 – Модуль аралық интерфейс жұмыс алгоритмі

 

Қолданушы интерфейсін құру кезінде келесі факторлар ескеріледі:  эксплуатация кезінде көрнектілік пен қарапайымдылық;

бағдарлама жұмысының сенімділігі;

жұмыстың жоғары жылдамдылығы.

Бұл интерфейсті құру үшін түрлі процедуралар құрылған, олардың сипатталуын толықтай кейінгі тарауларда қарастырамыз. Олардың жұмысын бағдарламаны пайдалану барысында тағайындау.

БҚ мәліметтер қорының құрылымы өзгеруі мүмкін. Мәліметтер қорын модификациялау үшін міндетті түрде Microsoft Office 2003 пакетінен Microsoft Access 2003 болу керек. Microsoft Office 2003 нұсқасынан төменгі нұсқалар көмегімен мәліметтер қорын модификациялау кезінде мәліметтер қорының индекстер деңгейінің сәйкессіздігінен міндетті түрде қиындықтар туындайды.

 

 

 

 

 

 

 

Сурет 3.2 – Басты мәзір құрылымы

 

Бағдарламаның басты мәзірін құру үшін 3.2 суретте көрсетілгендей TForm1 = class (TForm) компоненті қолданылды.

Өңделген бағдарлама модульдік құрылымда құрылған.

Төменде модульдер тізімі сипаттамаларымен және берілгендер құрылымымен көрсетілген:

 

3.1.1 Модульдер мен берілгендер құрылымының жұмыстарын сипаттау

 

Бағдарламалық модульдер мәселенің барлық конфигурациясының бір бөлігі болғанымен жалпы түсінікте дербес бағдарлама бола алмайды. Бағдарламалық модуль-бұл Жұмыстардың белгіленген кезеңіндегі мысалдарды орындау кезіндегі жүйенің шақыратын процедуралар мен функциялар текстерін орналастыруға арналған «контейнер». Сондықтан бағдарламалық модульде өзінің типін: «Модульдің басы» - «Модульдің соңы» сипаттауда формалды шекаралары болмайды.

Нақты бағдарламалық модуль орналасу орны функционирлеудің арнайы алгоритмдерін сипаттауды талап ететін мәселені конфигурациялау нүктелеріндегі конфигуратормен пайдалануға беріледі.  Бұл алгоритмдерді алдын ала ескерілген жағдайда жүйенің өзі шақыратын процедуралар немесе функциялар түрінде дайындау қажет. [20].

Әрбір бөлек бағдарламалық модуль жүйеде бір бүтін ретінде қабылданады, сондықтан бағдарламалық модульдің барлық процедуралары мен функциялары бір контексте орындалады.

Өңделген бағдарлама 15 модуль көмегімен ұйымдастырылды. Әрбір модульде нақты мәселелерді шешуге арналған түрлі функциялар мен процедуралар қолданылған. Әрі қарай әрбір модульді толығырақ қарастырамыз.

3.1 кестеде бағдарламалық модульдердің тізімі сипаттамаларымен және берілгендер құрылымымен көрсетілген.  

 

Кесте 3.1

Бағдарламалық модульдер тізімі

 

1

uContract

«Келісім» модулі

2

uContrag

«Контрагенттер»  модулі

3

uDiapason

«Келісім» модулі

4

uDM

Берілгендер модулі

5

uGoods

«Тауарлар» модулі

7

uGoodsGroup

«Тауарлар топтары» модулі

8

uIncome

«Тауар кірісі» модулі

9

uIncomeAll

«Тауар кірісінің статистикасы» модулі

10

uMain

«Басты қалып» модулі

11

uRealiz

«Тауарды жүзеге асыру» модулі

12

uRealizAll

«Тауарды сату статистикасы» модулі

13

uRep

Есеп беру мен құжаттарды қалыптастыруға арналған модуль

14

uRequisit

«Біздің реквизиттер» модулі

15

uStore

«Тауар қоймада» модулі

16

uSumToStr

Сандық қосындыны қатарлық қосындыға ауыстыруға арналған модуль

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Модульдер басты мәзір құралдары арқылы бір-бірімен байланысады.

Құрылған ДҚ реляциялық моделге негізделген. Өшірілген деректер қорына деректер қорының арнайы процессоры BDE (Borland Database Engine) арқылы енуге болады. BDE мәліметтерге енуді қамтамасыз ететін драйверлер жинағы мен динамикалық қосылған кітапханаларды ұсынады. BDE деректер қорының процессоры бағдарламаны өңдеу кезінде қолданылған Paradox типті мәліметтер қорының кестелерімен жұмыс істеуге әлдеқайда нәтижелі мүмкіндік береді. Бағдарламада кітап туралы барлық мәліметтерді енгізуге арналған dbase.mdb типті кесте қолданылады.

Бағдарламаны өңдеу кезінде Borland Delphi 7.0 келесі стандартты кітапханалары қолданылды:

Windows.pas, Messages.pas, SysUtils.pas, Variants.pas, Classes.pas, Graphics.pas, Controls.pas, Forms.pas, Dialogs.pas, Menus.pas, StdCtrls.pas, ExtCtrls.pas, Jpeg.pas, Buttons.pas.

Main_Unit.pas модулі – басты қалып, 3.3. суретте көрсетілгендей барлық қалған модулдермен байланысатын басты модуль болып табылады

Сурет 3.3 – Басты қалып терезесі

 

Берілген модуль келесі процедуралардан тұрады:

uses

  Forms,

  uMain in 'uMain.pas' {fmMain},

  uDM in 'uDM.pas' {DM: TDataModule},

  uGoodsGroup in 'uGoodsGroup.pas' {fmGoodsGroup},

  uGoods in 'uGoods.pas' {fmGoods},

  uRealiz in 'uRealiz.pas' {fmRealiz},

  uRealizAll in 'uRealizAll.pas' {fmRealizAll},

  uStore in 'uStore.pas' {fmStore},

  uIncome in 'uIncome.pas' {fmIncome},

  uIncomeAll in 'uIncomeAll.pas' {fmIncomeAll},

  uSumToStr in 'uSumToStr.pas',

  uRep in 'uRep.pas',

  uDiapason in 'uDiapason.pas' {fmDiapason},

  uContrag in 'uContrag.pas' {fmContrag},

  uRequisit in 'uRequisit.pas' {fmRequisit},

  uContract in 'uContract.pas' {fmContract};

 

3.1.2 Файлдық жүйенің логикалық және физикалық құралымы

 

Дипломдық жобада өңделінетін бағдарламалық қамтама бір пакет ретінде ұйымдастырылады. Пакетте құру және берілген бағдарламалық қамтамасыз етудің қолдауы мақсатында бірге жұмыс жасауға арналған түрлі мәндердегі файлдар жиынтығы қарастырылған. 

 

Пакеттің логикалық құрылымы

Жалпы логикалық сұлба өзара байланысқан барлық кестелері және сұраныстарымен 3.4 суретте көрсетілген. 

 

 

Сурет 3.4 – Барлық кестелер «бірдің көпке» қатынас типімен байланыстырылған

 

Пакеттің физикалық құрылымы 3.5. суретте көрсетілген

 

 

Сурет 3.5- Пакеттің физикалық құрылымы

 

AKBOZAT басты каталогы 3.6 суретте көрсетілгендей бір подкаталогтан тұрады.

 

 

 

Сурет 3.6 – Мәліметтер қорын сақтауға арналған BASE - каталог (*.mdb кеңейтілулі файл)

Мәліметтер қорының құрылымдары және кесте жолдары келесі кестелерде көрсетілген: 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10.

Кесте 3.2

Кестелер тізімі

 

 

GoodsGroup.DB

«Тауарлар анықтамасы» кестесі

 

Income.DB

«Кіріс статистикасы» кестесі

 

IncomeComp.DB

«Тауар кірісі» кестесі

 

Realiz.DB

«Тауарлар реализациясы» кестесі

 

RealizComp.DB

«Тауар сату статистикасы» кестесі

 

Requisit.DB

«Реквизиттер» кестесі

 

Кестелер кәсіпорыны:

 

Кесте 3.3

GoodsGroup.DB – «Тауарлар анықтамасы» кестесі

 

Id

Мәтіндік

Бірегей идентификатор

TypeName

Мәтіндік

Тауарлар топтары

 

Кесте 3.4

Contract.db – «Келісімдер» мәліметтер қоры

 

ContrID

Сандық

Келісім коды

NContr

Сандық

Контракт номері

Date1

дата

Жұмыстың басталу күні

Date2

дата

Жұмыстың аяқталу күні

Info

Мәтіндік

 

 

Кесте 3.5

Contragent.db – «Контрагенттер» мәліметтер қоры

 

ID

Сандық

Контрагент коды

Name

Мәтіндік

Атауы/ТАА

ContrType

Сандық

Контрагент типі

Adress

Мәтіндік

Контрагент мекен-жайы

Phone

Мәтіндік

сымтетік

Passport

Мәтіндік

Крнтрагент мәліметтері

Bank

Мәтіндік

Контрагент қай банкте жұмыс жасайды

RNN

Мәтіндік

Контрагенттің РНН

KPP

Мәтіндік

банктің соңғы есебі

 

 

 

 

Кесте 3.6

Goods. db – «Тауарлар» мәліметтер қоры

 

ID

Сандық

Артикул

GroupID

Сандық

Тауар категориясы

Name

Мәтіндік

Атауы

Unit

Мәтіндік

Өлшем бірлігі

PricePurch

Сандық

Сатып алу бағасы

PriceRealiz

Сандық

Реалиторлық баға

 

Кесте 3.7

IncomeComp.DB– «Тауардың кіріс статистикасы» мәліметтер қоры

 

ID

Сандық

Статистика коды

IncomeID

Сандық

Тауар кірісінің коды

GoodsID

Сандық

Тауар коды

QuantityInc

Сандық

Саны

QuantityRealiz

Сандық

Баға

PricePurch

Сандық

Реалиторлық баға

 

Кесте3.8

Realiz.db –  «Тауар реализациясы» мәліметтер қоры

 

ID

Сандық

Код

DDate

Дата

Тауар күні

ContrID

Мәтіндік

Келісім коды

 

Кесте 3.9

Realiz.db – «Тауар сату статистикасы» мәліметтер қоры

 

ID

Сандық

Код

RealizID

Сандық

Тауар реализациясының коды

GoodsID

Сандық

Тауар коды

Quantity

Сандық

Саны  

PriceRealiz

Сандық

Баға

 

Кесте3.10

Requisit.DB – «Кәсіпорын реквизиті» мәліметтер қоры

 

ID

Сандық

Код

RealizID

Сандық

Тауар реализациясының коды

GoodsID

Сандық

Тауар коды

Quantity

Сандық

Саны  

 

3.1.3 Класстардың интерфейсін сипаттау

 

Бағдарламада тек стандартты кластар (TObject, TComponent және т.б) және кітапханалар (System.pas, Forms.pas, Dialogs.pas және т.б.) қолданылады.

TComponent класы компоненттерді сипаттайтын барлық кластардың негізгі аталық класы болып табылады.

Қалыпты құру кезінде келесі стандартты компонеттер қолданылды: Standart қосымшасының компоненттері – TmainMenu, TLabel, TButton, TRadioGroup;

Additional қосымшасының компоненттері – TImage;

Win32 қосымшасының компоненттері – TPageControl;

DataAccess қосымшасының компоненттері – TDataSource;

DataControls қосымшасының компоненттері – TDBGrid, TDBNavigator;

DBE қосымшасының компоненттері – TTable;

QReport қосымшасының компоненттері – TQwickRep, TQRBand, TQRLabel, TQRDBText, TQRSubDetail.

 

3.2 Ақпараттық модульдер мен бағдарламаны толықтай жөндеу

 

Ақпараттық модульдер мен бағдарламаны толықтай жөндеу стектің, локальды айнымалылардың, регистрлардың және т.б. ағымдағы мәндерін жариялайтын жөндеу терезелерін шығарумен, негізгі қадамның нүктелерін қолданумен, қадамдық жөндеу жолымен Borland Delphi 7.0 ортасында жүзеге асырылады.

Синтаксистік қателер. Синтаксистік қателер компилятормен автоматты түрде анықталады. Табылған қателер туралы хабарлама редактордың төменгі жағында, шағын терезеде жарияланады. Қате туралы хабарлама бағытына екі рет шерткенде Delphi 6 жүйесі қате табылған қатарға көмескі жарық беріп тұрған редакторға қайта қосылады. Хабарламаның өзі қате туралы жетерліктей түсінікті ақпаратты сипаттайды

Логикалық қателер. Логикалық қателерді табудың, жоюдың, қайтарудың бірнеше әдістері бар. Әлдеқайда көп кездесетін қателерді бағдарламаның өзінің қадағалауын талап етуге болады. Бұл үшін жобаның баптауларында – ұқсас диалогтық терезе Project Options (Borland Delphi 6.0 орысша нұсқасында: Опция жобасы) командасымен шақырылады  – Compiler (Компилятор) қосымшасында келесі іс-әрекеттерді орындау қажет:

• Code generation (Код генерациясы) панелінде Optimization (Тиімдеу) жалаушасын белгілеу керек;

• Runtime errors (Орындау қателері) панелінде Range Checking (Аймақты тексеру), I/O Checking (Енгізу/шығаруды тексеру) және Overflow Checking (Толықтыруды тексеру) жалаушаларын орнату керек;

• Debugging (Жөндеу) панелінде Debug information (Жөндеуге арналған ақпарат), Local symbols (Локальды символдар), Reference information (Байланыстар туралы ақпарат), Assertions (Арыздар) және Use Debug (Жөндеуге арналған модульдер) жалаушаларын орнату керек.

Синтаксистік және логикалық қателерді табу үшін міндетті түрде бағдарламаны қадамдық әдісте жіберу керек. Егер қателер мұндай жолмен де түзетілген болмаса, онда қателерді табуға арналған берілгендердің үлкен массиві қолданылады. Сонымен бірге берілгендердің үлкен массиві бағдарламаны жұмыс қабілеттілігі мен оның жылдамдығын көрсетуге де қолданылады.

 

3.2.1 Бағдарлама интерфейсін құру

 

Бағдарлама интерфейсін құру үшін ауырлықты үлестіру үшін Delphi 7.0  визуальды компоненттерінің  TForm базалық класы қолданылды. Бағдарламаның қалыптарын құру кезінде осы кластың келесі стандартты компоненттері қолданылды:

– TmainMenu компоненті (басты қалып мәзірі)

Класс компоненті TMainMenu басты қалып мәзірін анықтайды. Қалыпқа осы кластың қажетіңізге қарай бірнеше объектісін орналастыруға болады, бірақ ол қалыптың Menu қасиетінде көрсетілгендің бірі ретінде қалыптың жоғарғы жағында мәзір қатарында бейнеленеді.

– TImage компоненті (суреттерді бейнелеу)

Бұл компонент Delphi қолдайтын кескіндердің үш типінің бірін: растрлық кескіндер, пиктограммалар немесе метафайлдарды қалыпта орналастыруға арналған. Бұл кескін типтерінің кез келгені де  picture компонентінің орталық қасиетінде орналасқан.

– TBitBtn компоненті (суретті батырма)

BitBtn суретті батырмалары бағдарламаны басқаруда кеңінен қолданылады. Жүйеде дайын үлгілер (шаблоны) жиынтығы бар. Батырмаға байланысты басқару алгоритмі OnClick өңдеуші оқиғасында жүзеге асырылады.

– TLabel компоненті (тексті бейнелеуге арналған белгі)

Класс компоненті TLabel (белгі) түрлі мәтіндік жазуларды қалыпта орналастыруға арналған. Бұл үшін компоненттің орталық қасиеті Caption қызмет етеді. Font  қасиеті көмегімен жазу түрлерін түрлендіруге болады.

– TPanel компоненті (Панель)

TPanel компоненті жалпы тағайындау контейнерін ұсынады. Онда тақырып болмайды және ол элементтерді функционалды топтастыруға ыңғайлы.

–TDBEdit компоненті (Редакторлау өрісі)

Компонент ағымдағы жазудың бөлек өрісіндегі мәнін редакторлауға мүмкіндік береді. Берілгендер көзі DataSource қасиетінде, керекті өріс DataField қасиетінде көрсетілген. Қосымша қасиет ReadOnly жазуды редакторлауды тиым салуға мүмкіндік береді.

–DataSource компоненті (Берілгендер көзі)

Қарапайым жағдайда, берілгендер қоры бір ғана кесте ұсынса, онда берілгендер қорымен жұмыс қосымшасы бір Table компонентінен және бір DataSource компонентінен тұруы қажет.  DataSource компоненті берілгендер жиынды DBGrid типті компоненттер байланысы үшін қызмет етеді. DataSet қасиеті арқылы берілгендер жиынының көзі анықталады.

– TTable компоненті (Берілгендер жиыны)

Table компоненті DataBaseName қасиеті арқылы ДҚ файлымен байланысады. Active қасиеті ДҚ-мен байланыс орнатады, ал false қасиеті байланысты тоқтадады. Table First, Next, Last компонент әдістері берілгендерді жиынмен орналастыруға мүмкіндік береді. Edit әдісі редакторлау режимінде берілгендер жиынын орнатады.

–DBNavigator компоненті (Навигатор)

DBNavigator компоненті берілгендер жиынын редакторлау мүмкіндігімен жазбалар бойынша орналастыруға мүмкіндік береді. DBNavigator компоненті көмегімен жаңа жазбаларды қосуға және керек емесін өшіруге болады. Компонентте DateSource компонентімен байланыс орнататын DataSource қасиеті орналасқан.

- DBGrid компоненті (Берілгендер кестесі)

DBGrid компоненті ұсынылған деректер қорын кесте түрінде қамтамасыз етеді. DBGridl компонентінің қасиеті бағдарлама жұмысы кезінде берілгендерде орындалуы мүмкін кестелер түрі мен іс-әрекеттерді анықтайды.   

 - TEdit компоненті (Бірқатарлы редакцияланатын мәтіндік өріс)

Бұл компоненттің орталық қасиеті компонентпен бейнеленетін қатардан тұратын Text қасиеті болып табылады. OnChange оқиғаны өңдеу көмегімен бағдарлама қолданушы енгізетін мәтінді басқара алады.

 - TDBComboBox компоненті (Тізімді берілгендер өрісі)

TDBComboBox тізімді берілгендер өрісі мәндерді ашатын тізімде өрістің жаңа мәнін көрсетуге және таңдауға мүмкіндік береді. Тізімді толықтыру Add, Append және т.б. әдістерімен, оның  Strings класының Items қасиетімен басқарылады.

- TPageControl компоненті (Қосымшалы беттер жиыны)

Бұл компонент TTabSheet класының бірнеше бірін-бірін жабатын беттерден тұрады. Әрбір бет оған байланысқан қосымшада шертумен таңдалады және оған орналасқан компоненттер өз жиынынан тұруымен мүмкін.  

 - TRadioGroup компоненті (Ауыстырып-қосқыштар тобы)

Бұл компонент TRadioButton класының ауыстырып-қосқыштарын орналастыруға арналған арнайы контейнерді ұсынады. Оған орналасқан әрбір ауыстырып-қосқыш Items арнайы тізіміне орналасады және индекс арқылы қол жеткізіледі.  

 - TQwickRep компоненті (Жылдам есеп беру)

Бұл компонент әрқашан оның көмегімен есеп беруді құрастырудың визуальды ортасын құратын бөлек бос қалыпта орналасады. Компоненттің бос ішкі кеңістігі парақтың таза бетіне ұқсас көрсетіледі. Бұл кеңістікке қалған компоненттер орналасады.

 - TQRBand компоненті (Есеп берудің жолақтары)

Бұл компонент есеп беруде (TQwickRep) рәсімдеудің нақты элементтерін орналастыруға және топтастыруға арналған.  Жолақтың құрамы оның қасиетіне тәуелді. Бағдарламада қасиеттің келесі мәндері қолданылды: rbTitle – есеп беру тақырыбы, rbDetail – TQwickRep есеп берудің DataSet компонент қасиетінің мәнімен анықталатын берілгендер жиынының мәліметтері, rbColumnHeader – есеп беру бағаналарының тақырыптары және rbPageFooter қасиеті – төменгі  колонтитул.

 - TQRLabel компоненті (есеп беру жазбасы)

Бұл компонент TLabel компонентін еске түсіреді, бірақ тек қана есеп беру жақтауларында қолданылады.  Ол есеп беруде барлық мүмкіндікті мәтіндік жазбаларды құруға арналған.

 - TQRDBText компоненті (Шығару өрісі)

Бұл тек қана берілгендер жиыны өрісінің мәндерін шығаруға қолданылады. Берілгендер жиынының атауы DataField нақты өріс қасиетіндегі DataSet қасиеті атауында көрсетіледі.

 - TQRSubDetail компоненті

Бұл компонент кестелер өрісін шығаруға пайдаланылады.

 - TMemo компоненті (Көпқатарлы мәтіндік өріс)

Бұл кластың компоненттері енгізуге, редакторлауға және/немесе жеткілікті ұзын мәтінді бейнелеуге арналған.

Басты қалып көмегімен (mainform) қолданушы 3.7 суретте көрсетілгендей кез келген керекті қалыпқа өте алады.

 

 

Сурет 3.7 – Басты қалып

 

Берілген қалыпта қолданылатын компоненттер

TactionManager - TActionManager компоненті интерфейс элементтерімен функционалды қатынаста үйлесімді шығарылатын біртипті іс-әрекеттерді орталықтандырады. Әрбір осындай іс-әрекетті компонент бағдарламада қолданушы өзгерткен соңғы баптауларды «сақтауға» мүмкіндік беретін дисктік файлда сақтайды. Сонымен, компонент TActionList компонентінің функционалдылығын айтарлықтай кеңейтеді және оны 3.8 суретте көрсетілгендей мәнмен қажетсіз етеді.

 

Сурет 3.8 - TActionList компоненті.

 

TImageList класының компоненті 3.9 суретте көрсетілгендей бірдей өлшемді көптеген суреттерді сақтауға арналған контейнер ұсынады.  Ол тақырыпты басқаратын секцялардың аспаптық батырмалар жиынын бағдарламалық құруда, анимациялық әсерледі қолданатын бағдарламаларды өңдеуде, және жалпы суреттерге индексирленген рұқсат керекті жерлерде пайдалы болуы мүмкін.

 

Сурет 3.9 - TImage – Суреттерді бейнелеу

 

Бұл компонент Delphi қолдайтын кескіндердің үш типінің бірін: растрлық кескіндер, пиктограммалар немесе метафайлдарды қалыпта орналастыруға қызмет етеді.

 

 

Сурет 3.10 - TActionMainMenuBar – Іс-әрекеттерге арналған мәзір жолақтары

TActionMainMenuBar компоненті 3.10 суретте көрсетілгендей мәзір опциялары іс-әрекеттерімен байланысқандарға арналған қалпына келтіретін контейнер қызметін атқарады. Тақырыптар опциялары іс-әрекеттер категориясына менеджер терезесінен «тасымалдау арқылы» орналастырылады.  

Компоненттің көптеген қасиеттерінің саны 3.11 (әдістер мен оқиғалар) суретте көрсетілгендей өз кезегінде көптеген қасиеттер мен келісім формаларынан тұратын, динамикалық түрде жасалынатын ішкі объектілермен байланысты. Компоненттің қасиеттері туралы және онымен байланысқан кластар туралы толық ақпаратты анықтамалық қызметтен ала аласыз. Компонент property ActionClient: TActionClient қасиетінен тұрады;

 

 

Сурет 3.11 – Келісім формасы

 

TDBGrid компоненті TTable немесе TQuery компоненттерінен берілгендер қатарын экранда бейнелеудің кестелік тәсілін қамтамасыз етеді. Қосымша TDBGrid-ті ДҚ берілгендерін бейнелеуге, қоюға, жоюға, редакторлауға қолдануы мүмкін. Әдетте DBGrid DBNavigator-мен үйлестіруде қолданылады, бірақ басқа да интерфейстік элементтердің оқиғаларды өңдеушісіне TTable компонентінің First, Last, Next, Ptior, Insert, Delete, Edit, Append, Post, Cancel әдістерін қосып қолдануға болады.

 

Датаны фильтрациялау процедурасы

procedure TfmContract.CheckBox1Click(Sender: TObject);

var Filter: string;

begin

  Filter := '';

  if CheckBox1.Checked then

    Filter := '(Date1 >= ' + QuotedStr(DateToStr(dtpDate1From.Date)) + ')';

  if CheckBox2.Checked then begin

    if Filter <> '' then

      Filter := Filter + ' and ';

    Filter := Filter + '(Date1 <= ' + QuotedStr(DateToStr(dtpDate1To.Date))+ ')';

    end;

  if CheckBox3.Checked then begin

    if Filter <> '' then

      Filter := Filter + ' and ';

    Filter :=Filter+'(Date2 >= '+QuotedStr(DateToStr(dtpDate2From.Date))+ ')';

    end;

  if CheckBox4.Checked then begin

    if Filter <> '' then

      Filter := Filter + ' and ';

    Filter := Filter + '(Date2 <=' + QuotedStr(DateToStr(dtpDate2To.Date)) + ')';

    end;

 

  if (CheckBox1.Checked) or (CheckBox2.Checked) or

     (CheckBox3.Checked) or (CheckBox4.Checked) then begin

    DM.tbContract.Filter := Filter;

    DM.tbContract.Filtered := True;

    end

  else

    DM.tbContract.Filtered := False;

end;

 

Tdatamodule берілгендер модулі

TDataModule IDE-де қолданылуы мүмкін топтарға арналған визуальды емес объектілерге, жоба жақтауларында басқа да түрлі контейнерлер (қалыптар) қолданылуы мүмкін  визуальды емес объектілерге контейнер ұсынады. Берілгендерге ену компоненттері ереже сай datamodule-де сақталады.   

IDE-де ережеге сай, визуальды емес компоненттерден тұратын TDataModule ұрпағын құруға мүмкіндік береді.

 

 

Сурет 3.12 - TDataBase класы

 

TDataBase типті объект берілгендер қорымен жұмыс кезінде міндетті емес болып табылады, бірақ ол деректер қорымен байланысты басқаруда қосымша мүмкіндіктердің қатарын ұсынады. TDataBase қызмет етеді:

Деректер қорымен әрқашан байланысты болу

Деректер қорымен байланыста өзіндік диалогты анықтау (пароль сұрау)

Деректер қорының локальды бүркеншік атын құру

Байланыста параметрлерді өзгерту

Транзакциямен басқару

 

 

Сурет 3.13 - TDataBase объектісі

 

TDataBase объектпен орындау кезінде көрінбейтін болып табылады. Ол 3.13 суретте көрсетілгендей "Data Access" компоненттер палитрасында орналасқан.

TQuery компоненті

TQuery компоненті TTable компоненті сияқты TDataSet компонентінің барлық қасиеттерін иеленеді.

TTable компоненті жағдайындағы сияқты TDataSource компоненті Data Controls және TQuery компоненттері арасында әрекеттестікті басқарады. Әдетте қосымша әрбір TQuery компоненті үшін бір-бір DataSource компонетін қолданады. 

Көптеген жағдайда TQuery компонентінің келесі қасиеттері қолданылады:  

Active – берілген сұранысты ашуды (true) немесе жабуды (false) көрсетеді

Eof, Bof – бұл қасиеттер сұраныстың орындалу нәтижесі болып табылатын ағымдық жазбалар көрсеткіші берілгендер жиынының бірінші немесе соңғы қатарында орналасқан кезде true мәнін қабылдайды.

DatabaseName – сұраныс жүзеге асып жатқан ДҚ өшірілген каталог атауы немесе бүркеншік атауы (alias).

DataSource – параметрленген сұраныстарға арналған берілгендер көзін көрсетеді. (яғни, мәндері алдын ала белгілі параметрлі сұраныстар).

Fields – бұл қасиет орындау (run-time only) кезінде қолайлы және реттік номерімен анықталатын өрісті оқу немесе модификациялау үшін қолданылады.

Params – сұранысты параметрлеуге арналған параметрлерден тұрады

 

Microsoft Excel есеп берулерді экспорттау

Процедура қордағы тауар бойынша есеп беруді формалайды, немесе прайс-парақ берілгендерге тәуелді берілгендер жиынының аргументі ретінде:

 

procedure Rep_Price_Store(Form: string; Table: TDataSet);

var Excel: Variant;

    WorkbookName: string;

    i, j: Integer;

    Sum: Currency;

begin

  //Есеп беруді қалыптандыру кезінде торды өшіреміз:

  if fmGoods.Showing then

    DM.dsGoods.Enabled := False;

  if fmStore.Showing then

    DM.dsStore.Enabled := False;

  //Үлгі Үлгілер бумасында сақталады:

  WorkbookName := GetCurrentDir + '\Үлгілер\' + Form + '.xlt';

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

  try

    Excel.Workbooks.Open(WorkbookName);

    //ДҚ кестесінен берілгендерді экспорттау:

    i := 5;

    Sum := 0; //Қосынды жиыны

    if form='Тауар қорда' then begin Excel.Cells[4,13]:='Сатып алу бағасы. теңгеге арналған бірлігі';

                                         Excel.Cells[4,14]:='Жалпы баға, тенге'; end else

                                         Excel.Cells[4,12]:='Баға теңгеге арналған бірлігі';

    with DM do begin

      Excel.Cells[1,1] := Date;

      Excel.Cells[1,8] := DM.tbRequisitName.AsString;

      //Топ бойынша тауарлар тізімін кестеге экспорттау:

      tbGoodsGroup.First;

      //Тауар топтары бойынша цикл:

      while not tbGoodsGroup.Eof do begin

        Table.Filter :='GroupID= ' + tbGoodsGroup.FieldByName('ID').AsString;

        Table.Filtered := True;

        //Егер ағымдық топта тауар бар болса:

        if Table.RecordCount>0 then begin

          //Тауар тобының аты үшін жаңа қатар қосу:

          if i > 5 then begin

            Excel.Rows.Item[5].Select;

            Excel.Selection.Copy;

            Excel.Rows.Item[i].Select;

            Excel.ActiveSheet.Paste;

            Excel.Application.CutCopyMode := False;

            end;

          Excel.Cells[i,1] := tbGoodsGroupTypeName.AsString;;

          Inc(i);

          Table.First;

          //Ағымдық топта тауар бойынша цикл:

          for j:=i to Table.RecordCount+i-1 do begin

            //Жаңа қатар қосу:

            Excel.Rows.Item[6].Select;

            Excel.Selection.Copy;

            Excel.Rows.Item[j].Select;

            Excel.ActiveSheet.Paste;

            Excel.Application.CutCopyMode := False;

            //Берілгендерді экспорттау:

            Excel.Cells[j,2] := Table.FieldByName('Name').AsString;

            Excel.Cells[j,11] := Table.FieldByName('Unit').AsString;

            if Table = tbGoods then begin

              Excel.Cells[j,1]:=FormatFloat('00000', Table.FieldByName('ID').AsFloat);

              Excel.Cells[j,12] := Table.FieldByName('PriceRealiz').AsCurrency

              end

            else begin

              Excel.Cells[j,1]:=FormatFloat('00000', Table.FieldByName('GoodsID').AsFloat);

  //Есеп беруді қалыптастыру кезінде торды өшіреміз:

  if fmGoods.Showing then

    DM.dsGoods.Enabled := True;

  if fmStore.Showing then

    DM.dsStore.Enabled := True;

end;

 

Берілген код жұмысының нәтижесі 3.14 суретте көрсетілген

 

 

Сурет 3.14 – Есепті формалау немесе шығындар мәліметі (накладной)

 

procedure Rep_Bill(Form: string);

var Excel: Variant;

    WorkbookName: string;

    i, PosInc: Integer;

    Sum: Currency;

begin

  //Үлгі Үлгілер бумасында сақталады:

  WorkbookName := GetCurrentDir + '\Үлгілер\' + Form + '.xlt';

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

  try

    Excel.Workbooks.Open(WorkbookName);

    //ДҚ кестесінен берілгендерді экспорттау:

    PosInc := 8;

    Sum := 0; //Қосынды жиыны

    with DM do begin

      Excel.Cells[1,8] := DM.tbRequisitName.AsString;

      Excel.Cells[2,8] := DM.tbRequisitAdress.AsString;

      Excel.Cells[3,2] := FormatFloat('00000', tbRealizID.AsFloat);

      Excel.Cells[4,2] := tbRealizDDate.AsString;

      Excel.Cells[5,4] := tbRealizContrName.AsString;

 

      // Шығын бойынша тауарлар тізімін кестеге экспорттау:

      tbRealizComp.First;

      i := 0;

      while not tbRealizComp.Eof do begin

        //Жаңа қатар қосу:

        if i <> 0 then begin

          Excel.Rows.Item[PosInc+i].Select;

          Excel.Selection.Insert;

          Excel.Rows.Item[PosInc].Select;

          Excel.Selection.Copy;

          Excel.Rows.Item[PosInc+i].Select;

          Excel.ActiveSheet.Paste;

          Excel.Application.CutCopyMode := False;

          end;

        //Берілгендерді экспорттау:

        Excel.Cells[i+PosInc,1] := i+1;

       Excel.Cells[i+PosInc,2]:=tbRealizComp.FieldByName('GoodsName').AsString;

        Excel.Cells[i+PosInc,10] :=

 tbRealizComp.FieldByName('GoodsUnit').AsString;

        Excel.Cells[i+PosInc,11] :=

tbRealizComp.FieldByName('Quantity').AsInteger;

        Excel.Cells[i+PosInc,12] :=

tbRealizComp.FieldByName('PriceRealiz').AsCurrency/1.18;

        Excel.Cells[i+PosInc,13] :=

tbRealizComp.FieldByName('PriceRealiz').AsCurrency/1.18 *

                                    tbRealizComp.FieldByName('Quantity').AsInteger;

        Sum := Sum +

tbRealizComp.FieldByName('PriceRealiz').AsCurrency/1.18 *

                     tbRealizComp.FieldByName('Quantity').AsInteger;

        Inc(i);

        tbRealizComp.Next;

        end;

      end; //with

    Excel.Cells[i+PosInc,13] := Sum;

    Excel.Cells[i+PosInc+1,13] := Sum*0.18;

    Excel.Cells[i+PosInc+2,13] := Sum*1.18;

    Excel.Cells[i+PosInc+4,3] := SumToTxt(Format('%.2f', [Sum*1.18]));

    Excel.Visible := True;

  except

    Excel.Quit;

  end;

end;

 

//Тауарлық чекті формалау:

procedure Rep_Check;

var Excel: Variant;

    WorkbookName: string;

    i, PosInc: Integer;

    Sum: Currency;

begin

  // Үлгі Үлгілер бумасында сақталады:

  WorkbookName := GetCurrentDir + '\ Үлгілер \Чек.xlt';

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

  try

    Excel.Workbooks.Open(WorkbookName);

    // ДҚ кестесінен берілгендерді экспорттау:

    PosInc := 8;

    Sum := 0; //Сумма Итого

    with DM do begin

      Excel.Cells[1,1] := DM.tbRequisitName.AsString;

      Excel.Cells[2,1] := DM.tbRequisitAdress.AsString;

      Excel.Cells[4,2] := FormatFloat('00000', tbRealizID.AsFloat);

      Excel.Cells[5,2] := tbRealizDDate.AsString;

      Excel.Cells[6,2] := tbRealizContrName.AsString;

 

      // Шығын бойынша тауарлар тізімін кестеге экспорттау:

      tbRealizComp.First;

      i := 0;

      while not tbRealizComp.Eof do begin

        // Жаңа қатар қосу:

        if i <> 0 then begin

          Excel.Rows.Item[PosInc+i].Select;

          Excel.Selection.Insert;

          Excel.Rows.Item[PosInc].Select;

          Excel.Selection.Copy;

          Excel.Rows.Item[PosInc+i].Select;

          Excel.ActiveSheet.Paste;

          Excel.Application.CutCopyMode := False;

          end;

        // Берілгендерді экспорттау:

        Excel.Cells[i+PosInc,1] :=

tbRealizComp.FieldByName('GoodsName').AsString;

        Excel.Cells[i+PosInc,2] :=

tbRealizComp.FieldByName('Quantity').AsInteger;

        Excel.Cells[i+PosInc,3] :=

tbRealizComp.FieldByName('PriceRealiz').AsCurrency/1.18;

        Sum := Sum +

tbRealizComp.FieldByName('PriceRealiz').AsCurrency/1.18 *

                     tbRealizComp.FieldByName('Quantity').AsInteger;

        Inc(i);

        tbRealizComp.Next;

        end;

  end;

end;

 

Берілген код жұмысының нәтижесі 3.15 суретте көрсетілген

 

 

Сурет 3.15 – Сату кітабын формалау

 

procedure Rep_SellBook(DateFrom, DateTo: TDate);

var Excel: Variant;

    WorkbookName: string;

    i, PosInc: Integer;

    Sum: Currency;

begin

  //Тауар шығыны, дата диапазоны бойынша берілгендерді сорттау:

  DM.tbRealiz.Filter := '(DDate >= ' + QuotedStr(DateToStr(DateFrom)) + ')' +    ' and (DDate <= ' + QuotedStr(DateToStr(DateTo)) + ')';

  DM.tbRealiz.Filtered := True;

  // Үлгі Үлгілер бумасында сақталады:

  WorkbookName := GetCurrentDir + '\ Үлгілер \Сатулардың кітабы.xlt';

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

  try

    Excel.Workbooks.Open(WorkbookName);

    // ДҚ кестесінен берілгендерді экспорттау:

    PosInc := 15;

    Sum := 0; //Сумма Итого

    with DM do begin

      Excel.Cells[6,2] := DM.tbRequisitName.AsString;

   Excel.Cells[8,1] := string(Excel.Cells[8,1]) + DateToStr(DateFrom) + ' по ' +

        DateToStr(DateTo);

 

      // Шығын бойынша тауарлар тізімін кестеге экспорттау:

      tbRealiz.First;

      i := 0;

      while not tbRealiz.Eof do begin

        // Жаңа қатар қосу:

        if i <> 0 then begin

          Excel.Rows.Item[PosInc+i].Select;

          Excel.Selection.Insert;

          Excel.Rows.Item[PosInc].Select;

          Excel.Selection.Copy;

          Excel.Rows.Item[PosInc+i].Select;

          Excel.ActiveSheet.Paste;

          Excel.Application.CutCopyMode := False;

          end;

        // Берілгендерді экспорттау:

        Excel.Cells[i+PosInc,1] := FormatFloat('00000', tbRealizID.AsFloat) +

          ' ' + tbRealizDDate.AsString;

        Excel.Cells[i+PosInc,5] := tbRealizDDate.AsString;

        Excel.Cells[i+PosInc,6] := tbRealizSum.AsCurrency;

        Excel.Cells[i+PosInc,7] := tbRealizSum.AsCurrency/1.18;

        Excel.Cells[i+PosInc,8] := tbRealizSum.AsCurrency/118*18;

        Sum := Sum + tbRealizSum.AsCurrency;

        Inc(i);

        tbRealiz.Next;

        end;

      end; //with

    Excel.Cells[i+PosInc,6] := Sum;

    Excel.Cells[i+PosInc,7] := Sum/1.18;

    Excel.Cells[i+PosInc,8] := Sum/118*18;

    Excel.Visible := True;

  except

    Excel.Quit;

  end;

  DM.tbRealiz.Filtered := False;

end;

 

Сатып алу кітабын формалау:

procedure Rep_PurchBook(DateFrom, DateTo: TDate);

var Excel: Variant;

    WorkbookName: string;

    i, PosInc: Integer;

    Sum: Currency;

begin

  // Тауар шығыны, дата диапазоны бойынша берілгендерді сорттау:

DM.tbIncome.Filter := '(DDate >= ' + QuotedStr(DateToStr(DateFrom)) + ')' +

    ' and (DDate <= ' + QuotedStr(DateToStr(DateTo)) + ')';

  DM.tbIncome.Filtered := True;

 

  // Үлгі Үлгілер бумасында сақталады:

  WorkbookName := GetCurrentDir + '\ Үлгілер \Сатып алулар кітабы.xlt';

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

  try

    Excel.Workbooks.Open(WorkbookName);

    // ДҚ кестесінен берілгендерді экспорттау:

    PosInc := 15;

    Sum := 0; //Қосынды жиыны

    with DM do begin

      Excel.Cells[6,3] := DM.tbRequisitName.AsString;

   Excel.Cells[8,1] := string(Excel.Cells[8,1]) + DateToStr(DateFrom) + ' по ' +

        DateToStr(DateTo);

 

      // Шығын бойынша тауарлар тізімін кестеге экспорттау:

      tbIncome.First;

      i := 0;

      while not tbIncome.Eof do begin

        // Жаңа қатар қосу:

        if i <> 0 then begin

          Excel.Rows.Item[PosInc+i].Select;

          Excel.Selection.Insert;

          Excel.Rows.Item[PosInc].Select;

          Excel.Selection.Copy;

          Excel.Rows.Item[PosInc+i].Select;

          Excel.ActiveSheet.Paste;

          Excel.Application.CutCopyMode := False;

          end;

        // Берілгендерді экспорттау:

        Excel.Cells[i+PosInc,1] := i+1;

        Excel.Cells[i+PosInc,2] := FormatFloat('00000', tbIncomeID.AsFloat) +

          ' ' + tbIncomeDDate.AsString;

        Excel.Cells[i+PosInc,3] := tbIncomeDDate.AsString;

        Excel.Cells[i+PosInc,4] := tbIncomeDDate.AsString;

        Excel.Cells[i+PosInc,9] := tbIncomeSum.AsCurrency;

        Excel.Cells[i+PosInc,10] := tbIncomeSum.AsCurrency/1.18;

        Excel.Cells[i+PosInc,11] := tbIncomeSum.AsCurrency/118*18;

        Sum := Sum + tbIncomeSum.AsCurrency;

        Inc(i);

        tbIncome.Next;

        end;

      end; //with

    Excel.Cells[i+PosInc,9] := Sum;

    Excel.Cells[i+PosInc,10] := Sum/1.18;

    Excel.Cells[i+PosInc,11] := Sum/118*18;

    Excel.Visible := True;

  except

    Excel.Quit;

  end;

  DM.tbIncome.Filtered := False;

end;

 

Сандық қосындыны қатарлық қосындыға ауыстыруға арналған модуль

 

unit uSumToStr;

//

interface

uses

SysUtils, StrUtils;

function SumToTxt(Value: String) : string; //Ауыстыруға арналған функция (аргумент – қосындыдан тұратын қатар)

implementation

const a:array[0..8,0..9] of string=(

('','бір ','екі ','үш ','төрт ','бес ','алты ','жеті ','сегіз','тоғыз '),

('','','жиырма ','отыз ','қырық ','елу ','алпыс ','жетпіс ','сексен ','тоқсан '),

('','жүз ','екі жүз ','үш жүз ','төрт жүз ','бес жүз ','алты жүз ','жеті жүз ','сегіз жүз ','тоғыз жүз '),

('мыңдардың ','мың ','екі мың ','үш мың ','төрт мың ','бес мың ','алты мың ','жеті мың ','сегіз мың ','тоғыз мың '),

('','','жиырма ','отыз ','қырық ','елу ','алпыс ','жетпіс ','сексен ','тоқсан '),

('','жүз ','екі жүз ','үш жүз ','төрт жүз ','бес жүз ','алты жүз ','жеті жүз ','сегіз жүз ','тоғыз жүз '),

('миллиондар ','бір миллион ','екі миллиона ','үш миллиона ','төрт миллиона ','бес миллион ','алты миллион ','жеті миллион ','сегіз миллион ','тоғыз миллион '),

('','','жиырма ','отыз ','қырық ','елу ','алпыс ','жетпіс ','сексен ','тоқсан '),

('','жүз ','екі жүз ','үш жүз ','төрт жүз ','бес жүз ','алты жүз ','жеті жүз ','сегіз жүз ','тоғыз жүз ');

b:array[0..9] of string=

('он ','он бір ','он екі ','он үш ','он төрт ','он бес ','он алты ','он жеті ','он сегіз ','он тоғыз ');

function SumToStrin(Value : String) : string;

var s,t:string;

  p,pp,i,k:integer;

begin

  s:=value;

  if s='0' then

    t:='Нөл '

  else begin

    p:=length(s);

    pp:=p;

    if p>1 then

      if (s[p-1]='1') and (s[p]>'0') then begin

        t:=b[strtoint(s[p])];

        pp:=pp-2;

        end;

    i:=pp;

    while i>0 do begin

      if (i=p-3) and (p>4) then

        if s[p-4]='1' then begin

          t:=b[strtoint(s[p-3])]+'мың '+t;

          i:=i-2;

          end;

      if (i=p-6) and (p>7) then

        if s[p-7]='1' then begin

          t:=b[strtoint(s[p-6])]+'миллион '+t;

          i:=i-2;

          end;

      if i>0 then begin

        k:=strtoint(s[i]);

        t:=a[p-i,k]+t;

        i:=i-1;

        end;

    end;

  end;

  Result := t;

end;

 

//Қосындыны теңгеден тиынға бөледі:

procedure get2str(value:string;var hi,lo:string);

var p:integer;

begin

      p:=pos(',',value);

      lo:='';hi:='';

      if p=0 then

        p:=pos('.',value);

      if p<>0 then

        delete(value,p,1);

      if p=0 then begin

        hi:=value;

        lo:='00';

        end;

      if p>length(value) then begin

        hi:=value;

        lo:='00';

        end;

      if p=1 then begin

        hi:='0';

        lo:=value;

        end;

      if (p>1) and (p

        hi:=copy(value,1,p-1);

        lo:=copy(value,p,length(value));

        end;

end;

 

function SumToTxt(value: string):string;

var hi,lo:string;

  pr,er:integer;

begin

      get2str(value,hi,lo);

      if (hi='') or (lo='') then begin

        result:='';exit;

        end;

      val(hi,pr,er);if er<>0 then begin

        result:='';

        exit;

        end;

      hi:=sumtostrin(inttostr(pr))+'тең. ';

      if lo<>'00' then begin

        val(lo,pr,er);

        if er<>0 then begin

          result:='';

          exit;

          end;

        lo:=inttostr(pr);

        end;

      lo:=lo+' тиын  ';

      hi[1]:=AnsiUpperCase(hi[1])[1];

      result:=hi+lo;

end;

end.

 

Берілген код жұмысының нәтижесі 3.16 суретте көрсетілген

 

 

Сурет 3.16 – Код жұмысының терезесі

 

3.2.2 Экрандық интерфейстің идеологиясын таңдау

 

Delphi 7.0 жобалау жүйесі өңдеушіге экрандық интерфейсті құруға мүмкіндік беретін функциялардың айтарлықтай кең гаммасын ұсынады, бірақ тек қана жүйенің штаттық құралдарын қолданатын бағдарламалар монитор экранына объекттерді, жақтауларды, түстерді орнату және т.б. шығаруды қамтамасыз ететін екінші дәрежелі операторлармен айтарлықтай күшті қиындатылған.

 

3.3 Нақты мысалда тестілеу

 

Бағдарламаны тестілеу үшін келесі іс-әрекеттерді орындаймыз:

Бағдарламалық қамтаманы орнату орнатуға арналған дисктен жүзеге асырылады. Дискте inst_akbozat архиві орналасқан. Әрі қарай бағдарламаны орнатуды жүзеге асыру керек.

 Орнатып болғанан кейін «Пуск-Бағдарламалар-Акбозат-Akbozat.exe ЖШС менеджері» батырмасын шерту керек. Одан кейін 3.17 суретте көрсетілгендей бағдарламаның басты қалыпы ашылады.  

 

 

Сурет 3.17 – басты қалып

 

Бағдарламаны ашқанда бірінші анықтамаларды толтырамыз

Анықтамалар мәзіріне кіріп Біздің реквизиттер пунктін ашамыз, көрсетілген өрістерге мәліметтерді беріп, 3.18 суретте көрсетілгендей Сақтау батырмасы көмегімен сақтаймыз.

 

 

Сурет 3.18 – Біздің реквизиттер

 

Әрі қарай «Конрагенттер» қалыбына кіреміз, қоюшыны немесе клиентті қосамыз, таңдау компоненті көмегімен конрагенттің сол не басқа типін таңдаймыз, сонымен қатар ФИО, мекен-жай және банктік реквизиттерді толтырамыз. Конрагентті іздеу үшін 3.19 суретте көрсетілгендей тез іздеу фильтрлерін қолданыңыз.

 

 

Сурет 3.19 - Контрагенттер

 

Тауар қосуға арналған қалыпқа өтеміз.

Тауар қоспастан алдын категориялар немесе тауарлар тобы анықтамаларын баптау қажет, бұл үшін 3.20 суретте көрсетілгендей тауар тобы мәзіріне кіреміз.

 

Сурет 3.20 – Тауар тобы

 

ТАУАРЛАР ТОБЫ анықтамасын толтырып болған соң 3.21 суретте көрсетілгендей ТАУАР мәзіріне енеміз.

 

 

Сурет 3.21 – Тауарлар

 

Тауар қосу үшін «+» батырмасын басу керек, өшіру үшін «–», тауарды іздеу үшін сұраптау панелін қолданыңыз, ТАУАРЛАР ТОБЫНА тез қайта қосылу үшін «Тауарлар тобы» батырмасын басыңыз, сонымен қатар прайс-парақты баспаға шығару үшін «Прайс» батырмасын басыңыз. Бұлардың барлығы 3.22 суретте көрсетілген.  

 

 

Сурет 3.22 – Прайс-парақ

 

Барлық келісімдер есебін шығару үшін «Келісімдер» қалыбы қолданылады.

Жаңа келісім қосу үшін «+» батырмасын басамыз, конрагент өрісі анықтамалар тізімінен керекті контагенттіңізді таңдаңыз, міндетті түрде іс-әрекеттің басталу және аяқталу датасын толтыру қажет, сонымен бірге 3.23 суретте көрсетілгендей келісімдерді іздеуді орындауға болады.

 

 

Сурет 3.23 – Келісімдер

 

Қордағы тауарлар санын көру немесе көбейту үшін міндетті түрде 3.24 суретте көрсетілгендей қор формасын ашу керек.

 

 

Сурет 3.24 – Қор

 

Тауарлар тобы немесе аты бойынша сұрыптау әдісімен тізімнен талап етілген тауарды таңдаймыз, «саны» өрісіне тауар мәліметтерін қосуға болады.

Кіріс немесе тауарды сату мәзір операциясында жүзеге асырылады.

3.25 суретте көрсетілген тауарды реализациялау процесін көріп шығайық.

 

 

Сурет 3.25 – Тауарды реализациялау

 

Сатуға арналған тізімге тауар қосу үшін «+» батырмасын шертеміз. Тізімнен кез келген тауарды таңдаймыз, «саны» өрісінде талап етілген тауарды сатып алу санын көрсетеміз. Бағдарлама автоматты түрде қосынды жиынды есептейді. Содан кейін төлеуге арналған есепті шығаруға қою керек, мәліметті (накладной) баспаға шығару, төленгеннен кейін тауарлық чекті баспа шығару керек.

Белгіленген уақыт аралығындағы барлық сату немесе сатып алуларды көріп шығу үшін сатулар кітабы, сатып алулар кітабы құжаттар мәзірі қолданылады.

 

 

Сурет 3.26 – Даталар диапазонын таңдау

 

3.26 суретте көрсетілгендей диапазонды таңдап, ОК батырмасын шертеміз, содан кейін Excell кестесінде 3.27 суретте көрсетілгендей берілген уақыт аралығындағы барлық сатулар немесе сатып алулар есебі бейнеленеді.

 

 

Сурет3.27 – Есеп

 

Сонымен бағдарламалық қамтаманы тестілеу аяқталды.

 

3.4 Құжаттау

 

3.4.1 Қолданушы нұсқауы

 

Бағдарламалық қамтаманы орнату орнатуға арналған дисктен жүзеге асырылады. Дискте inst_akbozat архиві орналасқан. Әрі қарай бағдарламаны орнатуды жүзеге асыру керек.

 Орнатып болғанан кейін «Пуск-Бағдарламалар-Акбозат-Akbozat.exe ЖШС менеджері» батырмасын шерту керек. Бағдарлама жіберілгеннен кейін бағдарламаның басты формасы ашылады.  

Бағдарламаны ашқанда бірінші анықтамаларды толтырамыз

Анықтамалар мәзіріне кіріп Біздің реквизиттер пунктін ашамыз, көрсетілген өрістерге мәліметтерді беріп, Сақтау батырмасы көмегімен сақтаймыз.

Әрі қарай «Конрагенттер» қалыбына кіреміз, қоюшыны немесе клиентті қосамыз, таңдау компоненті көмегімен конрагенттің сол не басқа типін таңдаймыз, сонымен қатар ФИО, мекен-жай және банктік реквизиттерді толтырамыз. Конрагентті іздеу үшін тез іздеу фильтрлерін қолданыңыз.

Тауар қосуға арналған қалыпқа өтеміз. Тауар қоспастан алдын категориялар немесе тауарлар тобы анықтамаларын баптау қажет, бұл үшін тауар тобы мәзіріне кіреміз.

Тауарлар тобы анықтамасын толтырып болған соң тауар мәзіріне енеміз. Тауар қосу үшін «+» батырмасын басу керек, өшіру үшін «–», тауарды іздеу үшін сұраптау панелін қолданыңыз, тауарлар тобына тез қайта қосылу үшін «Тауарлар тобы» батырмасын басыңыз, сонымен қатар прайс-парақты баспаға шығару үшін «Прайс» батырмасын басыңыз. 

Барлық келісімдер есебін шығару үшін «Келісімдер» қалыбы қолданылады. Жаңа келісім қосу үшін «+» батырмасын басамыз, конрагент өрісі анықтамалар тізімінен керекті контагенттіңізді таңдаңыз, міндетті түрде іс-әрекеттің басталу және аяқталу датасын толтыру қажет, сонымен бірге 3.23 суретте көрсетілгендей келісімдерді іздеуді орындауға болады.

Қордағы тауарлар санын көру немесе көбейту үшін міндетті түрде қор формасын ашу керек. Тауарлар тобы немесе аты бойынша сұрыптау әдісімен тізімнен талап етілген тауарды таңдаймыз, «саны» өрісіне тауар мәліметтерін қосуға болады.

Кіріс немесе тауарды сату мәзір операциясында жүзеге асырылады.

Тауарды реализациялау процесін көріп шығайық.

Сатуға арналған тізімге тауар қосу үшін «+» батырмасын шертеміз. Тізімнен кез келген тауарды таңдаймыз, «саны» өрісінде талап етілген тауарды сатып алу санын көрсетеміз. Бағдарлама автоматты түрде қосынды жиынды есептейді. Содан кейін төлеуге арналған есепті шығаруға қою керек, мәліметті (накладной) баспаға шығару, төленгеннен кейін тауарлық чекті баспа шығару керек.

Белгіленген уақыт аралығындағы барлық сату немесе сатып алуларды көріп шығу үшін сатулар кітабы, сатып алулар кітабы құжаттар мәзірі қолданылады.

Диапазонды таңдап, ОК батырмасын шертеміз, содан кейін Excell кестесінде берілген уақыт аралығындағы барлық сатулар немесе сатып алулар есебі бейнеленеді.

 

3.4.2 Бағдарламалаушы нұсқауы

 

Бағдарламаның орындалу ортасын таңдауда міндетті түрде бірнеше факторларды ескеру керек, атап айтқанда:

Borland Delphi 7 орнатылған версиясы компьютерде міндетті түрде болуы керек;

Мәліметтер қорының файлы сақталған AKBOZAT бумасы болуы керек;

Ортаны таңдау шектеледі – Windows.

 

Қорытынды

 

Дипломдық жобаның орындалу нәтижесінде «Акбура -555» ЖШС –нің қызметтерін автоматтандыратын БҚ құрастыру менеджеріне арналған бағдарламалық қамтама өңделді. Сату және автоаксесуарларды жүзеге асыру қызметтерін автоматтандыру бағдарламасы өңделді.

«Акбура-555» ЖШС менеджеріне арналған бағдарлама тауар айналымына қатысты ақпараттарды енгізуге, сақтауға және жіберуге арналған. Өңделген жүйе нақты есеп беруді дайындауға және кәсіпорын қызметінің есебіне кететін уақытты қысқартуға, оларды орындауда өнімсіз шығындарды азайтуға, бухгалтерлік, технологиялық және тікелей экономикалық нәтиже беретін басқа да құжаттарды дайындауда қате шығу мүмкіндігін шектеуге мүмкіндік жасайды. Бағдарламаларды құруды функциялау ортасында құрылған кестелер, есеп берулер құжат айналымының нәтижелілігін жоғарылатады, ұжымдық жұмыс мүмкіндігін жақсартады, ақпаратты өңдеу жылдамдығын көтереді, бағдарламалық қамтамасыздандыруды қолдануды дәлелдейтін кәсіпорында күрделі сауда ақпаратын графикалық көрнекті көркемдеуге мүмкіндік жасайды.

Қарапайым және интуитивті түсінікті интерфейс есебінен бағдарлама қолданушы әрекеттерін оңайлатты. 

 

ҚОЛДАНҒАН ӘДЕБИЕТТЕР ТІЗІМІ

 

1 Советов Б. Я. «Информационные технологии», М: Высшая школа, 1994.

2 Ларионов А. М. «Вычислительные системы, комплексы и сети», М: Высшая школа, 1987.

3 Базы данных, учебное пособие, под ред. А.Д.Хомоненко, Санк-Петербург, изд. «Корона», 2002.

4 Марк Майнази. «Windows 2000 Server», Москва, Лори, 2000.

5 Марко Кэнту. «Delphi 5 для профессионалов», Sybex, Питер, 1999.

6 Михаил Гук. «Аппаратные средства локальных вычислительных сетей», Энциклопедия, Питер, 2000.

7 Методические указания по дипломному проектированию для  студентов специальности 37.04 – «Программное аппаратное обеспечение компьютерных систем и сетей». Шымкент: ЮКГУ, 2005.

8 Градусов  А.Б., Гришин В.С. Методические указания к лабораторным работам по дисциплинам «Основы алгоритмизации и языки программирования» и «Информатика».

9 Ахаян Р., Горев А., Макашарипов С. «Эффективная работа с СУБД».

10 Попов А.А. «Создание приложений для FoxPro 2.5/2.6 в DOS и в WINDOWS». –М.: Издательство Март, 1996. –660с.

11 Лемашко Е.В., Романчуков В.Г. Программирование в системе команд СУБД семейства Fox: учебное пособие / ГАУ, М., 1998.

12 Компьютерный практикум. Программирование в среде Турбо-Паскаль и СУБД типа Fox. Методические указания к выполнению курсового проекта. /Сост.: О.Н. Леонова, И.А. Несмеянов; ГАУ, М.,1998.

13 Культин Н. Delphi 4. Программирование на Object Pascal. BHV, Санкт-Петербург, 1999. – 480 с., ил.

14 Дэн Оузьер и др. Delphi 5. Освой самостоятельно. М.: “Издательство БИНОМ”, 1998г. – 560 с.: ил.

15 Бондарев В. М., Рублинецкий В. И., Качко Е. Г. Основы программирования. Харьков: Фолио; Ростов н/Д: Феникс, 1998  – 368 с.

16 Компьютерный практикум. Программирование в среде Турбо-Паскаль и СУБД типа Fox. Методические указания к выполнению курсового проекта. /Сост.: О.Н.Леонова, И.А.Несмеянов; ГАУ, М.,1998.

17 Организация взаимодействия человека с техническими средствами АСУ, том 4: «Отображение информации», редакция В.Н.Четверикова, Москва, «Высшая Школа» 1993.

18 Организация взаимодействия человека с техническими средствами АСУ, том 7: «Системное проектирование взаимодействия человека с техническими средствами», редакция В.Н.Четверикова, Москва, «Высшая Школа» 1993.

19 «Рекомендации по общепользовательскому интерфейсу», Microsoft, редакция 1995г.

20 Джон Матчо, Дэвид Р.Фолкнер. «Delphi» - пер. с англ. - М.:Бином, 1995г.

 

Қосымша А

Бағдарлама листингі

 

unit uMain;

 

interface

 

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, ToolWin, ActnMan, ActnCtrls, ActnMenus, ActnList, StdActns,

  ImgList, StdCtrls, Buttons, jpeg, ExtCtrls, ComObj, DB, XPStyleActnCtrls,

  XPMan, RzLabel;

 

type

  TfmMain = class(TForm)

    ActionManager1: TActionManager;

    acFileExit: TFileExit;

    ImageList1: TImageList;

    acSpravGoodsGroups: TAction;

    acSpravGoods: TAction;

    acOperIncome: TAction;

    BitBtn4: TBitBtn;

    acGoodsIncome: TAction;

    BitBtn5: TBitBtn;

    acGoodsStore: TAction;

    BitBtn6: TBitBtn;

    acOperRealiz: TAction;

    acGoodsRealiz: TAction;

    BitBtn7: TBitBtn;

    BitBtn8: TBitBtn;

    Image1: TImage;

    acDocPrice: TAction;

    acDocGoods: TAction;

    acDocSellBook: TAction;

    acDocPurchBook: TAction;

    acSpravContrag: TAction;

    acSpravRequisit: TAction;

    acSpravContract: TAction;

    ActionMainMenuBar1: TActionMainMenuBar;

    procedure acSpravGoodsGroupsExecute(Sender: TObject);

    procedure acSpravGoodsExecute(Sender: TObject);

    procedure acOperIncomeExecute(Sender: TObject);

    procedure acGoodsIncomeExecute(Sender: TObject);

    procedure acGoodsStoreExecute(Sender: TObject);

    procedure acOperRealizExecute(Sender: TObject);

    procedure acGoodsRealizExecute(Sender: TObject);

    procedure acDocPriceExecute(Sender: TObject);

    procedure acDocGoodsExecute(Sender: TObject);

    procedure acDocSellBookExecute(Sender: TObject);

    procedure acDocPurchBookExecute(Sender: TObject);

    procedure acSpravContragExecute(Sender: TObject);

    procedure acSpravRequisitExecute(Sender: TObject);

    procedure acSpravContractExecute(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  fmMain: TfmMain;

 

implementation

 

uses uGoodsGroup, uGoods, uIncome, uDM, uIncomeAll, uStore, uRealiz,

  uRealizAll, uRep, uDiapason, uContrag, uRequisit, uContract;

 

{$R *.dfm}

 

procedure TfmMain.acSpravGoodsGroupsExecute(Sender: TObject);

begin

  fmGoodsGroup.ShowModal;

end;

 

procedure TfmMain.acSpravGoodsExecute(Sender: TObject);

begin

  if not fmGoods.Showing then

    fmGoods.ShowModal;

end;

 

//Регистрация прихода товара:

procedure TfmMain.acOperIncomeExecute(Sender: TObject);

begin

  //Начало транзакции:

  DM.Database1.StartTransaction;

  try

    DM.tbIncome.Insert;

    DM.tbIncome.FieldByName('DDate').AsDateTime := Date;

    DM.tbIncome.Post;

    fmIncome.dtpDate.Date := Date;

    fmIncome.ShowModal;

  except

    DM.Database1.Rollback;

  end;

end;

 

procedure TfmMain.acGoodsIncomeExecute(Sender: TObject);

begin

  fmIncomeAll.ShowModal;

end;

 

procedure TfmMain.acGoodsStoreExecute(Sender: TObject);

begin

  if not fmStore.Showing then begin

    DM.qrStore.Close;

    DM.qrStore.Open;

    fmStore.ShowModal;

    end;

end;

 

//Регистрация прихода товара:

procedure TfmMain.acOperRealizExecute(Sender: TObject);

begin

  //Начало транзакции:

  DM.Database1.StartTransaction;

  try

    DM.qrStore.Close;

    DM.qrStore.Open;

    DM.tbRealiz.Insert;

    DM.tbRealiz.FieldByName('DDate').AsDateTime := Date;

    DM.tbRealiz.Post;

    fmRealiz.dtpDate.Date := Date;

    fmRealiz.ShowModal;

  except

    DM.Database1.Rollback;

  end;

end;

 

procedure TfmMain.acGoodsRealizExecute(Sender: TObject);

begin

  DM.qrStoreAll.Close;

  DM.qrStoreAll.Open;

  DM.tbRealizComp.Close;

  DM.tbRealizCompGoodsName.LookupDataSet := DM.qrStoreAll;

  DM.tbRealizCompGoodsUnit.LookupDataSet := DM.qrStoreAll;

  DM.tbRealizCompGoodsIDList.LookupDataSet := DM.qrStoreAll;

  DM.tbRealizComp.Open;

  fmRealizAll.ShowModal;

  DM.tbRealizComp.Close;

  DM.tbRealizCompGoodsName.LookupDataSet := DM.qrStore;

  DM.tbRealizCompGoodsUnit.LookupDataSet := DM.qrStore;

  DM.tbRealizCompGoodsIDList.LookupDataSet := DM.qrStore;

  DM.tbRealizComp.Open;

end;

 

//Формирование прайс-листа:

procedure TfmMain.acDocPriceExecute(Sender: TObject);

begin

  Rep_Price_Store('Прайс-лист', DM.tbGoods);

end;

 

//Формирование отчета по товару на складе (в наличии):

procedure TfmMain.acDocGoodsExecute(Sender: TObject);

begin

  Rep_Price_Store('Товар на складе', DM.qrStore);

end;

 

//Формирование книги продаж:

procedure TfmMain.acDocSellBookExecute(Sender: TObject);

var DateFrom, DateTo: TDate;

begin

  //По умолчанию книга продаж формируется в диапазоне "дата первого расхода" ...

  //"дата последнего расхода":

  DM.tbRealiz.Filtered := False;

  DM.tbRealiz.First;

  DateFrom := DM.tbRealizDDate.AsDateTime;

  DM.tbRealiz.Last;

  DateTo := DM.tbRealizDDate.AsDateTime;

 

  if GetDiapason(DateFrom, DateTo) then

    Rep_SellBook(DateFrom, DateTo);

end;

 

//Формирование книги покупок:

procedure TfmMain.acDocPurchBookExecute(Sender: TObject);

var DateFrom, DateTo: TDate;

begin

  //По умолчанию книга покупок формируется в диапазоне "дата первого прихода" ...

  //"дата последнего прихода":

  DM.tbIncome.Filtered := False;

  DM.tbIncome.First;

  DateFrom := DM.tbIncomeDDate.AsDateTime;

  DM.tbIncome.Last;

  DateTo := DM.tbIncomeDDate.AsDateTime;

 

  if GetDiapason(DateFrom, DateTo) then

    Rep_PurchBook(DateFrom, DateTo);

end;

 

procedure TfmMain.acSpravContragExecute(Sender: TObject);

begin

  fmContrag.ShowModal;

end;

 

procedure TfmMain.acSpravRequisitExecute(Sender: TObject);

begin

  fmRequisit.ShowModal;

end;

 

procedure TfmMain.acSpravContractExecute(Sender: TObject);

begin

  fmContract.ShowModal;

end;

 

end.

unit uSumToStr;

//Модуль для перевода числового представления суммы в строковое

 

interface

 

uses

SysUtils, StrUtils;

 

function SumToTxt(Value: String) : string; //Функция для перевода (аргумент - строка, содержащая сумму)

 

implementation

 

const a:array[0..8,0..9] of string=(

('','один ','два ','три ','четыре ','пять ','шесть ','семь ','восемь ','девять '),

('','','двадцать ','тридцать ','сорок ','пятьдесят ','шестьдесят ','семьдесят ','восемьдесят ','девяносто '),

('','сто ','двести ','триста ','четыреста ','пятьсот ','шестьсот ','семьсот ','восемьсот ','девятьсот '),

('тысяч ','тысяча ','две тысячи ','три тысячи ','четыре тысячи ','пять тысячь ','шесть тысячь ','семь тысячь ',

'восемь тысячь ','девять тысячь '),

('','','двадцать ','тридцать ','сорок ','пятьдесят ','шестьдесят ','семьдесят ','восемьдесят ','девяносто '),

('','сто ','двести ','триста ','четыреста ','пятьсот ','шестьсот ','семьсот ','восемьсот ','девятьсот '),

('миллионов ','один миллион ','два миллиона ','три миллиона ','четыре миллиона ','пять миллионов ',

'шесть миллионов ','семь миллионов ','восемь миллионов ','девять миллионов '),

('','','двадцать ','тридцать ','сорок ','пятьдесят ','шестьдесят ','семьдесят ','восемьдесят ','девяносто '),

('','сто ','двести ','триста ','четыреста ','пятьсот ','шестьсот ','семьсот ','восемьсот ','девятьсот '));

b:array[0..9] of string=

('десять ','одинадцать ','двенадцать ','тринадцать ','четырнадцать ','пятьнадцать ','шестьнадцать ',

'семьнадцать ','восемьнадцать ','девятьнадцать ');

 

function SumToStrin(Value : String) : string;

var s,t:string;

  p,pp,i,k:integer;

begin

  s:=value;

  if s='0' then

    t:='Ноль '

  else begin

    p:=length(s);

    pp:=p;

    if p>1 then

      if (s[p-1]='1') and (s[p]>'0') then begin

        t:=b[strtoint(s[p])];

        pp:=pp-2;

        end;

    i:=pp;

    while i>0 do begin

      if (i=p-3) and (p>4) then

        if s[p-4]='1' then begin

          t:=b[strtoint(s[p-3])]+'тысяч '+t;

          i:=i-2;

          end;

      if (i=p-6) and (p>7) then

        if s[p-7]='1' then begin

          t:=b[strtoint(s[p-6])]+'миллионов '+t;

          i:=i-2;

          end;

      if i>0 then begin

        k:=strtoint(s[i]);

        t:=a[p-i,k]+t;

        i:=i-1;

        end;

    end;

  end;

  Result := t;

end;

 

//Разделяет сумму на рубли и копейки:

procedure get2str(value:string;var hi,lo:string);

var p:integer;

begin

      p:=pos(',',value);

      lo:='';hi:='';

      if p=0 then

        p:=pos('.',value);

      if p<>0 then

        delete(value,p,1);

      if p=0 then begin

        hi:=value;

        lo:='00';

        end;

      if p>length(value) then begin

        hi:=value;

        lo:='00';

        end;

      if p=1 then begin

        hi:='0';

        lo:=value;

        end;

      if (p>1) and (p

        hi:=copy(value,1,p-1);

        lo:=copy(value,p,length(value));

        end;

end;

 

function SumToTxt(value: string):string;

var hi,lo:string;

  pr,er:integer;

begin

      get2str(value,hi,lo);

      if (hi='') or (lo='') then begin

        result:='';exit;

        end;

      val(hi,pr,er);if er<>0 then begin

        result:='';

        exit;

        end;

      hi:=sumtostrin(inttostr(pr))+'руб. ';

      if lo<>'00' then begin

        val(lo,pr,er);

        if er<>0 then begin

          result:='';

          exit;

          end;

        lo:=inttostr(pr);

        end;

      lo:=lo+' коп. ';

      hi[1]:=AnsiUpperCase(hi[1])[1];

      result:=hi+lo;

end;

 

end.

unit uIncome;

 

interface

 

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, ExtCtrls, StdCtrls, Mask, DBCtrls, ComCtrls, Buttons, Grids,

  DBGrids, DB;

 

type

  TfmIncome = class(TForm)

    Panel1: TPanel;

    Label1: TLabel;

    DBEdit1: TDBEdit;

    Label2: TLabel;

    dtpDate: TDateTimePicker;

    DBGrid1: TDBGrid;

    Panel2: TPanel;

    DBNavigator1: TDBNavigator;

    bbtClose: TBitBtn;

    bbtOK: TBitBtn;

    Label3: TLabel;

    edItogo: TEdit;

    Label4: TLabel;

    bbtGoods: TBitBtn;

    Label5: TLabel;

    dblcbContr: TDBLookupComboBox;

    procedure FormClose(Sender: TObject; var Action: TCloseAction);

    procedure bbtOKClick(Sender: TObject);

    procedure DBGrid1EditButtonClick(Sender: TObject);

    procedure CalcSum;

    procedure FormShow(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  fmIncome: TfmIncome;

 

implementation

 

uses uDM, uGoods, uMain, uRep;

 

{$R *.dfm}

 

//Функция осуществляет подсчет итоговой суммы по приходу с заданным шифром:

procedure TfmIncome.CalcSum;

begin

  DM.qrIncomeSum.Close;

  DM.qrIncomeSum.ParamByName('pIncomeID').AsInteger := DM.tbIncome.FieldByName('ID').AsInteger;

  DM.qrIncomeSum.Open;

  fmIncome.edItogo.Text := Format('%m', [DM.qrIncomeSum.FieldByName('Itogo').AsCurrency]);

end;

 

procedure TfmIncome.FormClose(Sender: TObject; var Action: TCloseAction);

begin

  if DM.tbIncomeComp.State in [dsEdit, dsInsert] then

    DM.tbIncomeComp.Cancel;

  if DM.tbIncome.State = dsEdit then

    DM.tbIncome.Cancel;

  //Если пользователь закрыл форму или нажал кнопку Отмена, то все введенные

  //данные удаляются завершением транзакции:

  if DM.Database1.InTransaction then

    DM.Database1.Rollback;

 

  DM.tbIncome.Refresh; 

  DM.tbIncomeComp.Refresh; 

  DM.tbContrag.Filtered := False;

end;

 

//Сохранение введенных данных о приходе:

procedure TfmIncome.bbtOKClick(Sender: TObject);

begin

  if DM.tbIncomeComp.State in [dsEdit, dsInsert] then

    DM.tbIncomeComp.Post;

  if DM.tbIncomeComp.RecordCount = 0 then

    Application.MessageBox('Не указано ни одного товара по приходу!',

      'Ошибка', MB_OK + MB_ICONERROR)

  else begin

    //Если пользователь указал не текущую дату в качеcтве даты прихода, изменяем ее:

    if dtpDate.Date <> DM.tbIncomeDDate.AsDateTime then begin

      DM.tbIncome.Edit;

      DM.tbIncomeDDate.AsDateTime := dtpDate.Date;

      DM.tbIncome.Post;

      end;

 

    //Завершение транзакции с сохранением всех введенных данных по приходу:

    if DM.Database1.InTransaction then

      DM.Database1.Commit;

    Close;

    end;

end;

 

//При щелчке по кнопке "..." в ячейке "Шифр товара" в DBGrid1 на экран выводится

//справочник товаров для выбора нужного товара из спсика:

procedure TfmIncome.DBGrid1EditButtonClick(Sender: TObject);

begin

  fmGoods.bbtGo.Caption := 'К форме прихода';

  fmGoods.bbtGo.Visible := True;

  if fmGoods.ShowModal = mrOK then begin

    if not (DM.tbIncomeComp.State in [dsEdit, dsInsert]) then

      DM.tbIncomeComp.Edit;

    DM.tbIncomeCompGoodsID.Value := DM.tbGoodsID.Value;

    end;

  fmGoods.bbtGo.Visible := False;

end;

 

procedure TfmIncome.FormShow(Sender: TObject);

begin

  CalcSum;

  //В списке контрагентов доступны только поставщики:

  DM.tbContrag.Filter := 'ContrType = True';

  DM.tbContrag.Filtered := True;

end;

 

end.

 

unit uIncomeAll;

 

interface

 

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls, Buttons, DBCtrls, ExtCtrls, Grids, DBGrids, ComCtrls;

 

type

  TfmIncomeAll = class(TForm)

    DBGrid1: TDBGrid;

    Panel2: TPanel;

    DBGrid2: TDBGrid;

    Panel1: TPanel;

    DBNavigator1: TDBNavigator;

    GroupBox1: TGroupBox;

    CheckBox1: TCheckBox;

    CheckBox2: TCheckBox;

    dtpDateFrom: TDateTimePicker;

    dtpDateTo: TDateTimePicker;

    bbtClose: TBitBtn;

    DBNavigator2: TDBNavigator;

    bbtIncome: TBitBtn;

    bbtPurchBook: TBitBtn;

    procedure CheckBox1Click(Sender: TObject);

    procedure bbtIncomeClick(Sender: TObject);

    procedure FormShow(Sender: TObject);

    procedure bbtPurchBookClick(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  fmIncomeAll: TfmIncomeAll;

 

implementation

 

uses uDM, uIncome, DB, uDiapason, uRep;

 

{$R *.dfm}

 

//Фильтрация данных по приходу товара по диапазону дат:

procedure TfmIncomeAll.CheckBox1Click(Sender: TObject);

var Filter: string;

begin

  Filter := '';

  if CheckBox1.Checked then

    Filter := '(DDate >= ' + QuotedStr(DateToStr(dtpDateFrom.Date)) + ')';

  if CheckBox2.Checked then begin

    if Filter <> '' then

      Filter := Filter + ' and ';

    Filter := Filter + '(DDate <= ' + QuotedStr(DateToStr(dtpDateTo.Date)) + ')';

    end;

 

  if (CheckBox1.Checked) or (CheckBox2.Checked) then begin

    DM.tbIncome.Filter := Filter;

    DM.tbIncome.Filtered := True;

    end

  else

    DM.tbIncome.Filtered := False;

end;

 

//Просмотр информации о выбранном приходе:

procedure TfmIncomeAll.bbtIncomeClick(Sender: TObject);

begin

  //Форма прихода отображается в режиме только для чтения:

  with fmIncome do begin

    bbtOK.Visible := False;

    dtpDate.Date := DM.tbIncomeDDate.AsDateTime;

    dtpDate.Enabled := False;

    dblcbContr.ReadOnly := True;

    DBGrid1.ReadOnly := True;

    DBGrid1.Columns[0].ButtonStyle := cbsNone;

    DBGrid1.Columns[1].ButtonStyle := cbsNone;

    DBNavigator1.VisibleButtons := [nbFirst,nbPrior,nbNext,nbLast];

    ShowModal;

    DBNavigator1.VisibleButtons := [nbFirst,nbPrior,nbNext,nbLast,nbInsert,nbDelete,nbEdit,nbPost,nbCancel,nbRefresh];

    DBGrid1.ReadOnly := False;

    DBGrid1.Columns[0].ButtonStyle := cbsEllipsis;

    DBGrid1.Columns[1].ButtonStyle := cbsAuto;

    dtpDate.Enabled := True;

    dblcbContr.ReadOnly := False;

    bbtOK.Visible := True;

    end;

end;

 

procedure TfmIncomeAll.FormShow(Sender: TObject);

begin

  dtpDateFrom.Date := Date;

  dtpDateTo.Date := Date;

end;

 

//Формирование книги покупок:

procedure TfmIncomeAll.bbtPurchBookClick(Sender: TObject);

var DateFrom, DateTo: TDate;

begin

  //По умолчанию (если на форме не задан диапазон дат) книга продаж формируется

  //в диапазоне "дата первого расхода"..."дата последнего расхода":

  if CheckBox1.Checked then

    DateFrom := dtpDateFrom.Date

  else begin

    DM.tbIncome.First;

    DateFrom := DM.tbIncomeDDate.AsDateTime;

    end;

  if CheckBox2.Checked then

    DateTo := dtpDateTo.Date

  else begin

    DM.tbIncome.Last;

    DateTo := DM.tbIncomeDDate.AsDateTime;

    end;

 

  if GetDiapason(DateFrom, DateTo) then

    Rep_PurchBook(DateFrom, DateTo);

end;

 

end.

unit uRep;

//Модуль для формирования отчетов и документов

 

interface

uses

  Windows, SysUtils, Classes, ComObj, DB, Controls;

 

procedure Rep_Price_Store(Form: string; Table: TDataSet);

procedure Rep_Bill(Form: string);

procedure Rep_Check;

procedure Rep_SellBook(DateFrom, DateTo: TDate);

procedure Rep_PurchBook(DateFrom, DateTo: TDate);

 

implementation

uses

  uGoods, uDM, uStore, uSumToStr;

 

//Процедура формирует отчет по товару на складе (в наличии), либо прайс-лист

//в зависимости от переданного в качестве аргумента набора данных:

procedure Rep_Price_Store(Form: string; Table: TDataSet);

var Excel: Variant;

    WorkbookName: string;

    i, j: Integer;

    Sum: Currency;

begin

  //Отключаем сетку на время формирования отчета:

  if fmGoods.Showing then

    DM.dsGoods.Enabled := False;

  if fmStore.Showing then

    DM.dsStore.Enabled := False;

  //Шаблон хранится в папке Шаблоны:

  WorkbookName := GetCurrentDir + '\Шаблоны\' + Form + '.xlt';

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

  try

    Excel.Workbooks.Open(WorkbookName);

    //Экспорт данных из таблиц БД:

    i := 5;

    Sum := 0; //Сумма Итого

    if form='Товар на складе' then begin Excel.Cells[4,13]:='Цена закуп. за ед., тен';

                                         Excel.Cells[4,14]:='Сумма, тенге'; end else

                                         Excel.Cells[4,12]:='Цена за ед., тен ';

    with DM do begin

      Excel.Cells[1,1] := Date;

      Excel.Cells[1,8] := DM.tbRequisitName.AsString;

 

      //Экспорт в таблицу списка товаров по группам:

      tbGoodsGroup.First;

      //Цикл по группам товаров:

      while not tbGoodsGroup.Eof do begin

        Table.Filter := 'GroupID = ' + tbGoodsGroup.FieldByName('ID').AsString;

        Table.Filtered := True;

 

        //Если в текущей группе есть товары:

        if Table.RecordCount>0 then begin

          //Добавление новой строки для имени группы товара:

          if i > 5 then begin

            Excel.Rows.Item[5].Select;

            Excel.Selection.Copy;

            Excel.Rows.Item[i].Select;

            Excel.ActiveSheet.Paste;

            Excel.Application.CutCopyMode := False;

            end;

 

          Excel.Cells[i,1] := tbGoodsGroupTypeName.AsString;;

          Inc(i);

 

          Table.First;

          //Цикл по товарам в текущей группе:

          for j:=i to Table.RecordCount+i-1 do begin

            //Добавление новой строки:

            Excel.Rows.Item[6].Select;

            Excel.Selection.Copy;

            Excel.Rows.Item[j].Select;

            Excel.ActiveSheet.Paste;

            Excel.Application.CutCopyMode := False;

            //Экспорт данных:

            Excel.Cells[j,2] := Table.FieldByName('Name').AsString;

            Excel.Cells[j,11] := Table.FieldByName('Unit').AsString;

            if Table = tbGoods then begin

              Excel.Cells[j,1] := FormatFloat('00000', Table.FieldByName('ID').AsFloat);

              Excel.Cells[j,12] := Table.FieldByName('PriceRealiz').AsCurrency

              end

            else begin

              Excel.Cells[j,1] := FormatFloat('00000', Table.FieldByName('GoodsID').AsFloat);

              Excel.Cells[j,12] := Table.FieldByName('Quantity').AsInteger;

              Excel.Cells[j,13] := Table.FieldByName('Price').AsCurrency;

              Excel.Cells[j,14] := Table.FieldByName('Price').AsCurrency *

                                   Table.FieldByName('Quantity').AsInteger;

              Sum := Sum + Table.FieldByName('Price').AsCurrency *

                     Table.FieldByName('Quantity').AsInteger;

              end;

            Table.Next;

            i := j+1;

            end; //for

          end; //if Table.RecordCount>0

        tbGoodsGroup.Next;

        end; //while not tbGoodsGroup.Eof

 

      Table.Filtered := False;

      end; //with

    if Table = DM.qrStore then begin

      Excel.Cells[i+1,13] := 'Итого:';

      Excel.Cells[i+1,14] := Sum;

      end;

    Excel.Visible := True;

  except

    Excel.Quit;

  end;

  //Отключаем сетку на время формирования отчета:

  if fmGoods.Showing then

    DM.dsGoods.Enabled := True;

  if fmStore.Showing then

    DM.dsStore.Enabled := True;

end;

 

//Формирование счета, либо расходной накладной:

procedure Rep_Bill(Form: string);

var Excel: Variant;

    WorkbookName: string;

    i, PosInc: Integer;

    Sum: Currency;

begin

  //Шаблон хранится в папке Шаблоны:

  WorkbookName := GetCurrentDir + '\Шаблоны\' + Form + '.xlt';

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

  try

    Excel.Workbooks.Open(WorkbookName);

    //Экспорт данных из таблиц БД:

    PosInc := 8;

    Sum := 0; //Сумма Итого

    with DM do begin

      Excel.Cells[1,8] := DM.tbRequisitName.AsString;

      Excel.Cells[2,8] := DM.tbRequisitAdress.AsString;

      Excel.Cells[3,2] := FormatFloat('00000', tbRealizID.AsFloat);

      Excel.Cells[4,2] := tbRealizDDate.AsString;

      Excel.Cells[5,4] := tbRealizContrName.AsString;

 

      //Экспорт в таблицу списка товаров по расходу:

      tbRealizComp.First;

      i := 0;

      while not tbRealizComp.Eof do begin

        //Добавление новой строки:

        if i <> 0 then begin

          Excel.Rows.Item[PosInc+i].Select;

          Excel.Selection.Insert;

          Excel.Rows.Item[PosInc].Select;

          Excel.Selection.Copy;

          Excel.Rows.Item[PosInc+i].Select;

          Excel.ActiveSheet.Paste;

          Excel.Application.CutCopyMode := False;

          end;

        //Экспорт данных:

        Excel.Cells[i+PosInc,1] := i+1;

        Excel.Cells[i+PosInc,2] := tbRealizComp.FieldByName('GoodsName').AsString;

        Excel.Cells[i+PosInc,10] := tbRealizComp.FieldByName('GoodsUnit').AsString;

        Excel.Cells[i+PosInc,11] := tbRealizComp.FieldByName('Quantity').AsInteger;

        Excel.Cells[i+PosInc,12] := tbRealizComp.FieldByName('PriceRealiz').AsCurrency/1.18;

        Excel.Cells[i+PosInc,13] := tbRealizComp.FieldByName('PriceRealiz').AsCurrency/1.18 *

                                    tbRealizComp.FieldByName('Quantity').AsInteger;

        Sum := Sum + tbRealizComp.FieldByName('PriceRealiz').AsCurrency/1.18 *

                     tbRealizComp.FieldByName('Quantity').AsInteger;

        Inc(i);

        tbRealizComp.Next;

        end;

      end; //with

    Excel.Cells[i+PosInc,13] := Sum;

    Excel.Cells[i+PosInc+1,13] := Sum*0.18;

    Excel.Cells[i+PosInc+2,13] := Sum*1.18;

    Excel.Cells[i+PosInc+4,3] := SumToTxt(Format('%.2f', [Sum*1.18]));

    Excel.Visible := True;

  except

    Excel.Quit;

  end;

end;

 

//Формирование товарного чека:

procedure Rep_Check;

var Excel: Variant;

    WorkbookName: string;

    i, PosInc: Integer;

    Sum: Currency;

begin

  //Шаблон хранится в папке Шаблоны:

  WorkbookName := GetCurrentDir + '\Шаблоны\Чек.xlt';

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

  try

    Excel.Workbooks.Open(WorkbookName);

    //Экспорт данных из таблиц БД:

    PosInc := 8;

    Sum := 0; //Сумма Итого

    with DM do begin

      Excel.Cells[1,1] := DM.tbRequisitName.AsString;

      Excel.Cells[2,1] := DM.tbRequisitAdress.AsString;

      Excel.Cells[4,2] := FormatFloat('00000', tbRealizID.AsFloat);

      Excel.Cells[5,2] := tbRealizDDate.AsString;

      Excel.Cells[6,2] := tbRealizContrName.AsString;

 

      //Экспорт в таблицу списка товаров по расходу:

      tbRealizComp.First;

      i := 0;

      while not tbRealizComp.Eof do begin

        //Добавление новой строки:

        if i <> 0 then begin

          Excel.Rows.Item[PosInc+i].Select;

          Excel.Selection.Insert;

          Excel.Rows.Item[PosInc].Select;

          Excel.Selection.Copy;

          Excel.Rows.Item[PosInc+i].Select;

          Excel.ActiveSheet.Paste;

          Excel.Application.CutCopyMode := False;

          end;

        //Экспорт данных:

        Excel.Cells[i+PosInc,1] := tbRealizComp.FieldByName('GoodsName').AsString;

        Excel.Cells[i+PosInc,2] := tbRealizComp.FieldByName('Quantity').AsInteger;

        Excel.Cells[i+PosInc,3] := tbRealizComp.FieldByName('PriceRealiz').AsCurrency/1.18;

        Sum := Sum + tbRealizComp.FieldByName('PriceRealiz').AsCurrency/1.18 *

                     tbRealizComp.FieldByName('Quantity').AsInteger;

        Inc(i);

        tbRealizComp.Next;

        end;

 

      end; //with

    Excel.Cells[i+PosInc,4] := Sum;

    Excel.Cells[i+PosInc+1,4] := Sum*0.18;

    Excel.Cells[i+PosInc+2,4] := Sum*1.18;

    Excel.Cells[i+PosInc+2,1] := SumToTxt(Format('%.2f', [Sum*1.18]));

    Excel.Visible := True;

  except

    Excel.Quit;

  end;

end;

 

//Формирование книги продаж:

procedure Rep_SellBook(DateFrom, DateTo: TDate);

var Excel: Variant;

    WorkbookName: string;

    i, PosInc: Integer;

    Sum: Currency;

begin

  //Фильтрация данных по расходу товара по диапазону дат:

  DM.tbRealiz.Filter := '(DDate >= ' + QuotedStr(DateToStr(DateFrom)) + ')' +

    ' and (DDate <= ' + QuotedStr(DateToStr(DateTo)) + ')';

  DM.tbRealiz.Filtered := True;

 

  //Шаблон хранится в папке Шаблоны:

  WorkbookName := GetCurrentDir + '\Шаблоны\Книга продаж.xlt';

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

  try

    Excel.Workbooks.Open(WorkbookName);

    //Экспорт данных из таблиц БД:

    PosInc := 15;

    Sum := 0; //Сумма Итого

    with DM do begin

      Excel.Cells[6,2] := DM.tbRequisitName.AsString;

      Excel.Cells[8,1] := string(Excel.Cells[8,1]) + DateToStr(DateFrom) + ' по ' +

        DateToStr(DateTo);

 

      //Экспорт в таблицу списка товаров по расходу:

      tbRealiz.First;

      i := 0;

      while not tbRealiz.Eof do begin

        //Добавление новой строки:

        if i <> 0 then begin

          Excel.Rows.Item[PosInc+i].Select;

          Excel.Selection.Insert;

          Excel.Rows.Item[PosInc].Select;

          Excel.Selection.Copy;

          Excel.Rows.Item[PosInc+i].Select;

          Excel.ActiveSheet.Paste;

          Excel.Application.CutCopyMode := False;

          end;

        //Экспорт данных:

        Excel.Cells[i+PosInc,1] := FormatFloat('00000', tbRealizID.AsFloat) +

          ' ' + tbRealizDDate.AsString;

        Excel.Cells[i+PosInc,5] := tbRealizDDate.AsString;

        Excel.Cells[i+PosInc,6] := tbRealizSum.AsCurrency;

        Excel.Cells[i+PosInc,7] := tbRealizSum.AsCurrency/1.18;

        Excel.Cells[i+PosInc,8] := tbRealizSum.AsCurrency/118*18;

        Sum := Sum + tbRealizSum.AsCurrency;

        Inc(i);

        tbRealiz.Next;

        end;

      end; //with

    Excel.Cells[i+PosInc,6] := Sum;

    Excel.Cells[i+PosInc,7] := Sum/1.18;

    Excel.Cells[i+PosInc,8] := Sum/118*18;

    Excel.Visible := True;

  except

    Excel.Quit;

  end;

  DM.tbRealiz.Filtered := False;

end;

 

//Формирование книги покупок:

procedure Rep_PurchBook(DateFrom, DateTo: TDate);

var Excel: Variant;

    WorkbookName: string;

    i, PosInc: Integer;

    Sum: Currency;

begin

  //Фильтрация данных по расходу товара по диапазону дат:

  DM.tbIncome.Filter := '(DDate >= ' + QuotedStr(DateToStr(DateFrom)) + ')' +

    ' and (DDate <= ' + QuotedStr(DateToStr(DateTo)) + ')';

  DM.tbIncome.Filtered := True;

 

  //Шаблон хранится в папке Шаблоны:

  WorkbookName := GetCurrentDir + '\Шаблоны\Книга покупок.xlt';

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

  try

    Excel.Workbooks.Open(WorkbookName);

    //Экспорт данных из таблиц БД:

    PosInc := 15;

    Sum := 0; //Сумма Итого

    with DM do begin

      Excel.Cells[6,3] := DM.tbRequisitName.AsString;

      Excel.Cells[8,1] := string(Excel.Cells[8,1]) + DateToStr(DateFrom) + ' по ' +

        DateToStr(DateTo);

 

      //Экспорт в таблицу списка товаров по расходу:

      tbIncome.First;

      i := 0;

      while not tbIncome.Eof do begin

        //Добавление новой строки:

        if i <> 0 then begin

          Excel.Rows.Item[PosInc+i].Select;

          Excel.Selection.Insert;

          Excel.Rows.Item[PosInc].Select;

          Excel.Selection.Copy;

          Excel.Rows.Item[PosInc+i].Select;

          Excel.ActiveSheet.Paste;

          Excel.Application.CutCopyMode := False;

          end;

        //Экспорт данных:

        Excel.Cells[i+PosInc,1] := i+1;

        Excel.Cells[i+PosInc,2] := FormatFloat('00000', tbIncomeID.AsFloat) +

          ' ' + tbIncomeDDate.AsString;

        Excel.Cells[i+PosInc,3] := tbIncomeDDate.AsString;

        Excel.Cells[i+PosInc,4] := tbIncomeDDate.AsString;

        Excel.Cells[i+PosInc,9] := tbIncomeSum.AsCurrency;

        Excel.Cells[i+PosInc,10] := tbIncomeSum.AsCurrency/1.18;

        Excel.Cells[i+PosInc,11] := tbIncomeSum.AsCurrency/118*18;

        Sum := Sum + tbIncomeSum.AsCurrency;

        Inc(i);

        tbIncome.Next;

        end;

      end; //with

    Excel.Cells[i+PosInc,9] := Sum;

    Excel.Cells[i+PosInc,10] := Sum/1.18;

    Excel.Cells[i+PosInc,11] := Sum/118*18;

    Excel.Visible := True;

  except

    Excel.Quit;

  end;

  DM.tbIncome.Filtered := False;

end;

 

end.