![]() |
Struktura datových objektů (tříd) |
![]() |
Datová architektura Kaskády | Historie událostí |
![]() |
V rámci každého (nejen počítačového) informačního systému, ale i při každé komunikaci, je nezbytné identifikovat jednoznačně prvky (objekty) se kterými pracujeme, o kterých komunikujeme. "Jednoznačně" znamená, že je to zaručeně to co míníme a ne něco jiného.
Často se stává, že určitá identifikace, která jednomu člověku připadá jednoznačná, pro jiného jednoznačná
není.
Například ve firmě je kolega Bedřich, někdo mluví o Bedřichovi, ale vlastně to může být úplně jiný Bedřich, mimo
firmu - takže křestní jméno jednoznačným identifikátorem není. Pokud ale řekneme, že je to Bedřich z naší firmy a
zároveň platí že ve firmě jiný Bedřich není, pak je to již jednoznačná identifikace. Do doby, než do firmy
nastoupí další Bedřich :-)
Pokud například ve firmě existuje oddělení, které si vede zcela vlastní evidenci pracovních pomůcek a ty si označuje čísly, nezáleží jim na tom, zda v jiném oddělení existuje podobná agenda a v ní třeba stejná čísla. Ale pozor - to jen do doby než vznikne ve firmě potřeba sjednotit tyto agendy :-)
Pokud například pracujeme s doklady v účetnictví, potřebujeme jednoznačně identifikovat tyto doklady v rámci svého firemního systému a nezajímá nás, zda stejná čísla (kódy) používá někdo v jiných organizacích.
Pokud objednáváme nějaké produkty (zboží, materiál, služby) od dodavatele, musíme je v objednávce nějak identifikovat, a to tak, aby dodavatel jednoznačně poznal, co objednáváme. Zde již jde o identifikaci v rámci přesahujícím jednu firmu, obvykle jsou to různé kódy (znaky,čísla,...) jejichž smyslem je právě jednoznačná identifikace. Různí dodavatelé mohou mít pro stejný produkt různé kódy, což situaci nijak neusnadňuje.
Pokud chceme identifikovat například určitou osobu, můžeme to provést prostřednictvím jména (to obvykle nestačí), přidáním adresy (ta se v čase mění a je to nespolehlivé), přidáním data narození (to je lepší, ale zaručeně jednoznačné to také není), nebo např. rodným číslem, které jednoznačné je (přinejmenším v rámci ČR), ale je problematické z hlediska ochrany osobních informací :(
Této problematice je věnována samostatná kapitola Identifikace
dokladů.
Jedná se o číslo dokladu v Kaskádě, variabilní symbol v Kaskádě, číslo dokladu protistrany ve spojení s identitou
protistrany, ...
Této problematice je věnována samostatná kapitola Identifikace dokumentů,
objednávek, smluv a hmotných zásilek.
Jedná se o Číslo dokumentu (vč. objednávky a smlouvy) v Kaskádě,
číslo dokumentu u autora ve spojení s identitou autora, ...
Jméno a datum narození, rodné číslo, číslo pasu, číslo OP, ...
IČO, DIČ, ...
Číslo objednávky v Kaskádě, číslo objednávky u protistrany ve spojení s identitou protistrany, ...
Kód produktu v Kaskádě, Kód produktu u určitého dodavatele ve spojení s identitou toho dodavatele, EAN kód od výrobce respektovaný celým řetězcem dalších subjektů, ...
Číslo předmětu zavedené v Kaskádě, výrobní číslo od výrobce, ...
Je zřejmé, že
různé "identifikátory" mají různou míru použitelnosti z hlediska oblasti, v níž jsou jednoznačné
různé "identifikátory" jsou více nebo méně pohodlné pro použití, ve firemní praxi jsou vnímány různým způsobem
V rámci informací uložených v Kaskádě je celá řada prvků, které umožňují identifikaci ( v praxi především pro rychlé hledání objektu ) a které mají různou míru jednoznačnosti.
Pro vnitřní potřeby systému dostává každý nově vznikající objekt automaticky svůj
interní kód, tzv. ID-objektu, je to cca 18ti místné číslo, které není uživatelsky dostupné, není určeno pro
"lidské vnímání".
Toto číslo je použito pro veškeré záznamy relací (vztahů) v databázi, zůstává trvalé a neměnné. Díky tomu lze
veškeré ostatní identifikátory v čase měnit, aniž by to mělo vliv na propojení
objektů.
Kaskáda poskytuje prostředek pro spolehlivou a jednoznačnou identifikaci libovolného objektu v databázi.
Je to tzv. "číslo objektu" a platí pro něj
je určeno pro lidské vnímání - v prohlížečích objektu figuruje v 1.kartě, volitelně také v titulku okna prohlížeče, v hlavičce každé tiskové sestavy nad objektem ....
pro některé druhy nemusí být číslo zadáváno vůbec, ale je rozumné tuto možnost příliš nevyužívat,
pokud je zadáno, pak
musí být jednoznačné (unikátní) v celé databázi (bez ohledu na druh objektu), což je technicky kontrolováno na úrovni SQL serveru a podmínku nelze v žádném případě porušit,
nesmí v žádném případě obsahovat mezery, to je technicky kontrolováno na úrovni SQL serveru a podmínku nelze v žádném případě porušit
pokud je číslo u příslušného druhu povinné, může vrcholový administrátor a/nebo administrátor šablon a číselníků v konfiguraci druhů (tříd) na kartě Číselné řady nebo na kartě Druh určit, zda je povinné hned při vytvoření objektu nebo až při vystavení (to ale pouze pro doklady),
číslo může být
generováno programem v rámci určitých číselných řad
zadáno ručně uživatelem zcela "volně", při zachování podmínky unikátnosti v rámci databáze
o tom, které druhy objektů se číslují v rámci určitých číselných řad a které volně, rozhoduje vrcholový administrátor a/nebo administrátora šablon v konfiguraci druhů (tříd) na kartě Druh zaškrtnutím/odškrtnutím zaškrtávacího pole Automaticky generovat číslo objektu.
Číslo objektu generované automaticky v rámci číselných řad se skládá ze 3 částí
V konfiguraci období lze pro příslušné účetní období ovlivnit
Počet znaků pro označení číselné řady (2-4), standard je 3 znaky
Počet číslic samotného čísla (3-6), standard je 4
při sestavování reálného čísla objektu bude pořadové číslo doplněno zleva nulami do definované délky
pokud během provozu vznikne tolik objektů v rámci určité řady, že definovaná délka nebude dostačovat, nenastane chyba, pouze se číslo automaticky prodlouží podle potřeby
Nejběžnější struktura je XXX-RR-nnnn (DPR-12-0123) ... přitom max. délka celého pole je 16 znaků.
Strukturu lze sice během času v jednotlivých účetních obdobích
měnit, není to ale rozumné.
Rozhodnutí o struktuře (nejlépe ponechání standardního doporučeného stavu) by mělo padnout při implementaci
systému a později by se již nemělo měnit.
Chování prohlížeče závisí na konfiguraci příslušného druhu
Pokud je pro příslušný druh nastaveno automatické číslování
Zobrazí se nejprve pole pro volbu číselné řady a to do doby, než se v rámci této řady vytvoří číslo objektu (to má smysl praktický smysl u dokladů, u kterých se číslo tvoří až při vystavení).
Pokud již je číslo v rámci zvolené řady vytvořeno, zobrazí se toto číslo, bez možnosti jeho editace.
Pokud není pro příslušný druh nastaveno automatické číslování
V žádném případě se nezobrazuje pole pro volbu řady, ale vždy pouze pole pro volné zadání čísla
Pole pro zadání dovoluje trvale editaci, případné změny jsou zaznamenané v historii tohoto údaje.
SQL server při založení nového objektu a/nebo jeho změně kontroluje, zda je/není zadáno číslo objektu a reaguje následovně
Pokud číslo JE zadáno (bez ohledu na jeho strukturu)
pokud je unikátní v rámci databáze a neobsahuje mezery, je to v pořádku,
pokud číslo unikátní není nebo obsahuje mezery, nepovolí uložení dat.
Pokud číslo zadáno NENÍ, pak
pokud podle konfigurace není nutné, pak
pokud je zadána číselná řada, použije jí a vygeneruje číslo v rámci této řady, s výjimkou dokladů u nichž je nastaven požadavek čísla až při vystavení, zde je pouze požadována číselná řada a tvorba čísla je ponechána na proces vystavení dokladu.
pokud není zadána ani číselná řada, nic se neděje, data se uloží tak jak jsou.
pokud je podle konfigurace nutné, pokusí se jej vytvořit, přitom
pokud je v konfiguraci pro daný druh nastaveno ruční zadání (nikoliv automatická tvorba v rámci číselných řad), nemá to řešení, data nelze uložit, program oznámí chybu,
jinak se pokusí a automatické generování čísla, k tomu je potřeba znát číselnou řadu, proto
pokud je číselná řada určena, použije jí a vygeneruje číslo v rámci této řady
pokud není číselná řada určena, pokusí se jí systém zvolit automaticky, přitom
pokud pro daný druh existuje jediná řada, použije jí,
jinak se pokusí zjistit výchozí šablonu a použít číselnou řadu zadanou u této šablony pokud se nic z toho nepovede, data nelze uložit, program oznámí chybu.
Je zřejmé, že šablona je z hlediska čísla objektu velmi specifickým
objektem.
V budoucnu bude využívána pro vytváření jednotlivých objektů, které budou dostávat své vlastní číslo. Šablona
sama má za úkol pouze předdefinovat příslušnou číselnou řadu.
Proto komponenta, která v uživatelském rozhraní slouží k zadávání číselné řady reaguje jiným způsobem, pokud pracujete se šablonou. V rámci šablony ponechá totiž pouze číselnou řadu a nevytváří z ní nikdy konkrétní číslo objektu.
![]() |
Struktura datových objektů (tříd) |
![]() |
Datová architektura Kaskády | Historie událostí |
![]() |