Pravidlá pre užívateľské definície a čoho je vhodné sa vyvarovať

Spomenieme tu niekoľko pravidiel a zásad, na ktoré je vhodné upozorniť, keď chcete definovať vlastné položky a definovateľné formuláre.

Základné pravidlá

  • Na vlastné užívateľské formuláre je možné vkladať aj položky neužívateľské, tzn. položky definované k danému Business objektu výrobcom. Naopak užívateľské položky je možné vkladať len na užívateľské formuláre, teda nie je možné žiadnym spôsobom modifikovať neužívateľské definovateľné formuláre dané výrobcom.
  • Definovateľné položky nepodporujú možnosť navzájom ovplyvňovať a validovať svoje hodnoty. Napr. že by sa v závislosti od hodnoty jednej položky nastavila hodnota inej položky apod. Jediná validácia, ktorá je pri nich zatiaľ podporovaná, je kontrola vyplnenosti danej položky a to hodnotou platnou pre daný typ položky. Ďalšou možnosťou, ako zrealizovať validáciu, je pridať na definovateľný formulár, kde je položka umiestnená, aj prvok typu výraz, a pomocou vhodnej definície výrazu vykonať požadovanú kontrolu hodnôt iných položiek.

    Kontroly hodnoty užívateľsky definovateľnej položky v závislosti od inej položky by bolo možno realizovať tiež skriptovaním.

  • Definovateľné položky a formuláre sú VEĽMI voľné. To znamená, že kladú užívateľovi minimálne obmedzenia, čo sa týka možností, ktoré on plánuje použiť. To samozrejme so sebou nesie aj riziko, že nevhodným nastavením si buď spôsobí, že systém začne vykazovať v danej agende chyby a nebude ho možné použiť, kým nebudú definície vykonané korektne, alebo si užívateľ "povolí" zadať v danej agende niečo tak, ako by mu to agenda sama o sebe nepovolila.

    Jakých zásad se při vytváření definovatelných položek držet a jak správně definovatelné položky vytvářet, mazat a používat na formulářích najdete v sekci Návody, zde.

  • Voľné sú aj povolené úpravy, tzn. opravy definícií formulárov, ale aj opravy definícií položiek a do značnej miery aj ich mazanie a to vo väčšine prípadov bez ohľadu na predchádzajúce použitie danej položky. Pokiaľ teda takéto akcie potrebujete vykonať, realizujte ich VEĽMI obozretne a s uvážením. Mohli by ste si zbytočne spôsobiť, že do systému vnesiete chyby, ktoré začne vykazovať, nebudete sa môcť dostať k skôr zadaným užívateľským dátam alebo systém začne ukazovať nezmyselné hodnoty apod. Objasníme na príklade:

    Užívateľ si nadefinuje položku ako Prepínač s nejakými možnosťami a použije ju na uloženie definície Obmedzenia danej agendy. Potom z nejakého dôvodu zásadne definíciu danej položky opraví, napr. zmení jej typ. Pri použití danej definície obmedzenia v danej agende mu potom program bude vykazovať chybu typu "neznáme hodnoty obmedzenia" apod.

  • Pri vložení položky do definovateľného formulára je možné takpovediac ľubovoľne pozmeniť jej definičné údaje oproti ich definícii. Je teda možná značná variabilita pri konkrétnom použití danej položky v konkrétnom formulári.
  • Jednu položku je možné mať v jednom formulári vloženú viackrát, a to aj vždy s trochu odlišnou definíciou. Hodnoty v nich sa potom program snaží synchronizovať, tzn. keď zadáte hodnotu do jednej z nich, hodnota v druhej z nich sa podľa toho zaktualizuje.
  • Položku typu Celé číslo je možné do formulára vložiť priamo ako Celé číslo, ale aj ako skrytý zoznam, ako vodorovný prepínač alebo ako zvislý prepínač. Interne je každá z možností pri posledných troch prvkoch zapísaná ako celé číslo. Aké sú vizuálne reprezentácie daných možností, tzn. čo sa bude ponúkať vo formulári vizuálne užívateľovi pri takomto prvku, je dané len definíciou daného formulára.
  • Ak chcete hodnoty položiek prenášať pri vzájomnom importe dokladov, nemôžu byť zodpovedajúce položky rôznych Business objektov nadefinované ľubovoľne. Čo musí položka spĺňať, aby ich bolo možné pri importe prenášať, viď Importy užívateľsky definovateľných položiek.

Je len na užívateľovi, aby si za vhodnosť a použitie svojich definícií ručil!

Príklady možných dôsledkov

