1. Rozšíření pomocí skriptů

    Článek: AN0002155Aktualizováno:: 09.11.2018

    Skriptovací možnosti systému ObjectGears jsou široké. Rozšiřují možnosti základního nastavení o další pokročilejší funkce. Pomocí skriptů můžete provádět složitější kontroly před uložením záznamů nebo manipulovat s daty, spouštět importy, exporty, workflow nebo joby.

    Ve všech skriptech lze používat základní funkce (objekt OG) a dle typu použití skriptu další objekty specifické pro určité použití (popsáno dále).

    Jak psát skripty

    Pro skriptování v systému ObjectGears je použit jazyk JavaScript, který je rozšířený o vlastní objekty a datové typy. Skriptování je tak jednoduché a vystačíte se základní znalostí programování. Pro základní seznámení jsme připravili stránku s přehledem jednotlivých programovacích konstrukcí.

    Objekty skriptu vs. datové typy

    Všiměte si, že některé objekty skriptů se jmenují stejně jako datové typy OG. Toto pojmenování je zvoleno z důvodu transparentnosti. Objekty skriptů obsahují funkce pro práci s daným datovým typem, zatímco datový typ obsahuje vlastní data třídy, exportu, importu...

    Např. pro načtení záznamu ze třídy slouží tento zápis:

    var dr = OG.DataRow.GetDataById( 10, 100);

    Příkaz používá metodu GetDataById z objektu skriptu OG.DataRow a metoda vrací datový typ DataRow.

    Speciální objekty

    Existují i další skriptové objekty systému ObjectGears, ty jsou však pro speciální určení, např pro některé aktivity workflow. Jsou popsány na jiném místě této nápovědy. Zde uvádíme jejich seznam:

    Název Popis Použito v
    OGWFActualRun Speciální objekt pro aktuálně spuštěné workflow. Workflow
    JSWorkflowSeqProperty Objekt pro vlastnosti spuštěného workflow. Workflow
    OGForm Objekt pro práci s obsahem stránky. Webpart Skript
    OGActualDataRow Objekt pro aktuální záznam (typ DataRow). Pravidla třídy
    OGActualMessage Objekt pro nastavení chybového hlášení. Pravidla třídy
    OGActualExport Instance probíhajícího exportu. Export
    OGActualExportRun Instance aktuálně spuštěného exportu. Export
    OGActualImport Instance probíhajícího importu. Import
    OGActualImportRun Instance aktuálně spuštěného importu. Import
    OGActualImportDbTable Název pomocné databázové tabulky pro import dat. Import
    OGFilteredDataRowIds Seznam Id datových záznamů zobrazených na stránce Datas.aspx. Tlačítka třídy a dotazů
    OGSelectedDataRowIds Seznam Id datových záznamů vybraných (kliknutím v seznamu záznamů) na stránce Datas.aspx. Tlačítka třídy a dotazů
    OGPerson Instance aktuálně zobrazeného uživatele. Skripty stránek správy - stránka Informace o uživateli
    OGDoFilter() Funkce pro spuštění filtru. Skripty stránek správy - stránka Seznam uživatelů
    OGClearFilter() Funkce pro vymazání filtru. Skripty stránek správy - stránka Seznam uživatelů
    OGWFForCycle Objekt pro nastavení hodnot cyklu typu For. Aktivita Cyklus
    OGControlOperations Seznam tlačítek zobrazovaných na toolbaru nebo v kontextovém menu. Skripty u třídy, dotazu a stránky

     Opakované použití skriptů

    V případech, kdy potřebujeme určitý skript použít vícekrát, využijeme bloky skriptů, jejichž funkce lze následně volat z různých míst ObjectGears (tlačítka, pravidla, workflow...). Podívejte se na příklad.

    Testování skriptů

    Pro otestování skriptů nebo pro spuštění skriptu za účelem změny dat můžete použít Skriptovací okno.

    Konverze hodnot do Integer

    Použitý JavaScriptový interpreter interně používá pro čísla datový typ double. To je třeba zohlednit při použití .NET objektů systému ObjectGears, které mají datový typ int? (nullable int). JavaScriptový interpreter neprovede konverzi z double na nullable int. Proto v těchto případech použijte konverzní funkci ToInt.

    Příklad:

    V objektu DataRowFilter je vlastnost Filter_MaximumRows typu int?. Pokud do ní přiřadíte číselnou hodnotu, pak dojde k chybě. Při použití funkce ToInt přiřazení již proběhne v pořádku.

    var f = OG.DataRow.GetDataRowFilter(1);

    //přiřazení bude provedeno
    f.Filter_MaximumRows = ToInt(14);

    //dojde k chybě
    f.Filter_MaximumRows = 17;

×