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 ABRA 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 ABRA 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 ABRA 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 dodacího listu 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ř. v 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á.