Často kladené otázky - nástroje přizpůsobení, skriptování a tipy k jejich využití pro řešení různých úloh
V sekcii kapitol FAQ nájdete buď odpovede na často kladené otázky, alebo najrôznejšie tipy a triky, ako riešiť v systéme ABRA Gen najrôznejšie problémy. Vzhľadom k tomu, že problematika môže byť obsiahlejšia, sú pri jednotlivých odpovediach často odkazy do ďalších oddielov on-line dokumentácie.
Témy otázok:
FAQ

Otázka: | Provádím import a v logu vidím chybu Chyba XML parseru: not well-formed (invalid token) a import se neprovede. Co chybu způsobuje a jak ji vyřešit? |
Odpoveď: |
Důvodem, proč dochází k této chybě může být název importovaného souboru. Ověřte prosím, zda název importovaného souboru neobsahuje nepovolené znaky, např. &, €, @, # apod. Pokud ano, soubor přejmenujte a vynechte speciální znaky. V případě, že soubor žádné speciální znaky neobsahuje může mít problém jinou individuální příčinu, kterou bude potřeba prověřit. Obrátit se na prosím v tomto případě na Hotline. |

Otázka: | Provádím import skladových karet. V importním souboru mám u jednotky nastavenu jednotku BAL, přesto se vždy kromě této jednotky naimportuje i jednotka KS. Je to možné nejako riešiť? |
Odpoveď: |
Důvodem, proč se kromě importu jednotky z importního souboru vytvoří také jednotka KS, je to, že na Business objektu skladové karty je nastavena vlastnost, aby se při založení nové skladové karty vždy založila také jednotka Kusy, KS. Tuto vlastnost nelze nijak vypnout. Je však možné situaci ošetřit tak, že budete spouštět importy dva. První import bude vytvářet nové skladové karty bez jednotek. Druhý import bude opravovat jednotky na skladové kartě za jednotky z importního souboru. Oba importy následně můžete přidat do agendy Sady importných a exportných definícií a následně je spouštět jedinou akcí, a to buď tlačítkem Zpracovat, nebo naplánovanou úlohou. |

Otázka: | Mám připravenou definici na import objednávek přijatých, ale neimportuje se mi položka Zakázka, přestože ji mám vyplněnou. Kde je chyba? |
Odpoveď: |
V importu záleží na pořadí Business objektů (BO). Pořadí položek v definici musí odpovídat tomu, jak jej vidíte ve vizuální podobě v ABRA Gen. Častým důvodem, proč se nějaká položka nenaimportuje, je, že se daná položka v importní definici nachází na špatném místě. Položka Zakázka na dokladu Objednávky prijaté: Položka Zakázka se na dokladu Objednávky prijaté nachází až na druhém řádku za střediskem. Na řádku dokladů jsou na prvních místech položky jako Typ řádku, Sklad, Skladová karta atd. Až na druhém řádku je položka Strediská a za nim teprve Zakázka. Proto to i v importní definici musí být stejně. Jak je vidět na obrázku výše, pole Zakázka se nachází až za Střediskem. Pokud bychom jej v definici umístili na vyšší pozici nebo bychom například Typ řádku dali až na konec, hodnota by se v poli Zakázka importem nevyplnila. Dalším velmi častým důvodem je to, že položka je umístěna na správné pozici, ale není nastavena jako Aktivní, proto ji import ignoruje. Řešením je položku aktivovat pro import. Pokud se má položka importovat, je potřeba, aby byl prvek Aktivní nastaven na ANO. V opačném případě se položka ignoruje. Může existovat celá řada dalších důvodů, proč import položky neprochází, například chybně napsaný SQL dotaz, který nic nedohledá a podobně. Avšak takové případy je již nutné řešit individuálně. Vždy doporučujeme podívat se do agendy Servisná knižka, kde pod zkratkou dokladů SEZ vznikne o importu záznam s logem. V logu lze příčinu neúspěchu dohledat. V servisní knížce v Typu záznamů SEZ najdete na záložce Obsah kompletní informace o průběhu importu. |

Otázka: | Provádím import dokladu Ostatní výdaje a v řádku bych potřeboval pole Text vyplnit libovolnou textovou hodnotou + aktuálním datumem - 7 dní + názvem zakázky. Jak to provést? |
Odpoveď: |
Agenda Definície definovateľných importov nabízí mnoho vlastností pro různé potřeby. Pole Výraz umožní nadefinovat si vlastní výraz tak, aby kromě dat, která se nacházejí v importním souboru, doplnil importované pole o další potřebné znaky, datum atd. Postup si vysvětlíme na příkladu, kde budeme do pole Text na dokladu OSV importovat vlastní text, aktuální datum ponížené o 30 dnů a název zakázky. V položce Text otevřeme šipkou pole Výraz pro editaci. U položky Text klikneme na šipku u pole výraz, aby se nám okno otevřelo pro editaci. Do otevřeného pole Výraz zapíšeme následující výraz:
První je vlastní text uvedený v apostrofech. Následuje funkce pro formátování datumu, kde si určíme formát, v jakém potřebujeme datum vracet. Dále je převod datumu na číslo a funkce NxNow vrátí aktuální datum v číselné podobě, které ponížíme o 30 dní. V následujícím SQL dotazu zjišťujeme název zakázky podle jejího kódu, který je v importních datech obsažen. Díky tomuto výrazu bude importovaný text vypadat například tak jako na obrázku níže: |

