Akce po... (insert/update/delete záznamu) - automatické volání reportů/exportů a uživatelské funkce
Zde naleznete popis, co jsou "Akce po ...", jaký je jejich princip a jak se používají:
Funkce a akce definované dle actions.cfg jsou zastaralé (deprecated) a neudržují se. Nadále rozvíjené funkce skriptování nahrazují tuto oblast.
Kromě možnosti nastavit automatické vyvolání tisku nebo exportu po uložení záznamu podle nastavení ve funkci Nastavení tisku po uložení, je v systému ABRA Gen další možnost, jak nastavit automatické provedení reportů a exportů, a to pomocí definic zadaných v jednom nebo více souborech actions.cfg (resp. actions.GUIDagendy.cfg) uložených v adresáři, kde je nexus.cfg vaší instalace. Tato funkčnost je jakýmsi "prapředchůdcem" skriptování (které bylo do systému přidáno až později). S její pomocí je možné modifikovat nebo doplnit v konkrétní agendě chování týkající se tisků a exportů po akcích INSERT, UPDATE, DELETE záznamu a navíc také po "uživatelské" akci USERACTION (např. stisk tlačítka). Použít ji lze např. na automatický export po uložení záznamu v dané agendě za účelem nějaké synchronicace s vnějším systémem, nebo v případě USERACTION na doplnění tlačítka do Agendy, které se po stisku ještě zeptá, zda si uživatel skutečně přeje email odeslat.
Tedy pomocí souborů actions.cfg lze definovat, co se má stát:
- po změně záznamu (Update)
- před smazáním záznamu (Delete)
- po přidání nového záznamu (Insert). Kopie záznamu se v tomto chová jako přidání nového.
Rozsah toho, co se může vykonat, je obdobný možnostem funkce Nastavení tisku po uložení. Tj. provést tisk resp. export, včetně určení tiskové sestavy resp. definice exportu a i případného formátu souboru, do kterého se bude tisk provádět (podrobněji viz popis dané funkce). Zde je však dále řada možností navíc:
- Je možné definovat provedení více reportů či exportů najednou.
- Je možné zvlášť definovat akce po změně (opravě) záznamu a po přidání nového.
- Je možné definovat i akce k provedení před smazáním záznamu.
- Je navíc možné definovat podmínku, která se vyhodnocuje, a jen pokud je splněna, je daný export nebo report vykonán.
- Je možné zadefinovat text otázky, která se uživateli zobrazí s volbami Ano a Ne.
- Je možné si nadefinovat vlastní uživatelské funkce pro ovládání z uživatelského rozhraní (UserAction)
Této funkčnosti s výhodou využijete např. v agendě Aktivit, resp. Časového plánu, kdy si můžete např. nadefinovat akci pro odeslání SMS o zadaném záznamu. Tj. nadefinujete si např. funkční tlačítko s názvem SMS, které bude vyvolávat export do souboru, definovaný tak, že se odešle SMS zpráva uživateli přiřazenému roli řešitele, který se má zabývat daným úkolem - aktivitou. Uživatel tak bude informován, že mu přibyl úkol, i když nebude aktuálně na pracovišti.
Nastavené akce se vztahují vždy jen přímo k vizuálnímu provedení přímo v dané agendě, pro kterou jsou nastavena, nikoliv pokud je operace se záznamem provedena nevizuálně v rámci jiné agendy (tj. např. automatické vystavení DL spolu s fakturou v rámci agendy fakturace, podrobněji viz kap. Nastavení tisku po uložení). Zde platí jediná výjimka pro Časový plán: Akce v Actions.cfg definované pro agendu Aktivit se vyvolají i po provedení drag-and-drop akcí v časovém plánu.
Musí existovat soubor se jménem Actions.cfg s příslušnými definicemi, viz dále. Má strukturu inicializačního souboru a musí ležet ve stejném adresáři jako soubor nexus.cfg.
Z důvodů omezení maximální velikosti inisouborů je možné pro jednotlivé agendy tvořit samostatné soubory. Tyto soubory musí být pojmenovány "Actions tečka GUID agendy tečka cfg". Např. Actions.OYC0P3TDDY1ORIJO2SKTP2KZKG.cfg. Při načítání definic se nejdříve zjišťuje, zda existuje soubor "Actions tečka Guid agendy tečka cfg". Pokud existuje, načtou se všechny definice z něj. Pokud neexistuje, použije se soubor Actions.cfg.
Pro každou agendu a operaci se definuje zvláštní sekce v souboru Actions.cfg, resp. Actions.GUIDagendy.cfg. Název sekce tvoří GUID agendy, tečka a název operace. Platí i pro ini soubor definovaný zvlášť pro konkrétní agendu (Actions.GUIDagendy.cfg). K dispozici jsou tři typy operací:
- Delete (vyvolává se před smazáním záznamu)
- Update (vyvolává se po opravě záznamu nebo po jeho skrytí)
- Insert (vyvolává se po uložení nového záznamu)
Dále lze definovat sekci pro operaci UserAction, popis viz Možnost uživatelského volání - Uživatelské funkce.
Pro agendu aktivit a operaci Insert vypadá sekce například takto:
[OYC0P3TDDY1ORIJO2SKTP2KZKG.Insert]
Action=PRINT
PrintFileType=PDF
PrintMethod=EMAIL
Definition=RD00000001
Condition=ActQueue_ID='1000000101'
Question=Opravdu chcete poslat EMAIL?
GUID agendy můžete dohledat v popisu Struktur a definic GenDoc.chm.
Action
Pomocí parametru Action se sděluje, co se má provést. Tento parametr musí být vždy uveden (nemá výchozí hodnotu):
- PRINT (bude se vykonávat report)
- EXPORT (bude se vykonávat export)
PrintMethod
Parametr PrintMethod se použije pouze v případě, že je Action=PRINT, a definuje jakým způsobem bude report vykonán:
- PREVIEW (do náhledu – výchozí volba)
- PRINTER (přímo na tiskárnu)
- FILE (do souboru)
Při tisku do souboru je třeba v tiskové sestavě nadefinovat pojmenovaný skript FILENAME, jinak se sestava ukládá pod náhodně generovaným číslem do adresáře c:\Users\<dany_uzivatel>\appData\Local\Temp\
- EMAIL (do emailu)
PrintFileType
V případě, že je nastaven Action=PRINT a parametr PrintMethod na FILE nebo EMAIL, je možné nastavit, v jakém formátu se report uloží:
- XLS - MS Excel ve formátu Excel 5
- XLSG -MS Excel 95, export z grafické předlohy
- XLSX - MS Excel ve formátu Excel 2007
- HTM - HTML formát)
- CSV - textový soubor s položkami oddělenými čárkou
- RTF - RichText formát
- TXT - prostý textový soubor
- PDF - formát pro AcrobatReader bez el. podpisu – výchozí volba
- PDFs - formát pro AcrobatReader s el. podpisem
PrintToFileCommand
V případě, že je nastaven parametr PrintMethod=FILE, je možné pomocí parametru PrintToFileCommand definovat příkaz, který se vykoná po provedení tisku do souboru. Odpovídá položce Příkaz v dialogu Nastavení tisku po uložení.
Definition
V případě, že chcete v definici určit i konkrétní definici tisk. sestavy nebo exportu, je třeba zadat jeho identifikaci do parametru Definition.
Condition
V případě, že je nastaven, bude vyvolání dané akce vázáno na splnění zadané podmínky. Parametr Condition by měl obsahovat platný výraz, který je vyhodnotitelný objektovým evaluátorem a vychází z objektu, který je zpracováván v dané agendě.
Question
Pokud chcete, aby i v případě kladného vyhodnocení podmínky byl uživatel dotázán a potvrdil (export nebo report), použijte parametr Question.
Caption, Hint
Parametry pro operaci UserAction, popis viz Možnost uživatelského volání akcí - Uživatelské funkce.
Pokud chcete automaticky provést více reportů nebo exportů po jedné operaci Insert/Update/Delete, pak je třeba do ini souboru přidat další sekce pro danou operaci a odlišit je nějakým řetězcem (např. pořadovým číslem) zadaným v názvu sekce za tečkou.
Příklad volání více akcí pro agendu aktivit a operaci Update:
[OYC0P3TDDY1ORIJO2SKTP2KZKG.Update.1]
Action=PRINT
PrintMethod=PREVIEW
Definition=RD00000001
Question=Opravdu chcete provést tisk?
[OYC0P3TDDY1ORIJO2SKTP2KZKG.Update.2]
Action=PRINT
PrintMethod=EMAIL
Definition=1200000101
Question=Opravdu chcete poslat e-mail?
Při zjišťování, jaké exporty/reporty se mají vykonat po/před určité operaci, se nejdříve načte sekce "Guid agendy tečka název operace".
Poté všechny sekce, které začínají na "Guid agendy tečka název operace tečka", seřazené podle abecedy. Při vykonání příslušející operace se exporty/reporty vykonávají postupně za sebou.
Volané reporty/exporty se vykonávají v modálním/synchronním režimu (aby bylo možné zajistit jejich postupné volání).
Dalším důvodem modálního synchronního volání je operace Delete. Pokud by při provedení reportu do náhledu byl náhled vyvoláván asynchronně, a program pokračoval dál a provedl vymazání záznamu, pak než by byl obsah zobrazen v náhledu, byl už daný záznam vymazán.
V případě operace Delete je třeba si uvědomit následující: Protože exporty a reporty je nutné vykonávat nad ještě existujícími daty, je třeba, aby se toto vykonalo ještě před smazáním záznamu. Smazání záznamu se ale z různých příčin nemusí povést.
Kromě výše uvedených operací insert, update a delete, je dále možno do Actions.cfg souboru definovat operaci useraction, která identifikuje akce, které lze spustit z uživatelského rozhraní pomocí tlačítka, hlavního menu či Popup menu (pro případ Časového plánu).
Zápis do Action.cfg se provádí obdobným způsobem jako u akcí po Insert/Update/Delete, viz Způsob definice. Použitelné parametry viz Parametry pro actions.cfg. V této souvislosti jsou k dispozici navíc parametry:
Caption
Nadpis akce, bude zobrazován v ovládacím prvku. Není-li vyplněn, zobrazí se identifikátor akce agendy zadaný za tečkou v názvu sekce s UserAction. Není-li zadán ani ten, pak se zobrazí obecný název pro uživatelské funkce:
Pokud v rámci sekce pro uživatelskou akci:
a) je definován parametr Caption=SMS, pak se v agendě zobrazí tlačítko s názvem SMS.
b) není definován Caption a sekce je zadána např.: [OYC0P3TDDY1ORIJO2SKTP2KZKG.UserAction.Mánička], pak se v agendě zobrazí tlačítko:Mánička.
c) není definován Caption a sekce je zadána jen takto: [OYC0P3TDDY1ORIJO2SKTP2KZKG.UserAction], pak se v agendě zobrazí tlačítko:Uživ. funkce.
Hint
Popisek ovládacího prvku.
Příklad definice pro možnost vyvolání odeslání tisku mailem přes vybranou tiskovou sestavou funkčním tlačítkem, které přibude v dané agendě:
[OYC0P3TDDY1ORIJO2SKTP2KZKG.UserAction]
Action=PRINT
PrintMethod=EMAIL
Definition=1200000101
Question=Opravdu chcete poslat e-mailem?
Caption=E-mail
Hint=Odeslání reportu e-mailem
Pokud je taková akce pro danou agendu alespoň jedna, vytvoří se v ní příslušný ovládací prvek (menu nebo funkční tlačítko). Podle počtu uživatelských definic na agendu může být vícepoložkový.
Příklad definice více akcí, kdy se vytvoří multifunkční tlačítko, které přibude v dané agendě:
[OYC0P3TDDY1ORIJO2SKTP2KZKG.UserAction.1]
Action=PRINT
PrintMethod=PREVIEW
Definition=1200000101
Question=Opravdu chcete provést náhled?
Caption=Náhled před e-mailem
Hint=Odeslání reportu e-mailem
[OYC0P3TDDY1ORIJO2SKTP2KZKG.UserAction.2]
Action=PRINT
PrintMethod=EMAIL
Definition=1200000101
Question=Opravdu chcete poslat e-mailem?
Caption=E-mail
Velikost funkčních tlačítek (jejich šířka) v agendě v panelu funkčních tlačítek se automaticky přizpůsobuje podle délky názvů funkčních tlačítek. Proto v parametru Caption nevolte názvy příliš dlouhé!
V případě multifunkčního tlačítka se uplatní pouze první definice hintu.
Uživatelskou akci je možné vyvolat pomocí následujících klávesových zkratek.
Kláves. zkratka | Popis |
---|---|
Alt+Q nebo Shift +Alt +Q |
Standardní klávesová zkratka pro volání uživatelských akcí. Klávesová zkratka není uživatelsky definovatelná. |