54
UNIVERZA V MARIBORU FAKULTETA ZA ORGANIZACIJSKE VEDE Diplomsko delo visokošolskega strokovnega študija Smer: informatika v organizaciji in managementu SPLETNA REŠITEV ZA VODENJE EVIDENCE ZAPOSLENIH IZ VARSTVA PRI DELU Mentor: doc. dr. Borut Werber Kandidat: Tadej Nadvešnik Kranj, november 2006

SPLETNA REŠITEV ZA VODENJE EVIDENCE ZAPOSLENIH IZ VARSTVA PRI DELU · 2018. 8. 24. · evidence iz varstva pri delu (VPD). Diplomsko delo je nastajalo v podjetju MC d.d., ki se ukvarja

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

  • UNIVERZA V MARIBORU FAKULTETA ZA ORGANIZACIJSKE VEDE

    Diplomsko delo visokošolskega strokovnega študija Smer: informatika v organizaciji in managementu

    SPLETNA REŠITEV ZA VODENJE EVIDENCE ZAPOSLENIH IZ VARSTVA PRI

    DELU

    Mentor: doc. dr. Borut Werber Kandidat: Tadej Nadvešnik

    Kranj, november 2006

  • ZAHVALA Hvala mentorju dr. Borutu Werberju za pomoč in nasvete pri izdelavi diplomske naloge. Hvala gospodu Aljažu Koželju iz podjetja MC d.d. za strokovne nasvete in pomoč pri izdelavi diplomske naloge. Hvala podjetju MC d.d., ki mi je omogočilo izdelavo diplomske naloge.

  • POVZETEK Namen diplomskega dela je predstaviti novo tehnologijo .NET okolja in aplikacijo, ki je napisana v tem okolju. Cilj dela je seznaniti bralca s spletno aplikacijo za vodenje evidence iz varstva pri delu (VPD). Diplomsko delo je nastajalo v podjetju MC d.d., ki se ukvarja s programskimi rešitvami in je sestavljeno iz dveh delov. V prvem delu je opisano .NET okolje, ki je povsem novo in postavlja nov mejnik v programiranju. V drugem delu je opisana spletna aplikacija za vodenje evidence zaposlenih iz varstva pri delu. Opisane so forme, ki se uporabljajo v aplikaciji in izpisi, ki so potrebni za delovanje aplikacije. Prikazana in razložena je koda napisana v programskem jeziku C#, ki je popolnoma nov jezik za ustvarjanje aplikacij na .NET platformi. KLJUČNE BESEDE

    - Varstvo pri delu - .NET - ASP.NET - SQL - C#

  • ABSTRACT The purpose of the thesis is to introduce a new technology of the net environment and the application written in this environment. Its objective is to inform the reader on a web application for management of records pertaining to safety at work. The thesis, consisting of two parts, was drawn up in the company MC d.d., that is engaged in software solutions. The first part describes a net environment that is completely new and assumes a new programming milestone. The second part describes a web application for the management of employees records in the field of safety at work. We are describing the forms that are used in the application and print-outs required for application's operation. The thesis presents and explains the code in C# programming language that is a completely new language for creating applications on the net platform. KEYWORDS

    - safety at work - .NET - ASP.NET - SQL - C#

  • KAZALO 1 UVOD ....................................................................................................................... 3 1.1 Predstavitev problema........................................................................................ 3 1.2 Predstavitev okolja ............................................................................................. 3 1.3 Predpostavke in omejitve ................................................................................... 5 1.4 Metode dela........................................................................................................ 5 1. 5 Varstvo pri delu................................................................................................. 6

    2 OSNOVE .NET PLATFORME................................................................................ 8 2.1 Ogrodje .NET..................................................................................................... 8 2.2 ASP.NET............................................................................................................ 8 2.3 C# ....................................................................................................................... 9 2.4 SQL .................................................................................................................... 9 2.5 Kdaj SQL?........................................................................................................ 10 2.6 ADO.NET ........................................................................................................ 10

    3. OBSTOJEČE STANJE .......................................................................................... 11 3.1 Posnetek stanja ................................................................................................. 11 3.2 Kritična analiza ................................................................................................ 11

    4 IZDELAVA PROGRAMSKE REŠITVE............................................................... 12 4.1 Šifranti.............................................................................................................. 12 4.1.1. Šifrant delavci .......................................................................................... 12 4.1.2 Šifrant lokacije .......................................................................................... 12 4.1.2.1 Tabela Company ................................................................................ 12

    4.3 Gumb ponastavi na šifrantu lokacije................................................................ 12 4.4 Gumb briši na šifrantu lokacije ........................................................................ 12 4.5 Gumb dodaj na šifrantu lokacije ...................................................................... 12 4.6 Gumb shrani na šifrantu lokacije ..................................................................... 12 4.7 Šifrant tipično delovno mesto .......................................................................... 12 4.8 Šifrant splošna delovna mesta.......................................................................... 12 4.9 Šifrant študenti ................................................................................................. 12 4.10 Šifrant Osebna varovalna oprema .................................................................. 12 4.11 Šifrant protipožarna oprema po lokacijah ...................................................... 12 4.12 Šifrant delovna oprema .................................................................................. 12 4.13 Šifrant neustreznost delovnega mesta ............................................................ 12 4.14 Šifrant tveganja .............................................................................................. 12 4.15 Šifrant zdravstvene zahteve............................................................................ 12 4.16 Zaščita proti vnosu črk ................................................................................... 12 4.17 Zaščita proti vnosu napačnega EMŠO ........................................................... 12 4.18 Aktivnosti delavcev........................................................................................ 12 4.19 Podatkovni model aplikacije VPD................................................................. 12 4.20 Vnos delavca v aplikacijo .............................................................................. 12 4.21 Poškodba delavca ........................................................................................... 12

    5 IZPISI...................................................................................................................... 12 5.1 Izpis šifranta meritve........................................................................................ 12 5.2 Izpis študentov ................................................................................................. 12

    6 ZAKLJUČKI........................................................................................................... 12 6.1 Ocena učinkov.................................................................................................. 12

  • 6.2 Možnosti nadaljnjega razvoja .......................................................................... 12 6.3 Literatura in viri ............................................................................................... 12 6.4 Priloga .............................................................................................................. 12 6.5 Kazalo slik........................................................................................................ 12 6.6 Kratice in akronimi .......................................................................................... 12

  • Univerza v Mariboru - Fakulteta za organizacijske vede Diplomsko delo visokošolskega strokovnega študija _____________________________________________________________________________________________________________________________________________________________________________________________________________

    ___________________________________________________________________________________________

    Tadej Nadvešnik: Spletna rešitev za vodenje evidence zaposlenih iz varstva pri delu stran 3 od 54

    1 UVOD

    1.1 Predstavitev problema V skladu z veljavno zakonodajo mora podjetje voditi številne evidence s področja varnosti pri delu, svoje delavce mora pošiljati na zdravstvene preglede. To pomeni, da mora svoje delavce pošiljati na redne zdravstvene preglede. Zagotoviti jim mora ustrezno varovalno opremo, jih razporediti na zanje ustrezno delovno mesto glede na pogoje dela, ipd. (povzeto po: Zakon o varnosti in zdravju pri delu, 2006). Zaradi zakona se je pojavila potreba po izdelavi aplikacije s pomočjo katere bo možno vse podatke o zaposlenih s področja varnosti pri delu voditi na enem mestu. Ker je obstajala potreba pa tej aplikaciji v relativno kratkem času, je bilo odločeno, da se gre v nakup tovrstne aplikacije, ker bi bila izdelava take aplikacije zelo obsežna in kompleksna. (povzeto po: Zakon o varnosti in zdravju pri delu, 2006). Naloga opisuje .NET okolje in predstavlja spletno rešitev za vodenje evidenc zaposlenih iz varstva pri delu – aplikacija VPD. Namen naloge je bralcu prikazati .NET okolje iz teoretičnega vidika in hkrati tudi praktično aplikacijo .NET okolja na konkretnem primeru. Aplikacija, kupljena od tujega partnerja, je imela precej problemov, kot npr. nedokončanost aplikacije, ni bilo dokumentacije, stavki SQL niso bili pravilno napisani. Sprva so menili, da se jo bo dalo urediti na sorazmerno enostaven način, toda kaj kmalu se je pokazalo, da bo veliko trši oreh, kot je kazalo na začetku. Aplikacija je bila zelo obsežna, zato jo je bilo treba na začetku dobro preizkusiti in jo spoznati. Testiranja sem se lotil tako, da sem delal posnetke celotne aplikacije in si zapisoval napake in opazke. Aplikacijo sem testiral pet dni. Na vsaki formi sem pritisnil vsak gumb in si zapisal, kakšna je bila reakcija programa. Izpolnil sem vsa tekstovna polja, včasih pa le nekatera izmed njih in pritisnil gumb ponastavi ali shrani ali briši in videl, kaj se je zgodilo s podatki na zaslonu. Program je javil napako ali pa se je operacija uspešno izvedla. V primeru napake sem naredil posnetek napake in ga uvozil v Wordov dokument ter dodal svoj komentar, kako sem prišel do napake. Tako smo imeli celotno poročilo napak na enem mestu. Največji problem se je kazal v kreiranju napačnih SQL stavkov, ki so prikazovali podatke iz baze oziroma jih niso prikazovali. Problem so mi povzročali gumbi, ki so opravljali različne funkcije na formi. Težko je bilo ugotoviti, kaj dela posamezen gumb, ker so le-ti opravljali dvojno funkcijo. Pri izpisih sem preveril ali se izpisujejo vsi potrebni podatki, ki so zahtevani. Pri napotnicah je bilo poleg kontrole podatkov potrebno preveriti, če so podatki na točno določenem mestu. Pregledal sem vsa sporočila, ki so se pojavila ob kliku na gumbe, ker so bila nekatera napisana še v tujem jeziku.

    1.2 Predstavitev okolja Programska rešitev VPD je namenjena vodenju evidenc s področja varnosti in zdravja pri delu, kot so npr. Evidenca zdravstvenih pregledov, evidenca poškodb in podobno s podpornimi šifranti, ki služijo za hranjenje podatkov za potrebe izpisov

  • Univerza v Mariboru - Fakulteta za organizacijske vede Diplomsko delo visokošolskega strokovnega študija _____________________________________________________________________________________________________________________________________________________________________________________________________________

    ___________________________________________________________________________________________

    Tadej Nadvešnik: Spletna rešitev za vodenje evidence zaposlenih iz varstva pri delu stran 4 od 54

    napotnic in raznih pregledov. Programska rešitev omogoča vodenje evidenc hkratno za več pravnih subjektov. Prav tako zaradi narave izvedbe (kot spletna aplikacija) omogoča tudi oddaljeno delo s poljubne lokacije, v kolikor ima le-ta dostop do interneta. Programska rešitev VPD je tehnično izvedena kot spletna aplikacija z uporabo .NET ogrodja in ASP.NET rešitve, ki je znotraj .NET ogrodja namenjeno razvijanju spletnih aplikacij. To so torej strani, ki jih strežnik dinamično ustvari z izvajanjem kode v skriptnem jeziku v sami datoteki in kombiniranjem rezultatov izvajanja z HTML ali XHTML kodo za postavitev strani. Tako pripravljena stran se nato pošlje uporabniku, ki stran pregleda, opravi morebitne izbore, vnose podatkov in ostale potrebne akcije, ki lahko tudi povzročijo, da stran pošlje podatke o uporabnikovih vnosih oz. izboru ponujenih podatkov nazaj na strežnik, kjer se obdelajo in po potrebi shranijo, eventualno se lahko tudi pošlje rezultate obdelave nazaj uporabniku ali izvede druga potrebna akcija. Zaradi kompleksnosti aplikacije in specifičnih zahtev uporabnikov programa, je bilo za izdelavo rešitve znotraj .NET ogrodja uporabljeno še posebno ogrodje, ki omogoča konsistenten in univerzalen dostop do podatkov hkrati z dodatnimi storitvami, kot so upravljanje uporabnikov in pravic uporabnikov, dinamično manipuliranje z elementi posameznih oken uporabniškega vmesnika, upravljanje z izpisi (prikaz, izvoz v razne formate,…). V celotnem sistemu imamo dva sistema zagotavljanja varnosti: kontrola dostopa na nivoju uporabnika in kontrola dostopa preko vlog, katerim so dodeljene določene pravice in omejitve glede na njihove potrebe po uporabi aplikacije. Na uporabnika je neposredno vezana le pravica dostopa do aplikacije, medtem ko je nabor funkcionalnosti, ki je določenemu uporabniku na voljo v glavnem vezan na dodelitev uporabnika določeni vlogi (administrator, vnos podatkov, urejanje podatkov,…), na katero so glede na namen vloge vezane neposredne pravice in omejitve v zvezi z dostopom do funkcionalnosti in podatkov programa. Opisani model je shematsko predstavljen na spodnjem diagramu.

    A ctiv ity

    U se r

    A c tiv ityP e rm ss ion

    SLIKA 1: Implementacija varnostnega modela v aplikaciji (dokumentacija aplikacije VPD, 2006)

  • Univerza v Mariboru - Fakulteta za organizacijske vede Diplomsko delo visokošolskega strokovnega študija _____________________________________________________________________________________________________________________________________________________________________________________________________________

    ___________________________________________________________________________________________

    Tadej Nadvešnik: Spletna rešitev za vodenje evidence zaposlenih iz varstva pri delu stran 5 od 54

    Activity je poljubna aktivnost v aplikaciji, do katere imajo uporabniki dostop, kot npr. pregled delavcev, izpis napotnic in podobno. ActivityPermission je tabela, ki vsebuje pooblastila za uporabo določene aktivnosti. User predstavlja tabelo z uporabniki aplikacije.

    1.3 Predpostavke in omejitve Osnovna predpostavka je zagotoviti delujočo aplikacijo VPD, tako da jo lahko stranke nemoteno uporabljajo. Ob tem predpostavljam, da imajo vsa podjetja vzpostavljeno notranje omrežje in potrebno informacijsko strukturo. Zaradi določenih sprememb in želja stranke je potrebno aplikacijo ves čas vzdrževati in jo nadzorovati. Aplikacijo trenutno uporabljajo v dveh podjetjih. Omejitve bodo nastajale, ko se bo aplikacija razširila na več podjetij in bo potrebno za vsako podjetje prilagajati verzije in jih sproti testirati na vsakem strežniku posebej. Aplikacija je sicer zasnovana tako, da imamo eno verzijo in jo sproti prilagajmo uporabnikoma. Vsak uporabnik ima specifične zahteve, zato določena vnosna polja enemu uporabniku prikažemo, drugemu pa ne. Sedaj, ko sta samo dva uporabnika aplikacije, ni problema s specifičnimi zahtevami. V primeru, da se aplikacija razširi na več uporabnikov (npr. 10), bomo verjetno imeli eno verzijo za določen krog uporabnikov glede na njihove zahteve, medtem ko bomo za drug krog uporabnikov lahko imeli precej drugačno verzijo pač glede na njihove potrebe.

    1.4 Metode dela Poslovni proces prodaje in razvoja aplikacije za stranko aplikacije temelji na metodologiji, ki je značilna za tovrstne poslovne procese. Razvoj aplikacije temelji na timskem delu. Po Pedagoški enciklopediji (Pedagoška enciklopedija 1989, str. 446) je timsko delo oblika aktivnosti, ki jo opravlja skupina strokovnjakov na tak način, da je osnova za sodelovanje neposredna delitev nalog med enakopravnimi strokovnjaki in ne položaj posameznika v formalni hierarhiji. Timsko delo je koristno, kadar se za uspešno reševanje kompleksnih nalog/problemov zahteva sodelovanje več strokovnjakov, interdisciplinarni pristop ter sodelovanje različnih profilov strokovnjakov . Predpostavka za uspešno timsko delo, v katerem bodo izkoriščeni vsi potenciali, sposobnosti vsakega strokovnjaka je, da skupina preraste iz skupine strokovnjakov v skupino enakopravnih strokovnjakov - tim. Naše delo je potekalo po naslednjem postopku:

    1. Sestanek z direktorjem, da predstavi in pojasni, komu bo aplikacija

    namenjena in kaj bo omogočala.

    2. Določitev tima, ki se bo ukvarjal z aplikacijo in jo razvil do konca ter

    vzdrževal.

  • Univerza v Mariboru - Fakulteta za organizacijske vede Diplomsko delo visokošolskega strokovnega študija _____________________________________________________________________________________________________________________________________________________________________________________________________________

    ___________________________________________________________________________________________

    Tadej Nadvešnik: Spletna rešitev za vodenje evidence zaposlenih iz varstva pri delu stran 6 od 54

    3. Inštalacija verzije na naše računalnike in strežnike.

    4. Testiranje verzije pri nas in izdelava poročila o testu z opisom vseh

    pomanjkljivosti in opazk.

    5. Programiranje in popravljanje napak ter sprotno testiranje.

    6. Prenos verzije preko varne povezave (VPN) k uporabniku.

    7. Testiranje verzije preko oddaljenega dostopa do strežnika pri uporabniku.

    8. Uporabnik lahko nemoteno uporablja verzijo.

    9. Vzdrževanje aplikacije in dodajanje modulov po željah stranke.

    Prednost timskega dela je, da se člani tima zavedajo medsebojne odvisnosti. Razumejo, da je mogoče osebne in timske cilje učinkoviteje doseči le z vzajemno podporo in sodelovanjem. Člani tima čutijo močnejšo poklicno in stanovsko pripadnost, saj so zavezani ciljem, ki so jih sami oblikovali. S svojimi sposobnostmi in znanjem člani tima prispevajo k skupnemu uspehu. V timu se razvijajo občutki zaupanja, spodbujeno je sproščeno izražanje idej, mnenj, nestrinjanj in občutij, vprašanj, dilem. Člani tima razvijajo odprto in iskreno komunikacijo, trudijo se razumeti poglede in argumente drugih članov. Pri razvijanju raznih spretnosti in pristopov spodbujajo drug drugega in so deležni medsebojne podpore. Članom tima predstavljajo konflikti le enega od vidikov človeške interakcije, konfliktne situacije zaznavajo kot priložnosti za preverjanje novih idej, lastne fleksibilnosti in tolerantnosti. Probleme rešujejo hitro in konstruktivno. Člani tima sodelujejo pri odločanju. Timsko delo osebnostno in strokovno oblikuje člane tima, predvsem z vzdušjem, pogoji dela in zahtevami, ki jih prednje postavlja skupna naloga. (povzeto po: Timsko delo, 2006).

    1. 5 Varstvo pri delu Varstvo in zdravje pri delu (VZD) obsega pravice, obveznosti in odgovornosti zaposlenih in drugih oseb, ki opravljajo delo oz. se zadržujejo na delovnem območju, kakor tudi varnostne ukrepe, normative, postopke in opravila, določene s predpisi, opisi delovnih mest in drugimi organizacijskimi predpisi in navodili s katerimi podjetje ureja varnost pri delu. Pravice in dolžnosti na področju varstva pri delu imajo vsi, ki so v delovnem razmerju s podjetjem. Od delavcev, ki so dolžni upoštevati, izvajati in zagotavljati VZD ter javljati in izogibati se vsake aktivnosti, ki bi imela za posledico nevarnost pri delu pa do odgovornih za nadzor in izvajanje VZD. VZD-ju je zagotovljeno, če strokovno usposobljena in zdravstveno sposobna oseba, ob normalni pazljivosti, z upoštevanjem in izvajanjem splošnih in posebnih ukrepov za varnost pri delu opravlja delo, ne da bi pri tem prišlo do telesnih poškodb ali zdravstvenih okvar delavca, delovnega sredstva ali drugih ljudi. Za izvajanje ukrepov za VZD, ki niso zajeti v organizacijskem predpisu in delovnih navodilih, ki spadajo k tem organizacijskem predpisu, so pa specifični pri izvajanju posameznega delovnega procesa, je odgovoren vodja oddelka v katerem se tak

  • Univerza v Mariboru - Fakulteta za organizacijske vede Diplomsko delo visokošolskega strokovnega študija _____________________________________________________________________________________________________________________________________________________________________________________________________________

    ___________________________________________________________________________________________

    Tadej Nadvešnik: Spletna rešitev za vodenje evidence zaposlenih iz varstva pri delu stran 7 od 54

    proces izvaja. Vodja mora zagotoviti, da so omenjeni ukrepi vključeni v tehnologijo dela ali v posebna navodila. Vodja mora v organizacijski enoti katero vodi zagotoviti usposabljanje za varno opravljanje dela za vsakega delavca ob sklenitvi delovnega razmerja, ob razporeditvi na drugo delovno mesto, ob uvajanju nove tehnologije in novih sredstev za delo ter ob spremembi v delovnem procesu tako, da prepreči morebitno nevarnost pri izvajanju dela. (povzeto po: Zakon o varnosti in zdravju pri delu, 2006).

  • Univerza v Mariboru - Fakulteta za organizacijske vede Diplomsko delo visokošolskega strokovnega študija _____________________________________________________________________________________________________________________________________________________________________________________________________________

    ___________________________________________________________________________________________

    Tadej Nadvešnik: Spletna rešitev za vodenje evidence zaposlenih iz varstva pri delu stran 8 od 54

    2 OSNOVE .NET PLATFORME

    2.1 Ogrodje .NET Nova razvojna platforma .NET je za Microsoft najpomembnejša, saj so nove internetne tehnologije razkrile pomanjkljivosti Windowsov, predvsem zaradi Sunove Jave. Grožnja tekmecev je bila največji motiv za Microsoftov zasuk k ogrodju .NET. Opustitev arhitekture DNA in predvsem komponentnega modela COM+, ki so ga še pred letom dni razglašali za pravo pot v prihodnost, je prav gotovo tiho priznanje za uspeh Jave na področjih, ki jih Microsoft šele osvaja. Glavna ideja je v tem, da se koda ne prevaja več v strojno kodo (kodo, prirejeno za določen procesor), temveč v vmesno kodo. Nad operacijskim sistemom teče Common Language Runtime (CLR), ki nalaga kodo, prevedeno v vmesni jezik. Ima podobno funkcijo kot JVM (Java Virtual Machine). Nad CLR je knjižnica razredov, kot so kolekcije, razredi za delo z vhodno-izhodnimi napravami, nizi, grafiko itd. CLR vedno preverja, ali se določena koda lahko izvede ali ne, tako je koda varna. Teoretično lahko razvijamo programsko opremo za okolje .NET v kateremkoli programskem jeziku, ki ima napisan prevajalnik za prevajanje v vmesno kodo. Tako so že razviti prevajalniki za nekaj deset programskih jezikov (C#, Visual Basic, Managed C++, Eiffel, COBOL, itd.). Vsi jeziki morajo implementirati osnovne podatkovne tipe ogrodja .NET. Seveda vse specifičnosti ogrodja .NET izkorišča le C#. Tako razvite razrede zlagamo v združbe, ki so samo opisne (metapodatki - opis razreda, metod, atributov, komentarji, oznaka verzije itd). Tako ni več potrebna registracija komponent, temveč le prekopiramo datoteko na sistemsko mapo ali navedemo mapo za kretnico. Namestitev nove programske opreme se tako zelo poenostavi, saj ni treba zaganjati namestitvenih programov, temveč le prekopiramo datoteko. S tem naj bi rešili tudi večni problem z različnimi verzijami DLL-jev. Pri Microsoftu so poskrbeli za povezljivost s starimi aplikacijami, ki niso bile pisane v skladu z arhitekturo .NET. Tako se lahko stare in nove komponente povezujejo prek posebnih ovojnic, ki poskrbijo za ustrezne prilagoditve in pretvorbe. (prosto po: Sharp, J.,(2005), stran: 3-22).

    2.2 ASP.NET Bistvena razlika med ASP.NET in ASP je v tem, da se sedaj podobno kot pri JSP-jih izvede koda, ki se prevede. ASP-ji so bili počasni, ker se je koda vedno interpretirala. Z oznako "CodeBehind" povemo pot do datoteke s kodo. Koda je lahko napisana v kateremkoli jeziku, ki ga podpira .NET. Datoteke ASP.NET imajo končnico .aspx. Ponovno uporabni gradniki imajo končnico .ascx. Prednost tehnologije ASP je tudi v velikem številu brezplačnih, a tudi profesionalnih komponent ASP, ki so nam na razpolago. Omogočajo nam izvajanje poljubnih

  • Univerza v Mariboru - Fakulteta za organizacijske vede Diplomsko delo visokošolskega strokovnega študija _____________________________________________________________________________________________________________________________________________________________________________________________________________

    ___________________________________________________________________________________________

    Tadej Nadvešnik: Spletna rešitev za vodenje evidence zaposlenih iz varstva pri delu stran 9 od 54

    aplikacij, naj tu omenimo samo programe za pošiljanje e-pošte, prikaz koledarjev, različne števce ipd. (prosto po: Davis, S. (2006), stran:25).

    2.3 C# Java je postala za Microsoft že huda grožnja predvsem zaradi izjemne priljubljenosti med razvijalci. Prvotni poizkus razširitev za programski jezik C++, poimenovan COOL, se je izkazal za prezapletenega. Microsoft se je odločil za povsem nov programski jezik C# (izgovarja se kot see-sharp). Avtor jezika je Anders Hejlberg. Jezik C# so poslali v standardizacijo v organizacijo ECMA, tako da ni več njegova last. C# je komponentni jezik (in seveda tudi objektni). V oglatih oklepajih določamo vrednosti sistemskih atributov oz. atributov komponente, ki jih lahko prek refleksije uporabljamo tudi v lastnih programih. Ker C# in tudi Java izhajata iz C-ja, je tudi njuna sintaksa zelo podobna. Kljub temu obstajajo razlike. V javi je možno parametre pri klicu metode poslati le po vrednosti. V C# je to privzeti način. Če pa dodamo rezervirano besedo "ref" ali "out", se parametri pošljejo po referenci (lahko vrnemo rezultat). C# pozna naštevalne tipe, ki jih Java ne pozna. Namesto notranjih razredov, ki so potrebni predvsem pri povratnih klicih in poslušalcih, uporablja C# zastopnike. To je poznal tudi Visual J++ in je bil eden od razlogov, da je Sun tožil Microsoft. C# pozna poleg javinih tipov še nekatere nove: UInt16, UInt32, UInt64. (prosto po: Nagel, C. (2006), stran:120-135).

    2.4 SQL SQL ali Structured Query Language je jezik, ki je bil razvit sredi 80ih let. Potreba po njem se je pokazala zaradi nekompatibilnosti med takratnimi strežniki podatkovnih baz. S pomočjo SQL-a lahko tako zagotovimo, da bo aplikacija ostala razširljiva tudi po tem, ko preraste okvire začetnega strežnika in programja. Trenutno je skupni imenovalec skoraj vseh strežnikov, ki so na voljo, specifikacija SQL92. Večina pa ponuja tudi svoje lastne bolj ali manj standardizirane dodatke, ki omogočajo sicer hitrejše in udobnejše reševanje problemov, vendar so le-ti hkrati tudi dvorezen meč, saj nas priklenejo na enega samega ponudnika SQL strežnika. Osnove SQL-a so baza, tabela, vrstica in polje, zato bom vsakega od teh na kratko opisal:

    � baza - skupek vseh tabel, funkcij in nasploh vseh podatkov, ki se nahajajo na strežniški strani;

    � tabela - zaključena celota vseh podatkov z enako strukturo - enakimi vrsticami;

    � vrstica - samostojen vpis v tabeli, ki sestoji iz polij; � polje - najmanjša enota informacije znotraj ene vrstice; s polji je moč

    matematično in drugače manipulirati znotraj jezika SQL, zato morajo imeti polja določen tip (številski, tekstovni...).

  • Univerza v Mariboru - Fakulteta za organizacijske vede Diplomsko delo visokošolskega strokovnega študija _____________________________________________________________________________________________________________________________________________________________________________________________________________

    ___________________________________________________________________________________________

    Tadej Nadvešnik: Spletna rešitev za vodenje evidence zaposlenih iz varstva pri delu stran 10 od 54

    Najvišja enota, s katero se lahko manipulira znotraj jezika SQL, je tabela. (povzeto po: Osnove Sql in njegova uporaba v perlu, 2006).

    2.5 Kdaj SQL? Preden začnemo pisati projekt, je potrebno ugotoviti, ali je SQL sploh rešitev za naše potrebe. Zavedati se je treba, da tudi nekateri najbolj varčni strežniki poberejo kar nekaj dragocenih sistemskih sredstev. Prvo pravilo je, da če ne potrebujemo ničesar več kot osnovnih poizvedb po podatkih, načeloma ne potrebujemo SQL. Osnovne poizvedbe so tu mišljene predvsem kot neposredno iskanje po poljih. Čim se lotimo naloge križnega indeksiranja ali česarkoli podobnega, je uporaba SQL nadvse priporočljiva, saj nam bo velikokrat prihranila ogromno dragocenega časa in živcev. Ko se lotimo večjih stvaritev – na primer spletne oglasne deske ali česa podobnega, kjer je potrebno imeti več različnih strukturiranih podatkov, včasih kaj spremeniti ali celo izbrisati, pa se hitro pokaže, da je SQL verjetno najhitrejša in tudi najcenejša rešitev. Najbolj pomembno je, da pazimo in ne izumljamo tople vode znova in znova. Nekaj ur učenja SQL-ja lahko prihrani nekaj tednov pisanja lastnih rutin za tisto, kar so nekateri že zdavnaj naredili in to dobro. (prosto po: Fronckowiak,J.,(199), stran: 20-55).

    2.6 ADO.NET ADO.NET je standardiziran vmesnik za dostop do podatkov in manipulacijo s temi podatki, ki so lahko na različnih virih (baze podatkov, datoteke, elektronska pošta itd.). Vmesnik ima popolnoma drugačen objektni model kot njegov predhodnik ADO. Za dostop do baze podatkov se uporablja dostop do podatkov brez povezave. To pomeni, da se pri vsaki izvedbi ukaza SQL vzpostavi povezava z bazo podatkov, dobljeni podatki se prenesejo v pomnilnik, povezava z bazo pa se prekine. Seveda se prekine le logična povezava z bazo podatkov. Nato podatke obdelujemo v pomnilniku. Zbirka podatkov ima lahko sedaj eno ali več tabel, tako da lahko tudi v pomnilniku vzpostavimo povezavo med tabelami. Prej smo imeli le t.i. "RecordSet" objekt, kjer je bila le ena tabela. Podatkovna tabela ima lahko več objektov tipa podatkovne vrstice. Ko v pomnilniku kreiramo objekte, jih lahko poimenujemo. Tako se lahko v programu sklicujemo nanje prek imena. Do podatkov lahko dostopamo tudi generično z imenom atributa, npr. getInt32 ("id"). Če razvijamo aplikacijo odjemalec/strežnik, lahko rezultat poizvedbe zelo enostavno povežemo kar z objektom podatkovna vrstica. Uporabnik lahko nato te podatke osvežuje. Če želimo spremembe shraniti v bazo podatkov, pokličemo metodo ″DataSet.update()″. Ker ADO.NET uporablja optimistični način zaklepanja, dobimo pri metodi osveževanja sporočilo o napaki, če kdo medtem popravi kakšno vrstico, ki jo imamo v zbirki podatkov. V zbirka podatkov so namreč shranjene stare in nove vrednosti. (prosto po: Halpin, T., (2001), stran: 132-155).

  • Univerza v Mariboru - Fakulteta za organizacijske vede Diplomsko delo visokošolskega strokovnega študija _____________________________________________________________________________________________________________________________________________________________________________________________________________

    ___________________________________________________________________________________________

    Tadej Nadvešnik: Spletna rešitev za vodenje evidence zaposlenih iz varstva pri delu stran 11 od 54

    3. OBSTOJEČE STANJE

    3.1 Posnetek stanja Aplikacija VPD je imela ob predaji s strani našega partnerja precej problemov, kot npr. nedokončanost aplikacije, odsotnost dokumentacije, stavki SQL so bili zapisani na dokaj kompleksen in zapleten način. Poleg tega je zelo obsežna, saj vsebuje 40 oken in približno 150 podatkovnih in podpornih tabel. Aplikacija ni vsebovala nobene dokumentacije o samem delovanju in ustroju aplikacije. To nam je povzročilo veliko preglavic, saj nismo vedeli, kje je začetek in kje konec. Na vsaki formi je bilo kombinirano polje, ki naj bi služilo za iskanje, vendar je bilo prazno in ni imelo nobene funkcije. V aplikacijo se je dalo prijaviti z uporabniškim imenom in geslom. Vse strani so se prikazovale, dokler nismo poskusili karkoli izbrati izmed ponujenih podatkov, občasno pa so povzročale napake tudi akcije, ki so bile na določeni vnosni maski na voljo. Uporabniški vmesnik aplikacije je zelo enostaven, tako da uporabniku omogoča delo z aplikacijo ob minimalnem uvajanju. Tabele so bile večinoma že smiselno napolnjene z realnimi testnimi podatki.

    3.2 Kritična analiza Podatkovna baza aplikacije vsebuje preko 100 tabel, kar pomeni, da smo se morali prebiti skozi vse tabele, da smo ugotovili, kam se kakšni podatki vežejo in zapisujejo. Pri tem smo naleteli na velik problem, ker so se podatki zapisovali v več tabel hkrati. Podatki o delavcih so se zapisovali v tabelo Member in Worker, ti dve tabeli pa sta med seboj povezani po ključih, ki pa sta samo število, tako da nismo mogli vpisovati podatkov v obe tabeli z enim SQL stavkom in potem testirati. Tipična delovna mesta so se zapisovala v tabele GeneralWorkPlace, WorkPlace, ActivityGeneralWorkPlace, ActivityItemRelations, ActivityItem, ActivityPermission in Activity. Da je vpisovanje tipičnih delovnih mest normalno delovalo na vseh straneh, je bilo treba v vse te tabele narediti ″insert″, ″update″ in ″delete″ stavke. Zaradi teh nepreglednosti smo imeli veliko dela z oblikovanjem SQL stavkov, saj smo morali napisati tudi po pet ″insert″, ″update″ in ″delete″ stavkov za določen šifrant. V primeru, da bi napisali samo ″insert″ stavek v eno tabelo, bi aplikacija javila napako na kateri izmed drugih strani, ki bi uporabljali to tabelo. Splošnih in tipičnih delovnih mest se ni dalo brisati iz tabele, saj je javilo napako zaradi datuma. Datumsko vnosno polje je bilo napačno nastavljeno.

  • Univerza v Mariboru - Fakulteta za organizacijske vede Diplomsko delo visokošolskega strokovnega študija _____________________________________________________________________________________________________________________________________________________________________________________________________________

    ___________________________________________________________________________________________

    Tadej Nadvešnik: Spletna rešitev za vodenje evidence zaposlenih iz varstva pri delu stran 12 od 54

    Ni se dalo pogledati delovne opreme in neustreznosti delovnega mesta pri tipičnih delovnih mestih, ker je bil SQL stavek narobe napisan. Celotna baza VPD-ja je bila zasnovana tako, da so imela splošna delovna mesta več tipičnih delovnih mest, kar pa ni res. Vsako tipično delovno mesto ima več splošnih delovnih mest. Zaradi te napake smo morali spremeniti zapisovanje v tabele in s tem celo logiko aplikacije postaviti na glavo. Velik problem so nam povzročali gumbi, ki so se dinamično nalagali na stran in nismo mogli najti njihove kode. Gumbi so bili ves čas trije shrani, ponastavi in briši. Shrani je opravljal nekje dve funkciji, nekje pa eno. Enkrat je shranjeval v tabelo, drugič pa dodajal. Ponastavi gumb je enkrat spraznil polja za vnos, drugič pa ne. Briši je ponekod zbrisal podatke s forme, nekje pa kar iz baze. Zaradi tega smo se odločili, da obstoječe gumbe skrijemo in dodamo nove gumbe, kar se je izkazalo za enostavnejše, kot pa če bi popravljali stare. Polja za vnos pošt niso bila zaščitena pred vnosom črk, prav tako niso bila omejena na štiri vnosna polja. Pri vnosu poštne številke in kraja pošte ni bilo jasno razvidno, kje je polje za vnos poštne številke in kraja pošte. Polja v tabelah niso bila smiselno poimenovana. V tabeli Member je bilo polje Jobtitle, ki je predstavljalo enotno matično številko občana (EMŠO). Jobtitle nima nobene veze z EMŠO, vsak bi prej pomislil, da to pomeni opis delovnega mesta. Aplikacija ni imela nobenega konkretnega relacijskega modela, iz katerega bi se na enostaven način dalo razbrati, kako so tabele povezane med seboj. Izpisi, ki so se izpisovali, so bili neurejeni in zmešani med seboj, tako da je delovna oprema pripadala napačnemu tipičnemu delovnemu mestu. Pri izpisu osebne varovalne opreme se je pojavil zelo dolg seznam, ker je izpisal vse vnosne elemente. Pri izpisovanju napotnic niso bili vsi podatki, ki so bili potrebni za pravilno izpisovanje. Pri naštevanju določenih elementov ni bilo vejic in se je celotno besedilo držalo skupaj. (povzeto po: Razni pisni in ustni viri podjetja MC d.d., 2006).

  • Univerza v Mariboru - Fakulteta za organizacijske vede Diplomsko delo visokošolskega strokovnega študija _____________________________________________________________________________________________________________________________________________________________________________________________________________

    ___________________________________________________________________________________________

    Tadej Nadvešnik: Spletna rešitev za vodenje evidence zaposlenih iz varstva pri delu stran 13 od 54

    4 IZDELAVA PROGRAMSKE REŠITVE Osnovna aplikacija je baza podatkov, ki teče na SQL strežniku. Na vsak strani imamo formo, ki v zgornjem delu kaže podatke o trenutno izbranem šifrantu, v spodnjem pa je forma za dodajanje in spreminjanje lastnosti šifrantov. Na spodnji formi so štirje gumbi, ki se dinamično nalagajo na stran odvisno od tega kaj uporabnik želi delati s podatki. Na vsaki formi lahko uporabnik naredi izpis za določen šifrant. S klikom na gumb izpis se mu odpre okno, kjer postavi pogoje oziroma omeji izpis.

    SLIKA 2: Osnovna forma (posnetek aplikacije VPD, 2006) Ob nalaganju forme se mu najprej prikažeta gumba ponastavi in dodaj. Koda za prikaz gumbov napisana v C# pod poljem Load_Page. SwitchButtons(AvailButtons.DodajPonastavi)

    Prikažeta se gumba dodaj in ponastavi. Da koda sploh deluje pravilno, je treba napisati kodo za gumbe.

  • Univerza v Mariboru - Fakulteta za organizacijske vede Diplomsko delo visokošolskega strokovnega študija _____________________________________________________________________________________________________________________________________________________________________________________________________________

    ___________________________________________________________________________________________

    Tadej Nadvešnik: Spletna rešitev za vodenje evidence zaposlenih iz varstva pri delu stran 14 od 54

    public void SwitchButtons( AvailButtons btns ) { switch (btns) { case (AvailButtons.DodajPonastavi): { this.btnDodaj.Visible=true; this.btnPonastavi.Visible = true; this.btnShrani.Visible =false; this.btnBrisi.Visible = false; break; } case (AvailButtons.ShraniPonastaviBrisi) : { this.btnDodaj.Visible = false; this.btnShrani.Visible=true; this.btnBrisi.Visible=true; this.btnPonastavi.Visible=true; break; } } }

    Ponastavi gumb omogoča dodajanje novega podatka, tako da sprazni tekstovna polja in omogoča dodajanje novih podatkov v tekste, ki so za to namenjeni. Gumb dodaj pa omogoča dodajanje podatkov v tabele, tako da izvede ″insert″ stavek v SQL obliki.

    SLIKA 3: Gumba ponastavi in dodaj (posnetek aplikacije VPD, 2006) Ko uporabnik klikne na enega izmed podatkov, se mu na formi prikažejo gumbi ponastavi, shrani in briši. Koda za prikaz treh gumbov je napisana takole: SwitchButtons(AvailButtons.ShraniPonastaviBrisi) Shrani gumb omogoča spreminjanje podatkov o izbranem artiklu. To je omogočeno, tako da se izvede ″update″ stavek v SQL obliki, s tem pa se spremenijo podatki o artiklu v določeni tabeli. Gumb briši omogoča brisanje artikla in vseh njegovih podatkov iz tabele. Pred vsakim brisanjem aplikacija še enkrat vpraša uporabnika, če je prepričan, da želi izbrisati artikel iz tabel. Brisanje se izvede s ″delete″ stavkom v SQL obliki.

  • Univerza v Mariboru - Fakulteta za organizacijske vede Diplomsko delo visokošolskega strokovnega študija _____________________________________________________________________________________________________________________________________________________________________________________________________________

    ___________________________________________________________________________________________

    Tadej Nadvešnik: Spletna rešitev za vodenje evidence zaposlenih iz varstva pri delu stran 15 od 54

    SLIKA 4: Gumbi ponastavi, shrani in briši (posnetek aplikacije VPD, 2006)

    V primeru, ko so na formi prikazani gumbi ponastavi, shrani in briši, gumb ponastavi sprazni tekstovna polja in obenem skrije gumba shrani in briši in na formo naloži gumb dodaj, tako da je možno dodajanje novega artikla v bazo. Da pa se to izvede, je potrebno napisati kodo, ki omogoča ponovno prikaz samo dveh gumbov. SwitchButtons(AvailButtons.DodajPonastavi); Pod gumbi je jasno napisano, kako tvegana je katera izmed operacij, ki se izvedejo ob pritisku na katerega izmed gumbov.

    SLIKA 5: Prikaz stopnje tveganja operacije (posnetek aplikacije VPD, 2006)

    V nadaljevanju naloge bomo spoznali podrobno delovanje vsakega izmed gumbov, ki so potrebni za delovanje aplikacije. Aplikacija teče na internetu tako, da do nje dostopamo preko internetnih strani. Ob zagonu aplikacije nas najprej pozdravi začetno sporočilo, v katerega moramo vpisati geslo za dostop.

    SLIKA 6: Prijavni obrazec (posnetek aplikacije VPD, 2006) Ko vnesemo pravilno, geslo pridemo na podmeni, v katerem izberemo podjetje. Pridemo na osnovno stran, v katerem izbiramo med podmeniji.

    SLIKA 7: Podmeni aplikacije (posnetek aplikacije VPD, 2006)

  • Univerza v Mariboru - Fakulteta za organizacijske vede Diplomsko delo visokošolskega strokovnega študija _____________________________________________________________________________________________________________________________________________________________________________________________________________

    ___________________________________________________________________________________________

    Tadej Nadvešnik: Spletna rešitev za vodenje evidence zaposlenih iz varstva pri delu stran 16 od 54

    Za uporabnika sta aktualna menija šifranti in aktivnosti delavcev, ker bo za izjavi in administracijo v prihodnosti izdelan samostojen modul. Meni delodajalec je namenjen samo administratorju, ker omogoča preklop med različnimi podjetji. Podjetje, ki uporablja aplikacijo, pa ima vnesenega samo enega delodajalca.

    4.1 Šifranti Podmeni šifrant je srce aplikacije za varstvo pri delu. V njem uporabnik lahko vidi kadrovsko evidenco zaposlenih, določa lokacije podjetja, vnaša splošna delovna mesta in tipična delovna mesta, vnaša študente in meritve po lokacijah. Ima možnost vnosa osebne varovalne opreme, delovne opreme, protipožarne opreme, nevarnih snovi, delovnih nalog, predmetov dela, neustreznosti delovnih nalog, zdravstvenih zahtev, tveganj in zunanjih izvajalcev.

    SLIKA 8: Podmeni šifranti (posnetek aplikacije VPD, 2006) V nalogi bom predstavil šifrante, ki se vsakodnevno uporabljajo za nemoteno delovanje organizacije, nekateri šifranti se uporabljajo zelo poredko - morda samo enkrat letno npr. tipična in splošna delovna mesta.

  • Univerza v Mariboru - Fakulteta za organizacijske vede Diplomsko delo visokošolskega strokovnega študija _____________________________________________________________________________________________________________________________________________________________________________________________________________

    ___________________________________________________________________________________________

    Tadej Nadvešnik: Spletna rešitev za vodenje evidence zaposlenih iz varstva pri delu stran 17 od 54

    4.1.1. Šifrant delavci Pri šifrantu delavci uporabnik aplikacije ne more nič spreminjati, ker je aplikacija narejena tako, da črpa imena delavcev in njihove podatke direktno iz kadrovske evidence. Uporabnik tudi ne more spremeniti podatkov o posameznem delavcu.

    4.1.2 Šifrant lokacije Šifrant Lokacije si bomo pogledali bolj podrobno, saj je ta šifrant eden izmed najpomembnejših v aplikaciji, saj omogoča vnos pod lokacij. Večina podjetij, s katerimi sodelujemo. ima več poslovnih enot, tako da je to nujno potrebno za normalno delovanje aplikacije. V šifrantu lokacije se pogosto spreminjajo podatki in telefonske številke. Pri vnosu nove lokacije vnesemo ime oz. naziv lokacije, naslov, kraj in poštno številko. Polje pri poštni številki je zavarovano pred vnosom črk in omejeno na štiri vnosna polja. Vpišemo kontaktno osebo za to lokacijo in tel številke. Potrebno je vnesti matično številko, registrsko številko in davčno številko podjetja. Ker živimo v informacijski dobi, lahko uporabnik vnese internetni naslov podjetja in elektronsko pošto. Vnos elektronske pošte je zavarovan pred napačnim vnosom, tako da program preveri, če je v polju vpisan znak @ in vsaj ena pika. Kot vemo mora vsak elektronski naslov vsebovati piko in znak @.Tudi vnosi drugih šifrantov so zelo podobni tako, da je za primer kako vse skupaj poteka v kodi vseeno katerega izberemo.

    SLIKA 9: Šifrant lokacije (posnetek aplikacije VPD, 2006)

  • Univerza v Mariboru - Fakulteta za organizacijske vede Diplomsko delo visokošolskega strokovnega študija _____________________________________________________________________________________________________________________________________________________________________________________________________________

    ___________________________________________________________________________________________

    Tadej Nadvešnik: Spletna rešitev za vodenje evidence zaposlenih iz varstva pri delu stran 18 od 54

    4.1.2.1 Tabela Company

    SLIKA 10: Tabela Company (posnetek aplikacije VPD, 2006) V tabelo Company se zapisujejo podatki o lokacijah podjetij. Vsaka tabela je sestavljena iz vrstic, ki jim določimo ime in tip zapisa, v katerem bo podatek. Za številke uporabljamo ″int″, kar pomeni podatkovni tip ″integer″ oz. številka. Za tekste uporabljamo ″varchar″ in ″nvarchar″, za datume pa ″datetime″. Vsako polje ima tudi podano dolžino. Tako npr v polje tipa ″int″, ki je omejeno na štiri znake, ne moremo vpisati petmestne številke. V primeru, da bi to naredili, bi aplikacija javila napako. Temu problemu se najlažje izognemo tako, da omejimo tekstovno polje na tako dolžino, kot je dolžina polja v tabeli.

  • Univerza v Mariboru - Fakulteta za organizacijske vede Diplomsko delo visokošolskega strokovnega študija _____________________________________________________________________________________________________________________________________________________________________________________________________________

    ___________________________________________________________________________________________

    Tadej Nadvešnik: Spletna rešitev za vodenje evidence zaposlenih iz varstva pri delu stran 19 od 54

    4.3 Gumb ponastavi na šifrantu lokacije Gumb ponastavi na šifrantu omogoča praznjenje vseh tekstovnih polj in s tem možnost dodajanja nove lokacije. Koda, ki to omogoča je napisana v C# in je zelo enostavna. Poleg tega ponastavi gumb v primeru, da so na formi gumbi ponastavi, shrani in briši preklopi gumbe, tako da sta na formi potem gumba ponastavi in dodaj, kar potem tudi omogoča dodajanje nove lokacije.

    SLIKA 11: Gumb ponastavi (posnetek aplikacije VPD, 2006)

    private void btnPonastavi_Click(object sender, System.EventArgs e) {

    // sprazni polje tbNaziv.Text this.tbNaziv.Text=""; //sprazni polje tbNaslov.Text this.tbNaslov.Text=""; //sprazni polje tbKraj.Text this.tbKraj.Text=""; //sprazni… this.tbPosta.Text=""; this.tbKOseba.Text=""; this.tbFax.Text=""; this.tbTelefon.Text=""; this.tbPostnaSt.Text=""; this.tbHomepage.Text=""; this.tbEmail.Text=""; this.tbRegSt.Text=""; this.tbMaticnaSt.Text=""; this.tbDavcnaSt.Text=""; this.tbTR.Text=""; this.tbTR2.Text=""; this.tbDejavnostSt.Text=""; this.tbDejavnostOpis.Text=""; this.tbOpis.Text=""; this.tbStZap.Text="";

    Session["vnos"]="vnos"; //preklopi gumbe SwitchButtons(AvailButtons.DodajPonastavi);

    }

  • Univerza v Mariboru - Fakulteta za organizacijske vede Diplomsko delo visokošolskega strokovnega študija _____________________________________________________________________________________________________________________________________________________________________________________________________________

    ___________________________________________________________________________________________

    Tadej Nadvešnik: Spletna rešitev za vodenje evidence zaposlenih iz varstva pri delu stran 20 od 54

    4.4 Gumb briši na šifrantu lokacije Gumb briši omogoča brisanje podatkov o lokacijah. Tega gumba ne bom posebej predstavljal, ker se izvede v našem ogrodju. To pomeni, da se ne izvede direktno na strani, ampak v razredih ogrodju, v katerem je napisana aplikacija. Ukazi za brisanje tabele se izvedejo preko WebDispatcherja. Brišejo se podatki v tabeli, kar pomeni, da je ta aplikacija tvegana, kajti če po pomoti zbrišemo kakšen podatek, ga ne moremo dobiti nazaj. Ko uporabnik stisne gumb briši, ga aplikacija še enkrat preko sporočilnega okna vpraša, če želi izbrani podatek zbrisati.

    SLIKA 12: Gumb briši (posnetek aplikacije VPD, 2006)

    private void btnBrisi_Click(object sender, System.EventArgs e) { WebDispatcherCall wdc = newWebDispatcherCall("DialogConfirmation"); wdc.Type = "1"; wdc.ParametarList = new Hashtable(); wdc.ParametarList.Add("DialogControlDestinationPage", "/Fr ameCenter/Locations/Pages/VPD_Lokacija.aspx"); wdc.ParametarList.Add("SourceSomeID",1); wdc.Execute(this); }

    4.5 Gumb dodaj na šifrantu lokacije Gumb dodaj kot že samo ime pove dodaja podatke v tabelo ali povedano z SQL stavkom naredi ″insert″ stavek. Vsakič, ko uporabnik klikne na gumb dodaj, se podatki zapišejo v tabelo. Program je napisan tako, da niso obvezni vsi podatki, to pa zaradi tega, ker so nekateri podatki specifični za določeno lokacijo. Pa si poglejmo, kako zgleda koda, ki omogoča dodajanje podatkov v tabelo. Postopek je napisan v obliki komentarjev (z zeleno barvo), ki so tudi zelo pogosti v programiranju, in sicer zaradi lažje razumljivosti in boljše preglednosti. Dobrodošli so tudi komentarji, ker vsak programer programira nekoliko drugače.

    SLIKA 13: Gumb dodaj (posnetek aplikacije VPD, 2006)

    // koda gumba btnDodaj, ob kliku se izvede naslednje private void btnDodaj_Click(object sender, System.EventArgs e)

  • Univerza v Mariboru - Fakulteta za organizacijske vede Diplomsko delo visokošolskega strokovnega študija _____________________________________________________________________________________________________________________________________________________________________________________________________________

    ___________________________________________________________________________________________

    Tadej Nadvešnik: Spletna rešitev za vodenje evidence zaposlenih iz varstva pri delu stran 21 od 54

    { if (this.IsValid) { // če povezava ni odprta, jo odpri if (this.SqlConn.State==ConnectionState.Closed) this.SqlConn.Open(); cmd = new OleDbCommand("",this.SqlConn); //definiranje parametrov, v kakšni obliki(integer, string, varchar) bodo podatki prišli v tabelo cmd.Parameters.Add("@naziv",OleDbType.VarChar,96); cmd.Parameters.Add("@naslov",OleDbType.VarChar,64); cmd.Parameters.Add("@posta",OleDbType.VarChar,20); cmd.Parameters.Add("@kraj",OleDbType.VarChar,64); cmd.Parameters.Add("@koseba",OleDbType.VarChar,96); cmd.Parameters.Add("@fax",OleDbType.VarChar,50); cmd.Parameters.Add("@tel",OleDbType.VarChar,64); cmd.Parameters.Add("@email",OleDbType.VarChar,96); cmd.Parameters.Add("@homepage",OleDbType.VarChar,128); cmd.Parameters.Add("@regst",OleDbType.VarChar,10); cmd.Parameters.Add("@maticnast",OleDbType.VarChar,10); cmd.Parameters.Add("@davcnast",OleDbType.VarChar,64); cmd.Parameters.Add("@TR",OleDbType.VarChar,50); cmd.Parameters.Add("@TR2",OleDbType.VarChar,50); cmd.Parameters.Add("@Stdejavnosti",OleDbType.VarChar,10); cmd.Parameters.Add("@Opisdejavost",OleDbType.VarChar,150); cmd.Parameters.Add("@Opis",OleDbType.VarChar,256); cmd.Parameters.Add("@LocalCompany",OleDbType.Integer); cmd.Parameters.Add("@Blocked",OleDbType.Integer); cmd.Parameters.Add("@LastDateModified",OleDbType.DBTimeStamp); //tukaj koda pove katera tekstovna polja predstavljajo določen naziv, npr. //tbNaziv na formi pomeni polje naziv v tabeli cmd.Parameters["@naziv"].Value=this.tbNaziv.Text; cmd.Parameters["@naslov"].Value=this.tbNaslov.Text; cmd.Parameters["@posta"].Value=this.tbPostnaSt.Text; cmd.Parameters["@kraj"].Value=this.tbKraj.Text; cmd.Parameters["@koseba"].Value=this.tbKOseba.Text; cmd.Parameters["@fax"].Value=this.tbFax.Text; cmd.Parameters["@tel"].Value=this.tbTelefon.Text; cmd.Parameters["@email"].Value=this.tbEmail.Text; cmd.Parameters["@homepage"].Value=this.tbHomepage.Text; cmd.Parameters["@regst"].Value=this.tbRegSt.Text; cmd.Parameters["@maticnast"].Value=this.tbMaticnaSt.Text; cmd.Parameters["@davcnast"].Value=this.tbDavcnaSt.Text; cmd.Parameters["@TR"].Value=this.tbTR.Text; cmd.Parameters["@TR2"].Value=this.tbTR2.Text; cmd.Parameters["@Stdejavnosti"].Value=this.tbDejavnostSt.Text; cmd.Parameters["@Opisdejavost"].Value=this.tbDejavnostOpis.Text; cmd.Parameters["@Opis"].Value=this.tbOpis.Text;

  • Univerza v Mariboru - Fakulteta za organizacijske vede Diplomsko delo visokošolskega strokovnega študija _____________________________________________________________________________________________________________________________________________________________________________________________________________

    ___________________________________________________________________________________________

    Tadej Nadvešnik: Spletna rešitev za vodenje evidence zaposlenih iz varstva pri delu stran 22 od 54

    cmd.Parameters["@LocalCompany"].Value=this.ddlMaticnoPod.SelectedValue; cmd.Parameters["@Blocked"].Value=0; cmd.Parameters["@LastDateModified"].Value=System.DateTime.Now; if (Session["vnos"].ToString()=="vnos") { cmd.Parameters.Add("@PathUID",OleDbType.VarChar,512); cmd.Parameters.Add("@ParentCompany",OleDbType.Integer); //ločim ali gre za podlokacijo (od drugega nivoja naprej) ali za // navadno lokacijo (na prvem nivoju oz. takoj pod korenom if (GlobalCompany == "global") { cmd.Parameters["@PathUID"].Value = "/"; cmd.Parameters["@ParentCompany"].Value = Convert.DBNull; } else { if (VPD_LokacijaMode != "N") { cmd.Parameters["@PathUID"].Value="/"+Alarix.ModuleAuthentication.UserSession.Current.AdditionalUserStorage[Alarix.WorkProtection.Web.Globals.Classes.Constants.GlobalCompanyId].ToString()+"/"; cmd.Parameters["@ParentCompany"].Value=Alarix.ModuleAuthentication.UserSession.Current.AdditionalUserStorage[Alarix.WorkProtection.Web.Globals.Classes.Constants.GlobalCompanyId].ToString(); } else { cmd.Parameters["@ParentCompany"].Value=locationId; // za PathuUID preberem PAathuUID od trenutno izbrane lokacije (nadrejene lokacije)in dodam še locationid cmd2 = new OleDbCommand("",this.SqlConn); cmd2.CommandText = "select PathUID from Company where CompanyID ="+locationId ; string PathUIDNadrejeni = cmd2.ExecuteScalar().ToString(); cmd.Parameters["@PathUID"].Value=PathUIDNadrejeni+locationId+"/"; } } //polje creationdate se naredi samostojno in vrne sistemski datum cmd.Parameters.Add("@CreationDate",OleDbType.DBTimeStamp).Value = System.DateTime.Now; // tukaj se izved insert stavek v tabelo company cmd.CommandText="INSERT into Company (Name,Address,PostalCode,City,DefaultContactName,FaxNo,PhoneNo,Email,HomePage,RegSt,"+"MaticnaSt,VATRegNo,TR,TR2,Dejavnost,DejavnostOpis

  • Univerza v Mariboru - Fakulteta za organizacijske vede Diplomsko delo visokošolskega strokovnega študija _____________________________________________________________________________________________________________________________________________________________________________________________________________

    ___________________________________________________________________________________________

    Tadej Nadvešnik: Spletna rešitev za vodenje evidence zaposlenih iz varstva pri delu stran 23 od 54

    ,Comments,LocalCompany,Blocked,LastDateModified,"+"PathUID,ParentCompanyID, CreationDate) "+"VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; } try {

    cmd.ExecuteNonQuery(); this.SqlConn.Close(); Session["vnos"]="update";

    } catch (Exception ex) {

    Response.Write(ex.Message); } finally {

    cmd.Dispose(); this.SqlConn.Close();

    } LoadStartScreen();

    } }

    4.6 Gumb shrani na šifrantu lokacije Gumb shrani, kot že samo ime pove, shranjuje podatke v tabele ali drugače povedano - s SQL stavkom naredi ″update″ v tabeli. Gumb se uporablja za spreminjanje podatkov o lokacijah, prav tako kot pri gumbu dodaj niso potrebna vsa vnosna polja.

    SLIKA 14: Gumb shrani (posnetek aplikacije VPD, 2006)

    // koda gumba btnShrani, ob kliku se izvede naslednje private void btnShrani_Click(object sender, System.EventArgs e) { if (this.IsValid) { // če povezava ni odprta, jo odpri if (this.SqlConn.State==ConnectionState.Closed) this.SqlConn.Open(); cmd = new OleDbCommand("",this.SqlConn); //definiranje parametrov, v kakšni obliki(integer, string, varchar) bodo podatki prišli v tabelo cmd.Parameters.Add("@naziv",OleDbType.VarChar,96);

  • Univerza v Mariboru - Fakulteta za organizacijske vede Diplomsko delo visokošolskega strokovnega študija _____________________________________________________________________________________________________________________________________________________________________________________________________________

    ___________________________________________________________________________________________

    Tadej Nadvešnik: Spletna rešitev za vodenje evidence zaposlenih iz varstva pri delu stran 24 od 54

    cmd.Parameters.Add("@naslov",OleDbType.VarChar,64); cmd.Parameters.Add("@posta",OleDbType.VarChar,20); cmd.Parameters.Add("@kraj",OleDbType.VarChar,64); cmd.Parameters.Add("@koseba",OleDbType.VarChar,96); cmd.Parameters.Add("@fax",OleDbType.VarChar,50); cmd.Parameters.Add("@tel",OleDbType.VarChar,64); cmd.Parameters.Add("@email",OleDbType.VarChar,96); cmd.Parameters.Add("@homepage",OleDbType.VarChar,128); cmd.Parameters.Add("@regst",OleDbType.VarChar,10); cmd.Parameters.Add("@maticnast",OleDbType.VarChar,10); cmd.Parameters.Add("@davcnast",OleDbType.VarChar,64); cmd.Parameters.Add("@TR",OleDbType.VarChar,50); cmd.Parameters.Add("@TR2",OleDbType.VarChar,50); cmd.Parameters.Add("@Stdejavnosti",OleDbType.VarChar,10); cmd.Parameters.Add("@Opisdejavost",OleDbType.VarChar,150); cmd.Parameters.Add("@Opis",OleDbType.VarChar,256); cmd.Parameters.Add("@LocalCompany",OleDbType.Integer); cmd.Parameters.Add("@Blocked",OleDbType.Integer); cmd.Parameters.Add("@LastDateModified",OleDbType.DBTimeStamp); //tukaj koda pove katera tekstovna polja predstavljajo določen naziv, npr.tbNaziv na formi pomeni polje naziv v tabeli cmd.Parameters["@naziv"].Value=this.tbNaziv.Text; cmd.Parameters["@naslov"].Value=this.tbNaslov.Text; cmd.Parameters["@posta"].Value=this.tbPostnaSt.Text; cmd.Parameters["@kraj"].Value=this.tbKraj.Text; cmd.Parameters["@koseba"].Value=this.tbKOseba.Text; cmd.Parameters["@fax"].Value=this.tbFax.Text; cmd.Parameters["@tel"].Value=this.tbTelefon.Text; cmd.Parameters["@email"].Value=this.tbEmail.Text; cmd.Parameters["@homepage"].Value=this.tbHomepage.Text; cmd.Parameters["@regst"].Value=this.tbRegSt.Text; cmd.Parameters["@maticnast"].Value=this.tbMaticnaSt.Text; cmd.Parameters["@davcnast"].Value=this.tbDavcnaSt.Text; cmd.Parameters["@TR"].Value=this.tbTR.Text; cmd.Parameters["@TR2"].Value=this.tbTR2.Text; cmd.Parameters["@Stdejavnosti"].Value=this.tbDejavnostSt.Text; cmd.Parameters["@Opisdejavost"].Value=this.tbDejavnostOpis.Text; cmd.Parameters["@Opis"].Value=this.tbOpis.Text; cmd.Parameters["@LocalCompany"].Value=this.ddlMaticnoPod.SelectedValue; cmd.Parameters["@Blocked"].Value=0; cmd.Parameters["@LastDateModified"].Value=System.DateTime.Now; cmd.Parameters.Add("@CompanyID",OleDbType.Integer); cmd.Parameters["@CompanyID"].Value=locationId; // tukaj se izvede update stavek v tabelo company cmd.CommandText="UPDATE Company SET Name=?,Address=?,PostalCode=?,City=?,DefaultContactName=?,FaxNo=?,PhoneNo=?,Email=?,HomePage=?,RegSt=?,"+"MaticnaSt=?,VATRegNo=?,TR=?,TR

  • Univerza v Mariboru - Fakulteta za organizacijske vede Diplomsko delo visokošolskega strokovnega študija _____________________________________________________________________________________________________________________________________________________________________________________________________________

    ___________________________________________________________________________________________

    Tadej Nadvešnik: Spletna rešitev za vodenje evidence zaposlenih iz varstva pri delu stran 25 od 54

    2=?,Dejavnost=?,DejavnostOpis=?,Comments=?,LocalCompany=?,Blocked=?,LastDateModified=? WHERE CompanyID=?"; try { cmd.ExecuteNonQuery(); this.SqlConn.Close(); Session["vnos"]="update"; } catch (Exception ex) { Response.Write(ex.Message); } finally { cmd.Dispose(); this.SqlConn.Close(); } LoadStartScreen(); } }

  • Univerza v Mariboru - Fakulteta za organizacijske vede Diplomsko delo visokošolskega strokovnega študija _____________________________________________________________________________________________________________________________________________________________________________________________________________

    ___________________________________________________________________________________________

    Tadej Nadvešnik: Spletna rešitev za vodenje evidence zaposlenih iz varstva pri delu stran 26 od 54

    4.7 Šifrant tipično delovno mesto Pri šifrantu tipična delovna mesto vnašamo tipična delovna mesta, ki pa se potem razdelijo na več splošnih delovnih mest. Pri tem šifrantu vnesemo naziv delovnega mesta, njegov opis in periodiko, kar pomeni, kolikokrat se delovno mesto pojavi v podjetju. Vsakemu tipičnemu delovnemu mestu moramo določiti šifrante: osebno varovalno opremo, delovno opremo, neustreznost, ki pomeni, za katero skupino delovnih mest je to delo neprimerno, tveganja, ki so prisotna na tem delovnem mestu, zdravstvene zahteve, ki so potrebne in ukrepe, ki se izvajajo. Ti šifranti so že vpisani v bazo, saj jih vnašamo preko šifrantov, ki si jih bomo v nadaljevanju naloge pogledali. Te šifrante potrebujemo pri izpisu napotnic za obdobni in preventivni zdravstveni pregled, ker so obvezen podatek pri izpisovanju napotnic.

    SLIKA 15: Šifrant tipična delovna mesta (posnetek aplikacije, 2006)

  • Univerza v Mariboru - Fakulteta za organizacijske vede Diplomsko delo visokošolskega strokovnega študija _____________________________________________________________________________________________________________________________________________________________________________________________________________

    ___________________________________________________________________________________________

    Tadej Nadvešnik: Spletna rešitev za vodenje evidence zaposlenih iz varstva pri delu stran 27 od 54

    4.8 Šifrant splošna delovna mesta Pri splošnih delovnih mestih vpisujemo delovna mesta, ki nastopajo v podjetju in pripadajo določenemu tipičnemu delovnemu mestu. Tipično delovno mesto pomeni administrativno delo, temu delu pa pripadajo splošna delovna mesta, kot so tajnica, računovodja, kadrovski delavec. Pri splošnih delovnih mestih moramo za vsako splošno delovno mesto določiti delovne naloge in predmete dela. Pri tej formi so nam velik problem predstavljali gumbi, ker niso imeli napisane kode kot drugi gumbi, ampak je bila koda napisana, tako da je izhajala iz aplikacije in so se ukazi za gumbe izvajali povsem v ozadju aplikacije.

    SLIKA 16: Šifrant splošna delovna mesta (posnetek aplikacije VPD, 2006)

    Koda za gumb ponastavi, ki samo sprazni tekstovna polja, zgleda takole: private void btnPonastavi_Click(object sender, System.EventArgs e) { SwitchButtons(AvailButtons.DodajPonastavi); object workplaceId = null;

  • Univerza v Mariboru - Fakulteta za organizacijske vede Diplomsko delo visokošolskega strokovnega študija _____________________________________________________________________________________________________________________________________________________________________________________________________________

    ___________________________________________________________________________________________

    Tadej Nadvešnik: Spletna rešitev za vodenje evidence zaposlenih iz varstva pri delu stran 28 od 54

    if(workplaceId != null && workplaceId.ToString() != "") { WorkPlaceEditCoordinator1.WorkPlace = new Alarix.ModuleWorkPlace.WorkPlace(Convert.ToInt32(workplaceId)); } else { WorkPlaceEditCoordinator1.WorkPlace = new Alarix.ModuleWorkPlace.WorkPlace(); } }

    Koda za gumb shrani, ki naredi ″insert″ v tabelo: private void lnkAdd_Click(object sender, System.EventArgs e) { if (WorkPlaceEditCoordinator1.Execute("Add") == true) { SelectedView selectedView = ViewCache.Get("Alarix.ModuleWorkPlace.WorkPlace"); selectedView.SelectedId = WorkPlaceDetails1.Value.WorkPlaceID; Info(Alarix.Data.ResourceFactory.SafeGetString("You have added WorkPlace succesfuly!")); } LoadStartScreen(); catch (Alarix.FriendlyException afx) { Info(afx.Message.ToString()); } catch (Exception ex) { Info(ex.Message.ToString()); } }

    Koda za gumb dodaj, ki naredi ″update″ v tabelo: private void lnkUpdate_Click(object sender, System.EventArgs e) { if (WorkPlaceEditCoordinator1.Execute("Update") == true) { Info(Alarix.Data.ResourceFactory.SafeGetString("You have updated a WorkPlace succesfuly!")); } LoadStartScreen(); catch (Alarix.FriendlyException afx) { Info(afx.Message.ToString()); } catch (Exception ex) { Info(ex.Message.ToString());

  • Univerza v Mariboru - Fakulteta za organizacijske vede Diplomsko delo visokošolskega strokovnega študija _____________________________________________________________________________________________________________________________________________________________________________________________________________

    ___________________________________________________________________________________________

    Tadej Nadvešnik: Spletna rešitev za vodenje evidence zaposlenih iz varstva pri delu stran 29 od 54

    } }

    Koda, ki briše podatke iz tabele, pa je napisana v dveh ločenih kodah: private void Delete() { if (WorkPlaceEditCoordinator1.Execute("Delete")==true) { SelectedView selectedView = ViewCache.Get("Alarix.ModuleWorkPlace.WorkPlace"); selectedView.SelectedId = null; Info(Alarix.Data.ResourceFactory.SafeGetString("You have deleted WorkPlace succesfuly!")); } LoadStartScreen(); catch (Alarix.FriendlyException afx) { Info(afx.Message.ToString()); } catch (Exception ex) { Info(ex.Message.ToString()); } } private void lnkDelete_Click(object sender, System.EventArgs e) { WebDispatcherCall wdc = new WebDispatcherCall("DialogConfirmation"); wdc.Type = "1"; //this is just to fill Type with something (request on page will not be null) wdc.ParametarList = new Hashtable(); wdc.ParametarList.Add("DialogControlDestinationPage", "/FrameCenter/WorkPlaces/Pages/WorkPlaceEdit.aspx"); wdc.ParametarList.Add("SourceSomeID",1); wdc.Execute(this); } Tako napisana koda nam je povzročala veliko dela, saj zaradi pomanjkanja dokumentacije in slabega poznavanja aplikacije nismo vedeli, kje je napisana izvorna koda. Ugotovili smo, da se sestavlja iz več razredov, ki so zapisani v jedru aplikacije, vendar pa se v to nismo spuščali, ker bi verjetno povzročili še več škode, kot jo je že bilo.

  • Univerza v Mariboru - Fakulteta za organizacijske vede Diplomsko delo visokošolskega strokovnega študija _____________________________________________________________________________________________________________________________________________________________________________________________________________

    ___________________________________________________________________________________________

    Tadej Nadvešnik: Spletna rešitev za vodenje evidence zaposlenih iz varstva pri delu stran 30 od 54

    4.9 Šifrant študenti Šifrant študenti omogoča vodenje evidence o študentih. Tukaj uporabnik vpisuje študente, pri tem ima možnost vpisa vseh njihovih podatkov. Aplikacija ima zaščito proti vnosu dveh istih študentov. To je izvedeno preko enotne matične številke občana. V primeru, da uporabnik vnese v bazo študenta z enakim EMŠO, ga aplikacija opozori, da takega zapisa ne more dodati, ker je že nekdo s tem EMŠO v bazi. Na zaslonu se uporabniku po osnovi prikažejo samo aktivni študentje – tisti, ki trenutno delajo. Če pa izklopi aktivni študentje v potrditvenem polju, pa se mu prikažejo samo neaktivni – tisti ki trenutno ne delajo.

    SLIKA 17: Šifrant študenti (posnetek aplikacije VPD, 2006)

  • Univerza v Mariboru - Fakulteta za organizacijske vede Diplomsko delo visokošolskega strokovnega študija _____________________________________________________________________________________________________________________________________________________________________________________________________________

    ___________________________________________________________________________________________

    Tadej Nadvešnik: Spletna rešitev za vodenje evidence zaposlenih iz varstva pri delu stran 31 od 54

    4.10 Šifrant Osebna varovalna oprema Pri šifrantu osebna varovalna oprema vpisujemo varovalno opremo za posamezne dele telesa. Tako imamo možnost vnosa varovalne opreme za glavo, kamor spada oprema za zaščito oči, ušes, obraza in dihal. Vnašamo lahko opremo za telo. Pri tem imamo možnost vnosa varovalne opreme za zaščito rok in nog. Vsaki opremi, ki jo vnesemo, moramo določiti skupino, v katero spada. To pa zaradi izpisov, ki se potem naredijo, da vemo, za kateri del telesa je namenjena določena oprema. Vpisati moramo rok zamenjave opreme, standard, ki ga ima oprema in ime podjetja, ki je dobavilo to opremo.

    SLIKA 18: Šifrant osebna varovalna oprema (posnetek aplikacije VPD, 2006)

  • Univerza v Mariboru - Fakulteta za organizacijske vede Diplomsko delo visokošolskega strokovnega študija _____________________________________________________________________________________________________________________________________________________________________________________________________________

    ___________________________________________________________________________________________

    Tadej Nadvešnik: Spletna rešitev za vodenje evidence zaposlenih iz varstva pri delu stran 32 od 54

    4.11 Šifrant protipožarna oprema po lokacijah Šifrant protipožarna oprema po lokacijah omogoča vnašanje protipožarne opreme po lokacijah podjetij. Ta šifrant omogoča uporabniku, da v trenutku vidi, kakšno protipožarno opremo imajo podjetja. Pri tem ima možnost pregleda opreme po določenih datumih za nazaj, tako da lahko kadarkoli pogleda, kdaj je bila oprema nazadnje zamenjana. Šifrant omogoča vnos naziva aparata, tovarniško številko, leto proizvodnje, datum pregleda, datum naslednjega pregleda, kdo je pregled opravil in opombe. Izpis pri šifrantu protipožarne opreme omogoča celoten pregled opreme po posameznih lokacijah podjetja in s tem hitro analizo stanja na področju varovanja pred požari.

    SLIKA 19: Šifrant protipožarna oprema po lokacijah (posnetek aplikacije VPD, 2006)

  • Univerza v Mariboru - Fakulteta za organizacijske vede Diplomsko delo visokošolskega strokovnega študija _____________________________________________________________________________________________________________________________________________________________________________________________________________

    ___________________________________________________________________________________________

    Tadej Nadvešnik: Spletna rešitev za vodenje evidence zaposlenih iz varstva pri delu stran 33 od 54

    4.12 Šifrant delovna oprema Pri šifrantu delovna oprema vnašamo opremo, ki jo imajo delavci na delovnih mestih. Pri tem določimo za kateri tip opreme gre. Potem določimo na kateri lokaciji se določena oprema uporablja. Izberemo naziv opreme (npr. avto Seat), model pri avtu (npr. Ibiza), določimo tovarniško številko, serijsko številko in inventarno številko. Serijsko številko in tovarniško številko preberemo iz opreme, inventarno številko pa določimo sami. Vpišemo leto izdelave in datum pregleda. Vpisati moramo še datum naslednjega pregleda in vpisati opombe v primeru, če jih imamo. Datumska polja so zaščitena pred vnosom ne datumskega formata - na tak način uporabnika opozorijo, da ni vnesel datumskega formata.

    SLIKA 20: Šifrant delovna oprema (posnetek aplikacije VPD, 2006)

  • Univerza v Mariboru - Fakulteta za organizacijske vede Diplomsko delo visokošolskega strokovnega študija _____________________________________________________________________________________________________________________________________________________________________________________________________________

    ___________________________________________________________________________________________

    Tadej Nadvešnik: Spletna rešitev za vodenje evidence zaposlenih iz varstva pri delu stran 34 od 54

    4.13 Šifrant neustreznost delovnega mesta Pri šifrantu neustreznost delovnega mesta vnašamo neustreznosti za določena delovna mesta. Vpišemo, za koga je delovno mesto neustrezno. Pri tem vpisovanju je treba biti zelo pazljiv in natančno vnašati neustreznosti. Predvsem je treba paziti, kakšne so neustreznosti. S podjetji, s katerimi sodelujemo, imata že narejen spisek oziroma seznam, tako da ga samo prepišeta v aplikacijo. Poleg tega lahko vpišemo še komentarje, ki nam povejo še dodatne neustreznosti pri delu.

    SLIKA 21: Šifrant neustreznost delovnega mesta (posnetek aplikacije VPD, 2006)

  • Univerza v Mariboru - Fakulteta za organizacijske vede Diplomsko delo visokošolskega strokovnega študija _____________________________________________________________________________________________________________________________________________________________________________________________________________

    ___________________________________________________________________________________________

    Tadej Nadvešnik: Spletna rešitev za vodenje evidence zaposlenih iz varstva pri delu stran 35 od 54

    4.14 Šifrant tveganja V šifrant tveganja vpisujemo vsa tveganja, ki so povezana z delovnimi mesti. Pri vsakem vnosu lahko dodamo komentar.

    SLIKA 22: Šifrant tveganja (posnetek aplikacije VPD, 2006)

  • Univerza v Mariboru - Fakulteta za organizacijske vede Diplomsko delo visokošolskega strokovnega študija _____________________________________________________________________________________________________________________________________________________________________________________________________________

    ___________________________________________________________________________________________

    Tadej Nadvešnik: Spletna rešitev za vodenje evidence zaposlenih iz varstva pri delu stran 36 od 54

    4.15 Šifrant zdravstvene zahteve Pri šifrantu zdravstvene zahteve določamo, ali morajo biti za delovno mesto določene kakršne koli posebne zdravstvene zahteve. Pri tem šifrantu imajo podjetja največkrat že pripravljen seznam, ki ga dobijo od ustreznih zdravstvenih ustanov tako, da ga samo prepišejo v aplikacijo. Pri tem imamo možnost tudi izpisa vseh zdravstvenih zahtev na list papirja tako, da lahko vidimo, katere so zdravstvene zahteve.

    SLIKA 23: Šifrant zdravstvene zahteve (posnetek aplikacije VPD, 2006)

    4.16 Zaščita proti vnosu črk Pri nekaterih šifrantih naletimo na polje poštna številka, kar pomeni, da če uporabnik ne vnese štirih številk oz. da namesto številke vnese črko, se zapis ne more shraniti. Dobra stran ASP.NET-a je to, da nam ni treba pisati ″if″ stavkov v kodo ampak kontroli, za katero želimo kontroliran vnos podatkov nastavimo lastnost ″CausesValidation″, in dodamo posebno kontrolo, ″InputValidator″, ki opozori uporabnika, če vnese podatke, ki se ne skladajo z vnaprej nastavljeno shemo

  • Univerza v Mariboru - Fakulteta za organizacijske vede Diplomsko delo visokošolskega strokovnega študija _____________________________________________________________________________________________________________________________________________________________________________________________________________

    ___________________________________________________________________________________________

    Tadej Nadvešnik: Spletna rešitev za vodenje evidence zaposlenih iz varstva pri delu stran 37 od 54

    validacije – v tem primeru vnos številskih podatkov. Za zaščito polja pred napačnim vnosom enotne matične številke občana (EMŠO), pa smo uporabili poseben algoritem, za preverjanje EMŠO. Če uporabnik vnese napačen EMŠO, se mu na zaslonu izpiše sporočilo, ki ga opozori, da ta EMŠO ne obstaja. Aplikacija tudi ne omogoča vnosa dveh študentov z isto številko EMŠO, ker ima vsak državljan enolično določen EMŠO.

    4.17 Zaščita proti vnosu napačnega EMŠO Izračun kontrole vsote. Označimo posamezne števke takole: DDMMLLLRRZZZK abcdefghijklK Kontrolna vsota se izračuna iz prvih dvanajstih števk po naslednjem postopku: Vsota = (7*a+6*b+5*c+4*d+3*e+2*f+7*g+6*h+5*i+4*j+3*k+2*l) Ostanek = vsota mod 11 (mod je ostanek pri celoštevilčnem deljenju), če je ostanek =0 potem K=0 sicer K = 11 - ostanek Pr kontroli se K=10 ne sme pojaviti in pomeni napačno številko. Če se v procesu ustvarjanja matične številke vseeno pojavi je potrebno vzeti naslednjo zaporedno številko (ZZZ). Primer Prvi fantek, rojen v Sloveniji 1. januarja 2006, bo imel EMŠO 0101006500006. Koda napisana v C# za zaščito pred vnosom študenta z napačnim EMŠO. string PreveriPodvojenEMSO; string emso; emso = tbEMSO.Text; long nEMSO; long nMult; nEMSO = 0; nMult = 7; //Zanka for (int i = 0;i

  • Univerza v Mariboru - Fakulteta za organizacijske vede Diplomsko delo visokošolskega strokovnega študija _____________________________________________________________________________________________________________________________________________________________________________________________________________

    ___________________________________________________________________________________________

    Tadej Nadvešnik: Spletna rešitev za vodenje evidence zaposlenih iz varstva pri delu stran 38 od 54

    nMult = nMult - 1; } // preveri ostanek nEMSO = 11 - (nEMSO % 11); if (nEMSO == 11) { nEMSO = 0; } if (nEMSO != Convert.ToInt64(emso.Substring(12,1))) { Response.Write(" alert ('Vpisali ste napačen EMŠO!')"); return; }

  • Univerza v Mariboru - Fakulteta za organizacijske vede Diplomsko delo visokošolskega strokovnega študija _____________________________________________________________________________________________________________________________________________________________________________________________________________

    ___________________________________________________________________________________________

    Tadej Nadvešnik: Spletna rešitev za vodenje evidence zaposlenih iz varstva pri delu stran 39 od 54

    4.18 Aktivnosti delavcev Aplikacija omogoča vnašanje podatkov o zdravniških pregledih, naročanje zaposlenih na zdravniške preglede in tiskanje napotnic za obdobne in preventivne preglede ter novo sprejete delavce.

    SLIKA 24: Aktivnosti delavcev (posnetek aplikacije VPD, 2006)

    Tabela za prikaz delavcev se polni iz kadrovske evidence. Tukaj samo določamo preglede za posamezne delavce. Uporabnik lahko za vsakega delavca določi datum preventivnega ali obdobnega pregleda. Določi delovno mesto, na katerem delavec dela in določi zdravnika, ki ima pooblastila da pregleda delavca. Ko so podatki shranjeni uporabnik natisne napotnico, s katero gre lahko delavec do zdravnika.

  • Univerza v Mariboru - Fakulteta za organizacijske vede Diplomsko delo visokošolskega strokovnega študija _____________________________________________________________________________________________________________________________________________________________________________________________________________

    ___________________________________________________________________________________________

    Tadej Nadvešnik: Spletna rešitev za vodenje evidence zaposlenih iz varstva pri delu stran 40 od 54

    4.19 Podatkovni model aplikacije VPD Na spodnji sliki predstavljam poenostavljeni relacijski model aplikacije. Zaradi precejšnje kompleksnosti dejanskega relacijskega modela, vsebuje tudi številne tabele, ki niso bistvenega pomena za obravnavano temo (povezovalne tabele,…).

    SLIKA 25: Poenostavljeni relacijski model aplikacije VPD V tabelo Company vpisujemo vse potrebne podatke o podjetjih, za katere se vodijo evidence varnosti in zdravja pri delu. To so ime podjetja, naslov, pošta, poštna številka, telefon in ostali podatki. Tabela Company je preko ključa CompanyID

    WorkerProduct

    WorkerID

    ProductID

    Item

    ItemID

    Work placeID

    ItemClassID

    Podatki

    Company CompanyID Podatki

    Product

    ProductID

    ItemID CompanyID Podatki

    Member

    MemberID CompanyID Podatki

    Worker

    WorkerID MemberID Podatki

    WorkPlaceItem WorkPlaceID ItemID

    WorkPlace WorkPlaceID Podatki

    GeneralWorkPlaceItem

    GeneralWorkPlaceID

    ItemID

    GeneralWorkPlace

    GeneralWorkPlaceID Podatki

    ItemClass ItemClassID ItemClassInterfaceID Podatki

    ItemClassInterface ItemClassInterfaceID Podatki

  • Univerza v Mariboru - Fakulteta za organizacijske vede Diplomsko delo visokošolskega strokovnega študija _____________________________________________________________________________________________________________________________________________________________________________________________________________

    ___________________________________________________________________________________________

    Tadej Nadvešnik: Spletna rešitev za vodenje evidence zaposlenih iz varstva pri delu stran 41 od 54

    povezana do tabele Product, kjer vpisujemo specifične produkte s področja varnosti pri delu, ki jih določeno podjetje potrebuje za zadostitev zakonskih pogojev in standardov s področja varnosti pri delu. Product tabela je preko ItemID povezana do tabele Item, ki je splošna tabela v katere shranjujemo splošne parametre vseh entitet aplikacije (produktov, opreme,...). Preko ItemClassID pridemo do tabele ItemClass, ki vsebuje skupine, s katerimi združujemo pomensko sorodne entitete. Preko ItemClass tabele pridemo do tabele ItemClassInterface, ki vsebuje atribute omenjene skupine, namenjene za prikaz v uporabniškem vmesniku (ime, opis,...). Na tabelo Item se navezujta še tabeli WorkPlace, v kateri so navedene dodelitve posameznih entitet določenemu delovnemu mestu in GeneralWorkPlace, v kateri so navedene dodelitve posameznih entitet splošnim delovnim mestom (skupinam delovnih mest s podobnimi delovnimi nalogami). Dodelitev posameznih produktov delovnemu mestu pa opisuje tabela WorkerProduct, ki pa je povezana s tabelo Worker, v kateri so zapisani določeni podatki o delavcih iz kadrovske evidence (izobrazba, začetek dela,...). Tabela Member je s tabelo Worker povezana po ključu MemberID in vsebuje ostale podatke o zaposlenem (ime, priimek, naslov,...).

    4.20 Vnos delavca v aplikacijo V primeru, ko podjetje sprejme novega zaposlenega, ga kadrovski delavci vpišejo v bazo zaposlenih, katere del se avtomatsko prenaša v ustrezne tabele aplikacije VPD. V aplikaciji VPD ni možno spreminjati podatkov o zaposlenih. Delavcu se določi splošno delovno mesto glede na to, na katero mesto je bil razporejen (informacija iz kadrovske službe). S tem, ko se mu dodeli splošno delovno mestom se mu določi tudi tipično delovno mestom pod katerega spada to splošno delovno mesto. Za vsako tipično delovno mesto pa imamo definirane vse pogoje, ki so obvezni po standardih varstva pri delu. To so: osebna varovalna oprema, delovna oprema, za koga je to del. mesto neustrezno, tveganja na delovnem mestu, zdravstvene zahteve in ukrepi. Ker pa mora vsak novo sprejeti delavec na zdravniški pregled mu lahko z aplikacijo natisnemo napotnico za novo sprejete delavce. Napotnica vsebuje podatke o zaposlenem in delovnem mestu, na katerega je delavec razporejen. Delavca se napoti k zdravniku, ki preveri, kako je z njegovim zdravstvenim stanjem zaposlenega in če je ustrezen za to delovno mesto. Ker je delavce preventivno in obdobno potrebno pošiljati na preglede, aplikacija omogoča izpis napotnic za preventivne in obdobne zdravstvene preglede. Na formi izberemo delavca, ki ga želimo poslati na pregled. Izberemo ali gre za