Editor výrazov
Nástroj, pomocou ktorého môžete nadefinovať výrazové položky v účtovných predkontáciách, v paneloch definovateľných údajov alebo výrazové položky v tlačových zostavách a. i. Slúži na jednoduchšiu konštrukciu výrazov s ohľadom na správnosť syntaxe atď. Ďalej nájdete popísané tieto témy:

Editor výrazov môže byť vyvolaný z rôznych miest systému:
- z definice předkontací - po stisku tlačítka
na některé z výrazových položek v řádku předkontace
- z editora zobrazovaných údajov (v rámci definície Panela definovateľných údajov zoznamu, detailu, ...) - po stisku tlačítka
, je-li buňka definována typem Objekt, nebo po stisku tlačítka
na subzáložce Podmínky
- z editoru sloupců (v rámci definice definovatelných sloupců) - po stisku tlačítka
, je-li buňka definována typem Objekt, nebo po stisku tlačítka
na subzáložce Formát
- z editoru definic podmínek def. formulářů (v rámci automatizace výběru def. formulářů) - po stisku tlačítka
v definici podmínky
- z editoru definic editačních seznamů - po stisku tlačítka
v položce Výraz pro identifikaci řádku
-
z definice tiskových sestav - po stisku funkčního tlačítka Edituj v definici výrazů v záložce Výraz nebo v definici podmínky pro tisk v záložce Podmínka pro tisk, z definice inicializačních a finalizačních skriptů, z editoru pojmenovaných skriptů, z editoru výrazů pro prvek Čárový kód z výrazu apod.:
V definícii tlač. zostavy pri definícii výrazu je možné vyvolať Editor výrazov (podobne aj pri definícii Podmienky pre tlač)
- z definice definovatelných exportů - po stisku funkčního tlačítka Edituj v definici výrazů ve vlastnosti Výraz nebo v definici podmínky pro export ve vlastnosti Podmínka pro export, z definice inicializačních a finalizačních skriptů, z editoru pojmenovaných skriptů apod.
- z definice položky výpočtového schématu - po stisku funkčního tlačítka Edituj v editačním režimu nebo funkčního tlačítka Zobrazit mimo editační režim u standardního resp. uživatelského výrazu
- z definice součtu (sčítané položky výpočtového schématu) - po stisku funkčního tlačítka Edituj v editačním režimu nebo funkčního tlačítka Zobrazit mimo editační režim u standardního resp. uživatelského výrazu
- z definice druhů výkonů - po stisku funkčního tlačítka Edituj u výrazu pro sazbu
- z definice plateb - po stisku tlačítka
na některé z výrazových položek v definici plateb u standardního resp. uživatelského výrazu
- z definice podkladu pro žádosti o platební příkazy z mezd, z definice opakovaných srážek resp. z definice srážek po stisku tlačítka
v zadání vybraných položek (např. položky Rozlišovací řetězec)
- z definice vstupních formulářů - po stisku funkčního tlačítka Edituj u prvku Výraz vkládaného do vstupního formuláře nebo u prvku Doplněk
- z definice ceníků pošty - po stisku funkčního tlačítka Edituj u položky Výraz pro cenu nebo Kontrolní výraz
- z definic pohledů v časovém plánu - po stisku funkčního tlačítka Edituj u položky Výraz pro hint
- z definic schvalovacích scénářů - po stisku tlačítka
u položky Podmínka pro požadavek na schválení
- z definic nových hodnot při hromadných opravách v okně s definovatelným výčtem hromadně opravitelných položek po stisku funkčního tlačítka Editovat
- z definice ELDP - po stisku funkčního tlačítka Edituj u uživatelského výrazu
- z definice uzávěrky - po stisku funkčního tlačítka Edituj v editačním režimu nebo funkčního tlačítka Zobrazit mimo editační režim u položky Výraz korekce
- ze záložek Testování u technologických postupů - po stisku tlačítka
na některé z výrazových položek
- z definice sloupců bilance SCM - po stisku tlačítka
u položky Výraz nebo u položek Podmínka pro zobrazení
- z definice pravidel pro zajištění zdrojů SCM - po stisku tlačítka
na některé z výrazových položek v řádku pravidla
- z definice automatických vzkazů - po stisku funkčního tlačítka Edituj u položky Výraz
- z definice pravidel pro zpracování doručených e-mailů - po stisku tlačítka
u položky Podmínka e-mailu
- z definice pravidel pro zpracování doručených e-mailů - po stisku tlačítka
u položky Nová hodnota (viz akce Změnit položky).
- z definice proměnných kampaní - po stisku tlačítka
u položky Výraz
- z definície skupín kategorizačných údajov - po stlačení tlačidla v rámci položky Podmienka platnosti skupiny
- z definice kategorizačních údajů - po stisku tlačítka
u položky Výraz u typu kategorie Výpočet výrazem
- z definice typů kampaní - po stisku funkčního tlačítka Edituj u položek Předmět e-mailu, Popis odeslané pošty, Předmět aktivity a Obsah aktivity v subzáložce Hlavička a dále po stisku tlačítka
(môže sa líšiť podľa verzie a nastaveného vzhľadu) u položky Podmínka v subzáložce Přílohy
- z definice proměnných kampaní - po stisku funkčního tlačítka Edituj u položky Výraz proměnné
- z Adresára firiem funkcí Výraz pre predvyplnenie názvu novej firmy podľa údajov osoby
- z definice hodnotících kritérií - po stisku tlačítka
u položek Výraz pro výpočet bodového hodnocení a Podmínka pro převzetí výsledku předchozího hodnocení v subzáložce Definice dat pro výpočtové kritérium
- z definice textů notifikace stavů - po stisku funkčního tlačítka Editor výrazů u položky Tělo zprávy
- z definice parametrů dokumentů kategorie ISDOC vydaný - po stisku funkčního tlačítka Edituj u položky Předmět e-mailu nebo Tělo e-mailu
- z definice pravidel přiřazení dat IoT - po stisku tlačítka
u položky Podmínka, příp. též Třída objektu a Identifikace objektu, mají-li být tyto zadávány výrazem
- z definice indexu fulltextového hledání - po stisku tlačítka
u položky Výraz, pokud je v položce Typ zvolena hodnota QR výraz
- z definice Našeptávače - po stisku tlačítka po stisku funkčního tlačítka Edituj u položek Základní řádek, resp. Druhý řádek.
-
z definice parametrů automatických upomínek - po stisku funkčního tlačítka Edituj u položky Výraz pro vyloučení z upomínek
Tlačítko pro vyvolání editoru může vypadat i odlišně. Vzhľad sa môže mierne líšiť v závislosti na verzii systému, na podpore viacerých vzhľadov na aktuálne nastavenom vzhľade.
Ako bolo povedané v kap. Predkontácia - záložka Detail, každá predkontácia môže mať buď riadky výrazové alebo nevýrazové. Ak ide o výrazové riadky, položky na predkontovanie stredísk, účtov, textu, obchodných prípadov, projektov a zákaziek sú výrazy, ktoré sa vyhodnotia a podľa výsledku výrazu sa predkontujú. Ďalej každý riadok predkontácie (výrazový aj nevýrazový) môže obsahovať podmienku riadka, čo je tiež výraz.
V definícii panelov definovateľných údajov môžete odkazovať na dostupné Business objekty (BO) a konštruovať rôzne výrazy, v definícii tlačových zostáv resp. definovateľných exportov v editore tlačových zostáv resp. editore definovateľných exportov potom podobne existuje možnosť vkladať výrazy do zostavy, resp. vkladať rôzne podmienky pre tlač resp. export a pod.
V mzdových agendách potom môžete odkazovať na dostupné Business objekty (BO) mzdových agend a konštruovať výrazy definujúce, ako sa bude počítať mzdová položka, sadzba výkonu a pod.