Z vyššie uvedeného vyplýva napr. že položku si je možné nadefinovať tak, že povolí aj zadanie hodnôt, ktoré sú pre program korektné, ale pre užívateľa nezmyselné. Objasníme na príklade:

Užívateľ si nadefinuje položku na zadanie hodnoty z číselníka dodávaného výrobcom, napr. na zadanie radu dokladov a chce ju využiť na zadanie radu skladového dokladu. Pokiaľ by chcel, aby sa ponúkali len rady skladových dokladov, musel by si číselník vyvolať s príslušnými parametrami. Užívateľ si ho ale takto nedefinuje, takže číselník sa mu ponúka celý. Keď potom obsluha v danej položke hodnotu vyberie tak, že nepôjde o skladový rad, systém uloženie povolí (ani nemôže inak), no hodnota bude s ohľadom na pôvodnú požiadavku užívateľa nezmyselná.

Ďalej z vyššie uvedeného vyplýva, že položku môžete mať napr. nadefinovanú ako skrytý zoznam s tromi možnosťami, ale vloženú do formulára ako skrytý zoznam so štyrmi úplne inými možnosťami. Posúdenie zmysluplnosti takéhoto použitia je na užívateľovi, ale lepšie je sa mu vyvarovať. Príklad dôsledku objasníme na príklade:

Užívateľ si nadefinuje položku typu skrytý zoznam s možnosťami A, B, C a nastaví si, že ju chce používať pre obmedzenie, teda v záložke Obmedzenie danej agendy pribudne obmedzovací prvok s možnosťami A, B, C. Pri vložení položky do formulára však možnosti nadefinuje inak, a to X, Y, Z, W a z nich potom tiež bude na jednotlivých záznamoch danej agendy vyberať. Teda na dokladoch budú hodnoty X, Y, Z alebo W. Ak si potom bude chcieť záznamy podľa tejto položky obmedziť, budú sa mu ponúkať ale hodnoty A, B, C. (Obmedzenie bude funkčné, ide len o inú reprezentáciu jednotlivých volieb, za štvrtú voľbu však nebude možné obmedzovať, keďže pre ňu v definícii položky nie je zavedená vizuálna reprezentácia.)

Ďalej z vyššie uvedeného vyplýva, že jednu a tú istú položku môžete mať definovanú napr. ako skrytý zoznam a vloženú napr. ako číselnú položku v jednom formulári, príp. ako skrytý zoznam s úplne inými možnosťami v inom formulári. Posúdenie zmysluplnosti takéhoto použitia je opäť na užívateľovi. Objasníme na príkladoch:

Užívateľ si nadefinuje položku skrytý zoznam s možnosťami A, B, C. Teda 3 povolené možnosti a požaduje, aby obsluha zadala jednu z nich. Danú položku si však vloží ako celé číslo bez obmedzenia. Potom obsluha môže do položky zadať ľubovoľné celé číslo i mimo počet možností - napr. 5. Systém uloženie povolí (ani nemôže inak), no užívateľ má pri zázname zadanú hodnou, pre ktorú nemá vizuálnu reprezentáciu v skrytom zozname (takže minimálne podľa nej nebude môcť obmedziť).

Užívateľ tú istú položku skrytý zoznam s možnosťami A, B, C použije ako skrytý zoznam s týmito hodnotami v jednom formulári a ďalej ako skrytý zoznam s úplne inými hodnotami napr. KK, LL, MM. Keď sa edituje záznam pomocou prvého formulára, ponúkajú sa mu hodnoty A, B, C a keď pomocou druhého formulára, ponúkajú sa mu hodnoty KK, LL, MM. Voľba hodnoty A je však pre program totožná s voľbou hodnoty KK atď. Záleží na tom, či je zmysluplné, mať dané voľby totožné, aj pre užívateľa.

Ďalej, z vyššie uvedeného vyplýva, že môžete do jedného formulára vložiť jednu a tú istú položku viackrát a vždy trochu iným spôsobom. Objasníme na príklade:

Užívateľ si rovnakú položku typu celé číslo vloží do formulára dvakrát: raz s nastavenými hranicami pre Minimum=3 a Maximum=5 a druhýkrát bez hraničných hodnôt. Keď potom napr. v prvej z nich zadá hodnotu 8, program sa pokúsi danú hodnotu prevziať aj do druhej položky, ale navyše na ňu aplikuje zadané povolené maximum, takže ju upraví na 5. Užívateľ tým pádom v jednej položke vidí hodnotu 8, v druhej 5, hoci vnútorne ide o jednu a tú istú položku. (Do databázy sa samozrejme uloží pre každú položku len jedna hodnota).