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.

Obsah kapitoly:

Obyčejné neboli "neextra" položky - vnitřní reprezentace

Pro řešení obyčejných neboli "neextra" udf položek jsou v databázi k dispozici následující tabulky:

UserFieldDefs

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

UserFieldDefs2

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

UserData

Obsahuje obecná data uživatelsky nadefinovaných položek jednotlivých BO. Každý záznam obsahuje mj.:

  • identifikaci Business objektu (CSLID), 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

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 skupinu Mzdy a personalistika se nepoužívá přímo tabulka UserData, ale jiná speciálně pro tento účel zavedená, v tomto případě např. UserWgData.)

HistoryData

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 skupinu Mzdy a personalistika se nepoužívá přímo tabulka HistoryData, ale jiná speciálně pro tento účel zavedená, v tomto případě např. HistoryWgData.)

Zpět na obsah / začátek kapitoly

Extra položky - vnitřní reprezentace

Vnitřní realizace

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 repositoři a to v místě podřízeném příslušnému spojení na databázi. Tato část repositoř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é).

Zpět na obsah / začátek kapitoly

Omezení pro definici extra položek u některých Business objektů

V některých případech sdílí více Business objektů (BO) jednu tabulku. Příklady objektů, které používají společnou tabulku:

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í" (SecirityGroup))
  • 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.

Zpět na obsah / začátek kapitoly

Pravidla pro použití prefixů a kódů Udf položek

  • 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á.

Zpět na obsah