Vyvolaný editor výrazů má obdobný vzhled bez ohledu na to, odkud byl vyvolán, i když např. v definici předkontací nabízí jiné funkce než v definici tiskových sestav.
Příklad editoru výrazu. Funkce jsou zafiltrovány dle řetězce "round".
Okno editora sa skladá z nasledujúcich častí:

Obsahuje zoznam funkcií, ktoré môžete použiť vo vlastnom výraze definovanom pre danú položku riadka predkontácie, v danom mieste tlačovej zostavy a pod. Funkcie sú usporiadané do skupín podľa svojho druhu (napr. funkcie logické, matematické, štatistické a pod.) V hornej časti zoznamu funkcií je k dispozícii položka typu skrytý zoznam, pomocou nej si môžete zvoliť, či chcete zobrazovať zoznam všetkých funkcií alebo si ho filtrovať len podľa určitého druhu (napr. len matematické).
Dále je k dispozici filtrovací položka, kterou je možné seznam funkcí omezit dle části řetězce (velikost písmen se nebere v potaz).
Editor je všeobecný a je určený pre rôzne časti programu, preto sa tu ponúkajú všetky funkcie, ktoré sú užívateľovi všeobecne k dispozícii. Takže zďaleka nie všetky je zmysluplné používať v definícii výrazu pre položku riadka predkontácie a naopak iné nevyužijete v tlačových zostavách a pod. Každá funkce je stručně popsána v samostatném panelu Popis funkce.
Funkcie s názvom začínajúcim reťazcom "Nx" sú funkcie dodávané výrobcom, ostatné sú k dispozícii ako dodávaná súčasť vývojového prostredia.
V zozname sú jednotlivé funkcie uvedené v príslušnej syntaxi, medzi znakmi zväčšovadla > a zmenšovadla < sú uvedené zástupné hodnoty, tzv. parametre. Objasníme na príkladoch:
Príklad 1: Funkcia If(<Exp><X><Y>). V popise je uvedené, že výsledkom tejto funkcie je buď X, alebo Y v závislosti od logického výrazu Exp. Tu napr. chceme, aby v predkontácii faktúry vydanej bolo nastavené, že ak je riadok skladový (teda položka RowType udávajúca typ riadka musí mať hodnotu 3), tak bude vypisovaný text "Predaj zo skladu", v opačnom prípade "Iný predaj". Do výrazu pre text potom môžeme použiť túto funkciu If(RowType=3, 'Predaj zo skladu', 'Iný predaj)'
Príklad 2: Funkcia NxGetUserName(<UserID>). V popise je uvedené, že výsledkom tejto funkcie je celé meno užívateľa systému ABRA Gen, ktorého interný identifikátor bude uvedený ako parameter danej funkcie. Na vystavených dokladoch sa nepamätá meno užívateľa, ale len odkaz na jeho interný identifikátor. Na dokladoch ale chceme vytlačiť užívateľovo meno. Potom do výrazu môžeme zadať NxGetUserName(MAIN.CreatedBy_ID), kde položka v zátvorke práve obsahuje interný identifikátor toho, kto doklad vystavil.
Existuje aj iné riešenie tejto požiadavky: vložiť na požadované miesto položku z databázy MAIN.CreatedBy_ID. DisplayName, keďže v položke DisplayName objektu užívateľa, ktorý doklad vytvoril, je uvedené jeho meno.

V tejto časti je uvedený stručný popis funkcie, na ktorej stojí kurzor v zozname funkcií (viď vyššie). V popise je uvedená:
- Správna syntax funkcie, vrátane popisu typu funkcie a typu parametrov
- Slovný popis
- A vo väčšine prípadov jednoduchý príklad (ďalšie príklady potom nájdete v tejto kapitole helpu alebo v kap. Príklady použitia niektorých vybraných funkcií)
Syntax je uvedená v tvare, v akom sa deklaruje funkcia v prostredí Pascal. Takže:
meno funkcie(<parameter1>:<typ parametra1>,<parameter2>:<typ parametra2,...):<typ funkcie>
<Typ funkcie> udáva, akého typu je výsledok, ktorý funkcia vracia. <Typ parametra udáva, akého typu môže byť parameter. <Parametrom funkcie> môže byť výraz, premenná alebo konštanta požadovaného typu. Pričom výraz môže samozrejme obsahovať vyvolanie iných funkcií.
Príklady typov, s ktorými sa môžete stretnúť v popise syntaxe funkcie v ABRA Gen:
- Integer - celočíselný typ, tzn. celé číslo
- Single - typ používaný pre reálne číslo
- Double - typ používaný pre reálne číslo
- TDateTime - typ používaný pre dátum
- Boolean - typ logický, tzn. hodnoty True alebo False
- Char - typ znakový, tzn. pre ľubovoľný znak
- String - typ reťazec, tzn. pre ľubovoľný reťazec
- Variant - typ variantný používaný v prípade, kedy typom môže byť ľubovoľný typ z vyššie uvedených
- TNxOID - typ zavedený v ABRA Gen pre interné identifikátory
- a pod.
Objasníme na príkladoch:
Príklad 1: Funkcia If(<Exp><X><Y>) má v popise uvedenú syntax If(Exp:boolean,X:variant,Y:variant):variant. Tzn., že parametrom Exp môže byť výraz, premenná alebo konštanta typu Boolean; parametrom X a Y potom môže byť výraz, premenná alebo konštanta ľubovoľného typu. Výsledok funkcie je potom rovnakého typu ako je typ vráteného parametra.
Príklad 2: Funkcia NxAccountID(<Value>) má v popise uvedenú syntax NxAccountID(Value:string):TNxOID. Tzn., že parameter môže byť iba typu reťazec, výsledkom funkcie je potom interný identifikátor.

V tejto časti sa ponúka strom zložiek vytváraný podľa miesta programu, z ktorého bol editor vyvolaný. Niekedy ide o vetvu dostupných Business objektov, inokedy o datasety a pod., ktoré je možné v danom okamihu v príslušnom výraze použiť, vrátane možnosti zvoliť si triedenie podľa abecedy a to buď podľa popisu položky alebo podľa jej anglického názvu. Popis dátového modelu je uvedený v samostatnej kapitole.
Pravým tlačítkem myši nad položkou objektu lze zobrazit okno detailu s podrobnými informacemi o položce (např. její kód, resp. fieldcode, druh, datový typ, velikost atd.).

Pod částí datových položek objektu je funkční tlačítko Přidej pro přidávání fragmentů kódu do editovaného výrazu bez nutnosti psaní z klávesnice. Jedná se o funkční tlačítko s volbou s následujícími možnostmi:
- Pridaj položku
- stojí-li kurzor na nějaké funkci v části funkce - do editovaného výrazu ve spodní části okna vloží na pozici kurzoru funkci, na které aktuálně stojí kurzor. Potom stačí doplniť jej parametre (popis a požadované parametre k aktuálnej funkcii sa vždy zobrazujú v časti Popis funkcie).
- ak kurzor stojí na nejakej položke v časti dátovej položky objektu - do výrazu pridá odkaz na vybranú položku
Položku objektu nebo funkci lze do editovaného výrazu přidat rovněž klávesou Enter nebo poklepáním myší.
-
Přidej barvu RGB - vyvolá standardní dialog operačního systému Barva, ve kterém si uživatel zvolí požadovanou barvu (zadáním jednotlivých složek nebo výběrem z palety) a po zavření dialogu tlačítkem OK se do editovaného výrazu na pozici kurzoru vloží funkce RGBColor, která vrací celočíselnou hodnotu barvy vytvořené z hodnot argumentů/složek červené (R), zelené (G) a modré (B).
Funkci je možné využít například při definování vlastní barvy podkladu v editoru sloupců.
- Přidej barvu HLS - obdoba předchozí funkce, do editovaného výrazu vloží funkci HLSColor vracející celočíselnou hodnotu barvy definovanou složkami odstín (H), jas (L) a sytost (S).
- Přidej text jako výraz - funkce převede jakýkoliv text tak, aby byl validní ve výrazu. Nasledovne:
- Uvozovky nahradí funkcí NxQuote
- Nové řádky nahradí funkcí NxCRLF
- Další neplatné znaky nahradí funkcí NxChr (např. tab NxChr(9))
- Celý text dá do uvozovek
- Celý text rozdělí po první mezeře na více řádek, pokud je delší než 120 znaků
- Respektuje se zalomení vkládaného textu

Sem zadáte príslušný výraz. Zapísať ho môžete ručne, alebo ho môžete zostrojiť výberom funkcií a dátových položiek objektov ponúkaných v časti Funkcie, resp. Dátové položky objektu a to nasledovne:
- stiskem funkčního tlačítka Přidej - přidá funkci resp. datovou položku, na které aktuálně stojí kurzor
-
myší poklepáním na vybrané funkci resp. datové položce
Poklepání (dvojité kliknutí) na položce s vnořenými položkami způsobí rozbalení seznamu vnořených položek a zároveň vložení názvu položky do editovaného výrazu.
Editor výrazov podporuje rýchlu nápovedu a rýchle vyhľadávanie iSense (variant rýchlej nápovedy IntelliSense z Delphi). Ide o kontextovú ponuku kľúčových výrazov, z ktorých je možné jednoducho vybrať (ponúkanie tried, metód, funkcií a parametrov a pod.).
Príklad vyvolanej nápovedy (intellisense)
Ovládanie: Ovládanie je podobné ako v Delphi. Tu sa nápoveda (iSense) vyvoláva ručne pomocou klávesovej skratky Ctrl+medzerník (Ctrl+Space). K dispozícii je i možnosť rýchleho interaktívneho hľadania pomocou kl. skratky Ctrl+E:
Panel zobrazený po vyvolaní rýchleho hľadania. Hľadaný text píšete ale priamo v editácii zdroj. kódu, nie do položky Vyhľadať. Tam sa automaticky zobrazuje vyhľadaný reťazec.
V editačných prvkoch ako je tento (tzv. SynEdit) platí, že ak je použitý na modálnych dialógoch s tlačidlom Storno, tak dialógy nereagujú na kláves Esc (nezavrú sa), pokiaľ fókus stojí v SynEditu. Editor tu nie je možné zavrieť pomocou Esc, pokiaľ je fókus v poli na zadanie výrazu. Je to vlastnosť spôsobená prítomnosťou inkrementálneho hľadania (CtrE). Nie je však na závadu, editor je možné zatvoriť iným spôsobom ako klávesom Esc alebo je potrebné premiestniť fókus.
Správnosť syntaxe zadaného výrazu je na užívateľovi, editor výrazov ju sám o sebe nekontroluje.
Pokiaľ vo výrazoch chcete použiť desatinné číslo, na oddelenie desatinných miest je možné použiť JEDINE desatinnú bodku. Desatinná čiarka je totiž chápaná ako oddeľovač parametrov funkcií.