Otázka: | Jak nainstalovat instalační sadu? |
Odpoveď: |
Instalační sadu můžete potřebovat nainstalovat v mnoha případech. Např. se jedná o dodávaný katalogový doplněk k systému ABRA Gen, o součást jiného dodávaného řešení (např. nějaké zakázkové úpravy od vašeho konzultanta), může se jednat i o některý z dodávaných příkladů pro řešení nějaké úlohy formou skriptování. Prostřednictvím instalačních sad lze v mnoha případech "předávat" i různá nastavení a definice mezi instalacemi (např. mezi zkušební instalací a instalací s ostrými daty) apod. Vlastná inštalácia je jednoduchá. Postup:
Viz též kap. Instalační sady a kap. Průvodce importem instalační sady. |

Otázka: | Jak v ABRA Gen pracovat s obchodními zástupci a partnery? |
Odpoveď: |
S partnerskou sítí obchodních zástupců roste potenciál obchodní firmy. Efektivita takové sítě je závislá na jasných kompetencích a dobré organizaci. ABRA Gen pro Vás může být efektivním nástrojem pro správu partnerské sítě. Zde si můžeme nastínit modelové řešení (samozřejmě není jediné, pouze jedno z možných a slouží k demonstraci možností využití systému): Síť obchodních zástupců můžete zadat např. do číselníku obchodních případů a využít tak stávajících obchodních reportů prodeje přes Obchodní případy. Vazbu mezi firmou a konkrétním obchodníkem vytvoříme novou definovatelnou položkou. Tento postup popíšeme podrobnějí:
|

Otázka: | Potrebujem si nadefinovať vlastnú užívateľsky definovateľnú číselníkovú položku, ale vo vyvolanom číselníku ponúkať len záznamy spĺňajúce určité podmienky. Ako na to? |
Odpoveď: |
Obmedzenie ponúknutých záznamov číselníka vyvolaného ako výberového je možné zabezpečiť použitím parametrov. Popis najobvyklejších parametrov viď Parametre číselníkov vyvolaných z číselníkových položiek. Pozor, jak je uvedeno v popisu zmíněné položky Parametry, jaké parametry se nakonec uplatní při volání číselníku ze vstupních formulářů, závisí na tom, jak jsou zadány ve vstupním formuláři (nikoli jen v definici číselníkové položky). Inou možnosťou je využiť skriptovanie. Tzn. vložiť číselníkovú položku do vstupného formulára ako číselník objektový a ponúkané záznamy dynamicky meniť podľa nadefinovaného skriptu. (Napr. ponúkať z číselníka len záznamy spĺňajúce určité podmienky podľa hodnôt editovaného záznamu agendy.) Viď tiež príklady skriptovania. |

