Definovatelné sloupce v seznamech
Kap. zatím není zcela zaktualizována. Některé možnosti aktuálně nejsou podporovány. Více viz Změna vzhledu a související funkční změny od verze 21.1.
Ve většině needitovatelných seznamů v dokladových agendách i v číselnících (malých i velkých) je pro zvýšení uživatelského komfortu (větší přizpůsobitelnost uživateli, zvýšení přehlednosti, lepší dostupnost informací, které konkrétní uživatel potřebuje aj.) možno:
- uživatelsky definovat, jaké sloupce budou v seznamech zobrazovány a jaké ne, a jaké má být pořadí a šířka sloupců
- volitelně zobrazovat i uživatelsky definovatelné položky
- volitelně zobrazovat nové položky konstruované z obecného výrazu (např. součet hodnot dvou sloupců apod.)
Tato možnost je k dispozici i v seznamech zobrazovaných v jiných záložkách (tedy nejen na záložkách Seznam).
Jedná se o jednu z možností zákaznické modifikovatelnosti systému.
1) Uživatel některé zobrazené sloupce nikdy nepotřebuje vidět. Nastaví si tedy u nich, že se nebudou v seznamu zobrazovat – sníží se tím počet informací na obrazovce a zvýší se tak přehlednost.
2) Uživatel si nadefinoval nové uživatelské položky a chce je vidět v základním seznamu. Nadefinuje si tedy nové sloupce pro zobrazení těchto definovatelných položek a nastaví jejich zobrazení v gridu.
3) Uživatel si na základě informací vyplývajících z více položek chce nechat zobrazit nějakou výslednou informaci (např. součet dvou numerických položek nebo jejich průměr). Nadefinuje si tedy nový sloupec, ve kterém uvede výpočtový výraz pro získání výsledné hodnoty k zobrazení. Nastaví si zobrazování tohoto nového sloupce.
Dále je uvedeno:
V seznamech, které podporují definovatelné sloupce, si lze kromě dodávaných (systémových) sloupců definovat i vlastní uživatelské sloupce a definovat si, co se v nich má zobrazovat. Takový sloupec může být různých typů - konkrétně Tabulka, kdy lze vybírat z omezené množiny položek dodávaných výrobcem, nebo Objekt, kdy lze vybírat také z uživatelsky definovatelných položek a definovat složitější výrazy, ale kdy jsou zas naopak omezené možnosti třídění apod. Speciální variantou je typ Výraz používaný ve spojitosti s paměťovými datasety.
U seznamu lze nastavit, jak se má aktuálně zobrazovat, tj. jaké sloupce z existujících systémových i nesystémových se mají aktuálně zobrazovat a jak (pořadí, šířka, barva atd.).
Při prvním otevření agendy nebo při vyvolání nabídky Výchozí nastavení z menu Nastavení nebo funkcí Systémová definice se zkontroluje šířka sloupců seznamu a ty sloupce, jejichž nadpis by se nevešel celý, se roztáhnou na výchozí velikost. (Platí pro všechny dokladové agendy a číselníky.)
Aktuální nastavení zobrazení sloupců (nastavení vzhledu seznamu) si lze uložit jako definici zobrazení sloupců pod zadaným jménem. Proto ji budeme nazývat Pojmenovaná definice. Pro každý seznam může existovat takových definic víc a uživatel si může volit, kterou chce právě zobrazit. Takto vytvořenou Pojmenovanou definici je možné navíc přiřadit i uživatelské definici omezení a to funkcí Uložit omezení i s definicí sloupců na záložce omezení. Pokud je při zavření agendy nebo číselníku vybrána některá Pojmenovaná definice, bude použita i při příštím otevření agendy (pokud neexistuje jiná Pojmenovaná definice nastavená jako Výchozí nebo výchozí omezení či filtr s přiřazenou Pojmenovanou definicí).
Definice zobrazení sloupců může vzniknout i jinak, pokud je k tomu v dané agendě podpora, např. funkce Sloupce v agendě Odpisy majetku.
V některých případech se může zobrazení nebo skrytí některého sloupce nastavovat i jinak - např. volbou v menu Nastavení. Příkladem je volba Zobrazovat množství na skladě v menu Nastavení v agendách Šarže/sér.č., Pohyby na objednávkách, Pohyby na nabídkách apod. Jiným příkladem je sloupec Vložit do dokladu zobrazovaný v číselníku skladových karet vyvolaném jako výběrový, je-li zvolen režim zadání expedovaného množství přímo nad seznamem sklad. karet.
Nastavení volby reaguje na zobrazování a skrývání sloupce s počtem v definici zobrazení sloupců a naopak.
U každé definice lze určit, zda se bude zobrazovat jen uživateli, který ji vytvořil (tzv. uživatelská definice), nebo i ostatním uživatelům (tzv. globální definice). Běžný uživatel se tudíž definicemi nemusí zabývat (nebo jen na úrovni změny pořadí a šířky či skrytí nějakého sloupce) a může využívat definice, které mu připraví někdo jiný – např. správce systému. Změny, které jsou provedeny a uloženy jako globální definice, se automaticky promítnou všem. Kdo smí vytvářet a měnit globální i uživatelské definice lze určit přístupovými právy Modifikovat seznam sloupců a Vytvářet a rušit globální definice sloupců.
Pokud existuje definic víc, ale uživatel mezi nimi nechce přepínat, pak si může svoji definici nastavit jako Výchozí. Tato definice se pak v případě, že není nastaveno výchozí omezení nebo filtr s přiřazenou nějakou jinou definicí sloupců, automaticky použije při opětovném otevření agendy daným uživatelem.
Kromě uživatelem uložených Pojmenovaných definic se při většině změn v nastavení sloupců uchovávají tyto změny pro daného uživatele jako definice s názvem Naposledy použité neuložené sloupce. Tato definice se při zavření agendy překopíruje do definice Stav z posledního zavření agendy, která se použije při opětovném otevření agendy daným uživatelem. Agenda se pak uživateli otevře v tom stavu, v jakém ji opustil, a to i tehdy, pokud uživatel žádné Pojmenované definice uložené nemá nebo si některou Pojmenovanou definici pozměnil, ale změny jako další novou Pojmenovanou definici již neuložil. Volba Naposledy použité neuložené sloupce bude při opětovném otevření agendy neaktivní do doby, dokud nedojde k nějaké další neuložené změně v nastavení sloupců. Zároveň je volba Naposledy použité neuložené sloupce vhodná i proto, že se uživatel při neuložené změně Pojmenované definice může snadno k původnímu stavu změněné Pojmenované definice vrátit. Definice Naposledy použité neuložené sloupce a Stav z posledního zavření agendy budeme také nazývat jako Nepojmenované definice.
V agendách Bilance, Pokrytí dokladu a Vývoj v SCM nejsou nepojmenované definice Naposledy použité neuložené sloupce a Stav z posledního zavření agendy dostupné kvůli jinému mechanismu definice sloupců. Více viz kap. Záložka Omezení funkčních agend SCM oddíl Definice nastavení pro tuto agendu, její vytvoření a použití.
Při otevírání agendy se postupuje tímto způsobem:
- Pokud existuje nějaké výchozí omezení nebo filtr s uloženou Pojmenovanou definicí sloupců, použije se tato definice (viz funkce Uložit omezení i s definicí sloupců v modálním okně Uložit definici omezení na záložce omezení).
- Pokud výchozí omezení ani filtr nadefinovány nejsou, ale je při otevření agendy nebo číselníku k dispozici nějaká výchozí Pojmenovaná definice sloupců, použije se tato definice (viz funkce Výchozí v editoru sloupců).
- Pokud žádná Pojmenovaná definice neexistuje (ani výchozí ani žádná jiná) a není-li v agendě nebo číselníku ani uložena informace o naposledy použitých neuložených sloupcích z posledního zavření agendy, použije se Systémová definice.
- Pokud v agendě nebo číselníku existuje Pojmenovaná definice, použije se tato definice (ta, která byla aktivní, když došlo k zavření agendy nebo číselníku).
- Pokud v agendě nebo číselníku neexistuje žádná Pojmenovaná definice, ale v agendě nebo číselníku je uložen Stav z posledního zavření agendy, použije se toto rozložení sloupců.
- V ostatních případech se použije Systémová definice.
Dále viz oddíl Ovládání a popis položek a funkcí v editoru sloupců.
Definovatelné sloupce podporuje většina seznamů v záložkách Seznam jednotlivých agend a některé vybrané seznamy v jiných záložkách (např. záložky Platby apod.). To ovšem neznamená, že pokud je v agendě subzáložka zobrazující informace ze záložky Seznam jiné agendy (např. subzáložka Osoby zobrazující informace o vybraných osobách obdobně jako je přímo v záložce seznam agendy Osob), že bude rovněž definovatelné sloupce podporovat. Pokud je podporuje, pak je ovšem potřeba si pro taková místa definice sloupců nadefinovat zvlášť, nijak se nesdílí s definicemi vytvořenými pro hlavní záložku Seznam dané agendy.
Z výše uvedeného výkladu definovatelných sloupců plyne, že je v provozech s méně zkušenými uživateli možné, aby definici zobrazení sloupců vytvořil a udržoval nějaký k tomu určený správce a koncoví uživatelé tyto definice pouze používali a pokud správce definici upraví, změna se jim automaticky promítne.
Správce nadefinuje v agendě vydaných faktur jednu definici sloupců k zobrazení pro obchodníky a druhou pro účetní. Uživatelům na jejich počítačích nastaví použití těchto definic jako výchozí. Když později nadefinuje nový sloupec a přidá ho např. do uložené definice pro obchodníky, obchodníkům se už bez jakéhokoliv zásahu na jejich počítačích tento nový sloupec v seznamech objeví.
Použití definic sloupců lze rozdělit zhruba na tři následujících případy:
- Případ 1 - U uživatele není centrální zpráva definic zobrazení sloupců, uživatel nepotřebuje definovat nějaké vlastní sloupce a nepotřebuje víc definic zobrazení sloupců pro jeden seznam - uživatel může využívat defaultně dodávaný výchozí seznam tak, jak je, nebo si jej může upravit (skrýt sloupce, které nepotřebuje, upravit šířku a pořadí - nejjednodušeji jen myší přímo v seznamu). Nastavení seznamu si ale nemusí ukládat jako Pojmenovanou definici. Při příštím otevření se mu agenda otevře v tom stavu, v jakém ji opustil.
- Případ 2 - U uživatele není centrální zpráva definic zobrazení sloupců, ale uživatel potřebuje definovat nějaké vlastní sloupce nebo potřebuje víc definic zobrazení sloupců pro jeden seznam - pak si uživatel požadované sloupce nadefinuje a nastavení seznamu si uloží jako Pojmenované definice. Může si jednu z nich nastavit jako výchozí.
- Případ 3 - U uživatele je centrální zpráva definic zobrazení sloupců - pak uživatel jen zvolí jednu z existujících definic pro zobrazení, příp. si některou nastaví jako výchozí. Pokud mu existující definice nevyhovuje, ale nemá právo ji měnit, pak buď musí způsobit, aby ji změnil správce (přičemž se změna promítne všem) nebo si jen přizpůsobí seznam zobrazený dle této definice a uloží si nastavení jako jinou vlastní definici.
Pokud uživatel v případě 2 a 3 vybere definici a následně ji změní (v editoru definic nebo přímo změnou v seznamu), měl by změny uložit (do téže definice nebo jako novou definici). Jinak by o ně mohl přijít (pokud má totiž nastavenu nějakou definici jako výchozí, tak by se při dalším otevření agendy otevřela ta, viz výše).
Upravovat vzhled seznamu lze částečně buď přímo v seznamu myší nebo přes lokální menu (viz změna Změna pořadí a velikosti sloupců v needitovatelném gridu). K tvorbě definic uživatelských sloupců a k ukládání nastavení zobrazení sloupců jakožto Pojmenovaných definic slouží Editor sloupců. Pomocí něj lze definice přidávat, upravovat i mazat. Změna v seznamu se promítne do editoru a naopak.
Pro výběr a editaci jsou v menu nebo lokálním menu vyvolaném nad nadpisem některého z aktuálně zobrazených sloupců k dispozici různé volby. A to:
- Pojmenované definice - Názvy Pojmenovaných definic. Zobrazí se pouze tehdy, pokud nějaké definice existují.
- Stav z posledního zavření agendy - Rozvržení sloupců, které bylo při posledním otevření agendy změněno, ale nebylo uloženo. Viz popis výše.
- Naposledy použité neuložené sloupce - Pokud dojde v aktuálně otevřené agendě nebo číselníku ke změnám v rozvržení sloupců, které nejsou uloženy, jsou změny indikovány zatržením této položky. Pokud žádné neuložené změny v rozvržení sloupců nejsou, je položka neaktivní. Viz popis výše.
- Systémová definice - Defaultní nastavení sloupců needitovatelného seznamu, ke kterému je možné se tímto způsobem vždy vrátit. Odpovídá volbě Výchozí nastavení, která se však vztahuje i na editovatelný seznam.
- Editor sloupců - Vyvolá Editor sloupců.
Následuje popis typických postupů, které mohou nastat při zacházení s definicemi sloupců:
Vlastní definici zobrazení sloupců nadefinujete:
- volbou v menu: Nastavení→Zobrazení sloupců→Editor sloupců - platí jen pro hlavní seznam dané agendy. Ve vyvolaném editoru nadefinujete seznam sloupců dle vašich požadavků a tuto definici uložíte pod zadaným jménem. Uložená definice přibude pod zadaným jménem jako volba v příslušné větvi menu.
Příklad části menu Nastavení s nabízenými dvěma Pojmenovanými definicemi s názvy Definice 1... a Definice 2.... Volba Stav z posledního zavření agendy slouží pro zrušení zobrazování podle Pojmenované definice a odpovídá stavu při posledním zavření dané agendy. Definice 1 je nastavena jako výchozí, proto má za svým názvem uvedeno (výchozí). Příklad s aktuální volbou Stavu z posledního zavření agendy. Význam dalších voleb viz dále.
-
volbou Editor sloupců z lokálního menu vyvolaného nad nadpisem některého z aktuálně zobrazených sloupců
Lokální menu (vyvolané nad nadpisem sloupce)→Editor sloupců.
Vlastní definici zobrazíte:
- z hlavního menu: →Nastavení→Zobrazení sloupců→ volbou definice - platí jen pro hlavní seznam dané agendy. Tedy zvolíte buď definici dodávanou výrobcem nebo některou svou vlastní, viz výše
- z lokálního menu vyvolaného nad nadpisem některého z aktuálně zobrazených sloupců volbou dané definice
Příklad části lokálního menu vyvolaného pravým tlačítkem myši nad nadpisem sloupce v seznamu, u něhož lze definovat sloupce. Příklad s aktuální volbou Definice 2. Význam dalších voleb viz dále. ABRA vzhled modrý.
Pokud v zobrazené definici něco změníte přímo v hlavním seznamu (např. šířku sloupce), zatržítko u příslušné definice se odtrhne a zatrhne se volba Naposledy použité neuložené sloupce. Pokud za této situace otevřete Editor sloupců, není v položce Vybraná definice uveden žádný název definice. Přejete-li si provedené změny zachovat v této definici, musíte ji uložit.
Změnu zobrazené definice provedete:
- z hlavního menu: →Nastavení→Zobrazení sloupců→ výběrem jiné definice - platí jen pro hlavní seznam dané agendy.
- z lokálního menu vyvolaného nad nadpisem některého z aktuálně zobrazených sloupců výběrem jiné definice sloupců
Toto je mj. i tip, jak si rychle k aktuálnímu seznamu zobrazit různé položky: mít několik definic obsahujících různé položky, které nás zajímají, a poté nad zobrazeným seznamem jen vyvolávat lokální menu a rychle přepínat mezi definicemi.
Zobrazení dle vlastní definice vypnete:
- z hlavního menu: →Nastavení→Zobrazení sloupců→Stav z posledního zavření agendy - platí jen pro hlavní seznam dané agendy.
- z lokálního menu vyvolaného nad nadpisem některého z aktuálně zobrazených sloupců volbou Stav z posledního zavření agendy
Návrat do systémového nastavení provedete:
- z hlavního menu: →Nastavení→Zobrazení sloupců→ výběrem volby Systémová definice - platí jen pro hlavní seznam dané agendy.
- z lokálního menu vyvolaného nad nadpisem některého z aktuálně zobrazených sloupců volbou Systémová definice
Výjimkou je chování v modálním okně Skryté. Tam funkce Systémová definice odpovídá rozložení sloupců číselníku v okamžiku zobrazení dialogu.
Definice uživatelských sloupců jsou uloženy ve speciálních tabulkách v databázi. Definice zobrazení sloupců jsou uloženy v samostatné datové struktuře v repozitoři a zálohují se.
Systémové sloupce jsou definovány výrobcem přímo v dfm a zakompilovány v dodávaných dll.
Při vykreslování seznamu se kromě systémových sloupců postupně přidávají i uživatelské podle svých definic a upravují jejich formáty. Všechny uživatelské sloupce mají nevyplněn FieldName (tím jsou snadno identifikovatelné). U sloupců typu Tabulka se zobrazovaná hodnota přebere z odkazované položky datasetu, u sloupců typu Objekt se vyhodnotí definovaný výraz a výsledek se podle typu zobrazení vykreslí do buňky gridu. Tyto uživatelské sloupce tedy existují jen na úrovni vizuálního gridu (tj. nemají ekvivalent v datasetu).
Z tohoto důvodu je speciálně ošetřeno kopírování označených přes Clipboard v seznamu.
Pokud se po spuštění agendy zjistí při obnovování stavu, že nějaký uživatelský sloupec, který při předchozím zavření agendy existoval a byl použit, již neexistuje (mezitím jeho definici jiný uživatel smazal), tak se tento sloupec nevytvoří a nezobrazí.
Pokud se naopak při načítání definice (ať už nepojmenované nebo výchozí Pojmenované) zjistí, že přibyl nový systémový sloupec, který v uložené definici není, tak se tento sloupec v aktuálním zobrazení přidá jako zatržený k zobrazení. Tj. výrobcem nově přidaný sloupec se uživatelům po update automaticky objeví. Pokud ho uživatel zobrazovat nechce, musí ho odznačit a v tomto stavu Pojmenovanou definici znovu uložit (přepsat). U Naposledy použitých neuložených sloupců dojde k uložení při příštím zavření agendy.
Pro pořadí nového systémového sloupce platí:
- Jestliže agendu uživatel otevírá poprvé a nemá dosud žádné uložené nastavení, bude sloupec na místě daném výrobcem.
- Jestliže už uživatel v agendě dříve byl, má nějaké nastavení, které se načítá (ať už nepojmenované a nebo výchozí), pak se nový sloupec přidá na konec. Tj. bude zobrazen jako poslední v pořadí.
Výjimkou z výše uvedeného je sloupec Vložit do dokladu zobrazovaný v číselníku skladových karet vyvolaném jako výběrový, je-li zvolen režim zadání expedovaného množství přímo nad seznamem sklad. karet:
- Pokud jsou v seznamu obsažené libovolné sloupce s množstvím (alespoň jeden), sloupec Vložit do dokladu se zobrazí před prvním z nich.
- V opačném případě se sloupec Vložit do dokladu přidá na první místo.
Při vykreslování dané buňky se také provede vyhodnocení podmínky pro podmíněné formátování (pokud u daného sloupce je definována), tak podle jejího výsledku a případně podle dalších nastavení formátu sloupce se upraví vzhled dané vykreslované buňky gridu.
U uživatelských sloupců typu Tabulka platí pro možnost třídění (řazení) stejná pravidla jako u výrobcem dodávaných (systémových) sloupců. Tedy řazení u nich může či nemusí být k dispozici v závislosti na tom, zda se sloupcem přidávaná položka jmenuje stejně jako nějaký klíč v DynSQL (pro dokladové agendy), anebo zda k němu existuje zaregistrovaný klíč v RegisterStructure (pro číselníkové agendy). (Je ošetřeno, že sloupec nemá vyplněn přímo FieldName, ale že jméno fieldu z datasetu je uloženo v jiné položce.) Dále viz Třídění v needitovatelných seznamech.
U uživatelských sloupců typu Objekt je třídění problematické, jelikož jejich zobrazení je dáno obecným výrazem vyhodnocovaným nad položkami business objektu. Zde je třídění podporováno jen v jediném případě pro uživatelsky definované položky a to za podmínky, že daná položka má ve své definici zatrženo Umožnit podle této položky řadit seznam a současně že výraz obsahuje prosté jméno nějaké uživatelsky definované položky. Pokud výraz obsahuje cokoliv složitějšího než samotné jméno uživatelsky definované položky, třídění k dispozici není! Možnost řazení je k dispozici i pro uživatelské položky, které jsou odkazem do nějakého číselníku. Podrobně viz příklad v popisu položky Umožnit podle této položky řadit seznam.
Zobrazení sloupců je také závislé na definici omezení či definici filtru. Při provedení omezení či filtru se bere v potaz, zda k tomuto omezení či filtru byla připojena Pojmenovaná definice sloupců (pomocí funkce Uložit omezení i s definicí sloupců), nebo zda k definici omezení žádná definice sloupců připojena není:
Provedení omezení nebo filtru s Pojmenovanou definicí sloupců
Pokud k definici omezení či filtru byla připojena Pojmenovaná definice sloupců pomocí funkce Uložit omezení i s definicí sloupců, pak se systém nejprve pokusí dohledat tuto definici sloupců. Pokud je definice omezení globální nebo sdílená, ale Pojmenovaná definice sloupců globální ani sdílená není, systém se pokusí Pojmenovanou definici sloupců dohledat u toho uživatele, který omezení opravil, a v případě nezdaru u uživatele, který omezení založil. Pokud tuto Pojmenovanou definici dohledá, přidá ji dočasně k ostatním definicím na konec výběrového seznamu (lokálního menu), ale není možné ji editovat v Editoru sloupců. Při přepnutí na jinou definici omezení, která již tuto Pojmenovanou definici sloupců neobsahuje, se Pojmenovaná definice z konce seznamu (lokálního menu) odstraní a rozložení sloupců se přepne na Naposledy použité neuložené sloupce.
Příklad části lokálního menu vyvolaného pravým tlačítkem myši nad nadpisem sloupce v seznamu, který byl zobrazen přes definici omezení nastavenou jako globální, ke které však byla připojena Pojmenovaná definice sloupců Objednávky přijaté (ADMIN), která globální není. Tato Pojmenovaná definice je tudíž zobrazena na konci seznamu. ABRA vzhled modrý.
Provedení omezení nebo filtru bez Pojmenované definice sloupců
Pokud k definici omezení či filtru žádná Pojmenovaná definice sloupců připojena není, použije se to rozložení sloupců, které je aktuálně nastaveno.