Definice položek a formulářů - vnitřní reprezentace
V této kapitole naleznete popis, jakým způsobem jsou definovatelné položky a formuláře reprezentovány v tabulkách v databázi IS FLORES. Běžný uživatel nebude tyto informace ke své práci potřebovat, proto může tuto kapitolu přeskočit.
Pro řešení obyčejných neboli "neextra" udf položek jsou v databázi k dispozici následující tabulky:
Obsahuje hlavičkové údaje definic definovatelných položek. Seznam existujících definic je uživateli k dispozici v agendě Definovatelné položky - v záložce Seznam. Tabulka hlaviček definic obsahuje hlavně:
- identifikaci Business objektu (CSLID), k němuž se daná definice sady definovatelných položek váže
- vlastní identifikaci definice
Obsahuje vlastní definice definovatelných položek. Každý záznam mj. obsahuje:
- jednoznačný odkaz na hlavičku definice (jeden ze záznamů z tabulky UserFieldDefs)
-
kód definovatelné položky (FieldCode) jednoznačný v rámci seznamu definovatelných položek k dané třídě objektů - přes tento kód je pak na danou položku odkazováno a to:
- jednak z definovatelných formulářů
- jednak z tabulky konkrétních dat
- řadu dalších položek týkajících se konkrétní definice
Tabulky obsahují obecná data uživatelsky nadefinovaných položek jednotlivých BO. Každý záznam obsahuje:
- identifikaci Business objektu (CLSID), k němuž se daná položka a její hodnota váže
- identifikaci dané položky odkazem přes kód položky (FieldCode)
- vlastní hodnotu, příp. u číselníkových položek odkaz do jiné tabulky na odpovídající záznam číselníku (StringFieldValue)
Data uživatelsky definovatelných položek k většině objektů jsou uložena v tabulce UserData. Výjimkou je modul Mzdy a personalistika; data UDF položek k jeho objektům (viz tabulka níže) jsou uložena v tabulce UserWgData s obdobnou strukturou.
|
|
|
|---|---|
| Zaměstnanec (Employee) |
|
| Mzdový list souhrnný (WageListCommon) |
|
| Mzdový list dílčí (WageListPartial) |
|
Do které tabulky se data UDF položek konkrétního objektu ukládají (UserData / UserWgData) je určeno programem.
CLSID (PackedCLSID) objektů naleznete v popisu struktur a definic (v seznamech business objektů jednotlivých modulů).
Kódy položek (FieldCode) naleznete v tabulce UserFieldDefs2.
Obdoba předchozí tabulky, ale slouží pro ukládání historických hodnot uživatelsky nadefinovaných položek, které podporují historii.
Obdobně jako u předchozí tabulky platí, že tato data uživatelsky definovatelných položek nemusí všechna nutně ležet v této tabulce, mohou být umístěna i v dalších tabulkách obdobné struktury. Jaká tabulka pro uložení takových dat bude použita, je dáno programem (např. pro modul Mzdy a personalistika se nepoužívá přímo tabulka HistoryData, ale jiná speciálně pro tento účel zavedená, v tomto případě např. HistoryWgData.)
Extra udf položky jsou (na rozdíl od "neextra" položek) v databázi uloženy přímo v tabulkách příslušejících Business objektu, pro který jsou nadefinovány.
Protože v systému IS FLORES může existovat současně více spojení (connections) na databázi (dále viz nástroj DbAdmin.exe) a v každém spojení je možné mít odlišné struktury tabulek, je třeba i odděleně evidovat informace o extra položkách a samozřejmě i informace o základních SQL akcích. Proto jsou informace o extra položkách k dané třídě (o definici jejich struktury) uloženy nejen v tabulce UserFieldDefs jako ostatní "neextra" Udf položky, ale také v repozitoři a to v místě podřízeném příslušnému spojení na databázi. Tato část repozitoře je součástí zálohy. Viz Co obsahuje záloha *.ABF.
Jak bylo již zmíněno v kap. Definice položek a formulářů - obecné, po změně v definicích extra Udf položek je podle jejich definice zajištěna úprava struktury odpovídajících tabulek v databázi a úprava základních SQL akcí (select, insert, update) pro práci s nimi a to i za běhu systému IS FLORES (je-li to možné).
V některých případech sdílí více Business objektů (BO) jednu tabulku. Příklady objektů, které používají společnou tabulku:
- Role a Skupina rolí
- Skladové doklady nepolohovací i polohovací a řádky takových skladových dokladů
- Uživatelsky definovatelné číselníky
V takovém případě lze definovat extra položky pouze u jedné třídy daných BO a to následovně:
- buď u třídy jednoho z nich (viz případ rolí a skupin rolí, kdy je možno definovat extra položky pro BO "Role" (SecurityRole), ale už ne pro BO "Skupiny rolí" (SecurityGroup))
- nebo u třídy nadřazeného BO, pokud se jedná o případ, že pro danou skupinu BO existuje nějaký nadřazený BO (viz případ skladových dokladů, kdy je možno definovat extra položky pro BO "Skladový doklad" (CustomStoreDocument), ale už ne pro BO výdejky a jiných sklad. dokladů).
U ostatních tříd BO, které ukládají svá data do téže tabulky, tato možnost k dispozici není, ale protože se změna struktury provádí nad společnou tabulkou, i tyto objekty znají nové extra položky a mohou s nimi pracovat. Tyto extra položky ale nejsou přímo viditelné v definici definovatelných položek těchto BO, ale pouze ve formulářích (při výběru položky, viz volba Přidat položku v definici formuláře).
Ke třídě BO "Role" si nadefinujeme extra položku X_pokus. Pokud se budeme dívat na seznam definovatelných položek nadefinovaných ke třídě BO "Skupina rolí", tak tam položka X_pokus uvedena nebude, ale pokud budeme pro třídu BO "Skupina rolí" definovat definovatelný formulář, bude se nám položka X_pokus nabízet k výběru.
V editaci Udf položek takového Business objektu se zobrazuje informace o tom, ve kterém Business objektu je možné extra položky definovat.
- Obyčejné "neextra" Udf položky
- Systémové mají prefix S_ a kód v rozmezí od 1000000 do 1999999 včetně.
- Nesystémové obyčejné ("neextra") Udf položky mají prefix U_ a kód větší nebo roven 2000000.
- Extra Udf položky
- Systémové mají prefix Y_ a kód v rozmezí od 800000 do 899999 včetně.
- Nesystémové mají prefix X_ a kód v rozmezí od 900000 do 999999 včetně.
Kódy uživatelsky definovatelných položek se přidělují až při uložení. Nově vytvořená uživatelsky definovatelná položka má kód roven nule. Při ukládání celé definice se u položek, které mají kód roven nule, provede přidělení správného kódu. O toto se stará přímo Business objekt, není to tedy potřeba např. ve FloresOLE nijak speciálně ošetřovat. Ten, kdo bude definice udf položek spravovat pomocí FloresOLE, může tedy kódy položek buď nastavit sám s ohledem na pravidla uvedená výše nebo je nechat nastavené na nula, a BO definice se o to sám postará.