Otázka: | Chcel by som si nadefinovať vlastnú definovateľnú položku s históriou (s evidenciou hodnôt v histórii), ale táto možnosť sa mi neponúka, hoci pri iných položkách je. Ako to? Potreboval by som totiž do položky zadávať nielen hodnoty meniace sa v čase, ale i príslušnú časovú platnosť (evidujem reklamné plochy, pričom sa platí len vtedy, keď je plocha skutočne obsadená. Pokiaľ by som mohol vytvoriť UDP položku s názvom napr. "U_Used", typu boolean a s históriou, tak by som na základe toho mohol vyhodnocovať, ako bola reklamná plocha za nejaké časové obdobie využitá a spočítať, koľko by som mal za prenájom zaplatiť. |
Odpoveď: |
Evidencia historických hodnôt k položkám je veľmi náročná na ďalšiu prácu s nimi a z toho dôvodu sa ponúka len pri vybraných Business objektoch (typicky objektoch miezd), kde je táto vlastnosť nevyhnutná. Pri iných objektoch k dispozícii nie je. Viď tiež položka História. Uvedený príklad je však bez problémov možné riešiť iným spôsobom, napr. takto: Úloha vedie na akúsi subkolekciu riadkov. Takže založiť užívateľskú tabuľku (vlastná úprava databázových objektov) a použiť skriptovanie na jej plnenie a na jej zobrazenie... (tzn. skriptom do nej ukladať historické hodnoty pri zmene položky, v ktorej sa eviduje aktuálny stav obsadenosti plochy). |

Otázka: | Existuje nějaké vzorové řešení, jak upravit strukturu Business objektu? |
Odpoveď: |
Vzorové řešení naleznete mezi dodávanými příklady v adresáři instalace ABRA Gen v podadresáři Examples. Zde je k dispozici mj. instalační sada, která obsahuje balíček skriptů s ukázkou úpravy struktury BO:
|

Otázka: | Jak předvyplnit importního manažera pomocí skriptování? |
Odpoveď: |
Vzorové řešení naleznete mezi dodávanými příklady v adresáři instalace ABRA Gen v podadresáři Examples. Zde je k dispozici mj. instalační sada, která obsahuje balíček skriptů s ukázkou práce s importním manažerem:
|

Otázka: | Jak připravit MemoryDataset pro doplňování definovatelných sloupců? |
Odpoveď: |
Vzorové řešení naleznete mezi dodávanými příklady v adresáři instalace ABRA Gen v podadresáři Examples. Zde je k dispozici mj. instalační sada, která obsahuje balíček skriptů s ukázkou přípravy MemoryDatasetu a DBGridu pro doplňování definovatelných sloupců.
Vysvětlující komentář je po importu sady k dispozici v agendě Balíčky skriptov na záložce Poznámka u balíčku eu.abra.example.TMemoryDataset. |

Otázka: | Je možné prostřednictvím skriptování zjistit, zda záznam není aktuálně editován nějakým uživatelem, aby pokus o změnu nezhavaroval? |
Odpoveď: |
Je to možné, na třídě TNxCustomBusinessObject jsou pro tento účel k dispozici metody (funkce) IsEditLock a IsEditLockGUID. Metody IsEditLock a IsEditUnlock v Class Exploreru. Pomocí související metody EditLock je možné editační zámek prostřednictvím skriptování vytvořit, případně pomocí metody EditUnlock odstranit. Podrobnější informace k zamykání záznamů naleznete v kapitole Kolízie pri ukladaní do databázy (transakcie, zamykanie, object version). |

Otázka: |
Potřebuji prostřednictvím skriptování do systému ABRA Gen hromadně naimportovat ze souboru větší množství dokladů. Každý řádek dokladu obsahuje množství a celkovou cenu.
Každopádně v obou případech obdržím hlášení "Nesouhlasí celková cena vůči jednotkové ceně a množství". Jak tuto situaci řešit, tj. jak správně zadat celkovou a jednotkovou cenu? |
Odpoveď: |
Pokud jsou v systému ABRA Gen jakýmkoli způsobem (včetně Skriptovanie nebo Web API) měněny ceny na řádcích dokladů, při ukládání probíhá validace vzájemného vztahu jednotkové a celkové ceny. Pokud jednotková cena není nulová a zároveň není nulová ani celková cena, musí platit rovnost Pokud celková cena a množství nejsou navzájem beze zbytku dělitelné, může při pokusech o nastavování jednotkové ceny nastat uvedený problém. Spolehlivým způsobem je explicitně nastavovat jednotkovou cenu na 0. Na stejný problém je možné narazit při vytváření nebo aktualizaci dokladu prostřednictvím Web API. Viz příklad Vytvoření skladové příjemky v kapitole Další příklady použití Web API v ABRA Gen. |

Otázka: | Existuje nějaké řešení práce s kasou a účtenkami maloobchodního prodeje pomocí skriptování? |
Odpoveď: |
Vzorové řešení naleznete mezi dodávanými příklady v adresáři instalace ABRA Gen v podadresáři Examples. Zde je k dispozici mj. instalační sada, která obsahuje balíček skriptů s ukázkou práce s kasou a účtenkami maloobchodního prodeje:
Od verze 19.4.1 včetně je ve skriptování k dispozici funkce NxPOSCloseDocumentByManager, která umožňuje ze skriptování uzavřít účtenku stejným způsobem, jako kdyby byla uzavřena z aplikace, se všemi souvisejícími procesy (zaokrouhlování, vracení atd.). |

Otázka: | Je možné pomocí skriptování komunikovat se zařízením připojeným přes sériový port? |
Odpoveď: |
Ano, ve skriptování je implementována třída TNxComPort nabízející potřebnou funkcionalitu. Použití je patrné z příkladu. ![]() Následující ilustrační příklad přidá do zvolené agendy (Druh skriptu: Agenda) funkční tlačítko Získat hmotnost pro načtení hmotnosti z váhy Tonava připojené na portu COM3 a následné zobrazení načtené hodnoty v informačním okně.
|

Otázka: | Existuje nějaké řešení práce s ochranou dat i v rámci skriptování? |
Odpoveď: |
Áno. Viz otázka Je možné využívat funkcionalitu ochrany dat také v rámci zakázkových úprav (skriptování, OLE aj.) v sekci Ochrana dat. |

Otázka: | Jak do ABRA Gen zadat azbuku a jiné podobné znaky? |
Odpoveď: |
Od verze 22.1.x je možné zadávat Unicode znaky téměř do všech položek v ABRA Gen. To znamená, že není třeba jako v minulosti vytvářet speciální uživatelské položky, aby bylo možné tyto speciální znaky zadávat. Znaky se díky kódování Unicode ukládají přímo do databáze. V případě, že ještě nemáte Unicode verzi systému ABRA Gen, doporučujeme nejprve podívat se na stránku věnovanou přechodu na Unicode verzi. |