Č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 sekci kapitol FAQ naleznete buď odpovědi na často kladené otázky, nebo nejrůznější tipy a triky, jak řešit v systému ABRA Gen nejrůznější problémy. Vzhledem k tomu, že problematika může být obsáhlejší, jsou u jednotlivých odpovědí často odkazy do dalších oddílů on-line dokumentace.
Témata otázek:
FAQ
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. Lze to nějak řešit? |
Odpověď: |
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 definic 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? |
Odpověď: |
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 přijaté: Položka Zakázka se na dokladu Objednávky přijaté 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 Střediska 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í kníž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? |
Odpověď: |
Agenda Definice definovatelných importů 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? |
Odpověď: |
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í instalace 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? |
Odpověď: |
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: | Potřebuji si nadefinovat vlastní uživatelsky definovatelnou číselníkovou položku, ale ve vyvolaném číselníku nabízet jen záznamy splňující určité podmínky. Jak na to? |
Odpověď: |
Omezení nabídnutých záznamů číselníku vyvolaného jako výběrového lze zajistit použitím parametrů. Popis nejobvyklejších parametrů viz Parametry číselníků volaných z číselníkových položek. 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). Jiná možnost je využití skriptování. Tj. vložit číselníkovou položku do vstupního formuláře coby číselník objektový a nabízené záznamy dynamicky měnit podle nadefinovaného skriptu. (Např. nabízet z číselníku jen záznamy splňující určité podmínky podle hodnot editovaného záznamu agendy.) Viz též příklady skriptování. |
Otázka: | Chtěl bych si nadefinovat vlastní definovatelnou položku s historií (s evidencí hodnot v historii), ale tato možnost se mi nenabízí, přestože u jiných položek je. Jak to? Potřeboval bych totiž do položky zadávat nejen hodnoty měnící se v čase, ale i příslušnou časovou platnost (eviduji reklamní plochy, přičemž se platí jen tehdy, je-li plocha skutečně obsazena. Kdybych mohl vytvořit UDP položku s názvem např. "U_Used", typu boolean a s historií, tak bych na základě toho mohl vyhodnocovat, jak byla reklamní plocha za nějaké časové období využita a spočítat, kolik bych měl za pronájem zaplatit. |
Odpověď: |
Evidence historických hodnot k položkám je velmi náročná na další práci s nimi, a nabízí se tedy jen u vybraných Business objektů (typicky objektů mezd), kde je tato vlastnost nezbytná. U jiných objektů k dispozici není. Viz též položka Historie. Nicméně uvedený příklad lze řešit bez potíží jiným způsobem, např. takto: Úloha vede na jakousi subkolekci řádků. Tudíž založit uživatelskou tabulku (vlastní úprava databázových objektů) a použít skriptování pro její plnění a pro její zobrazení... (tj. skriptem do ní ukládat historické hodnoty při změně položky, v níž se eviduje aktuální stav obsazenosti plochy). |
Otázka: | Existuje nějaké vzorové řešení, jak upravit strukturu Business objektu? |
Odpověď: |
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í? |
Odpověď: |
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ů? |
Odpověď: |
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 skriptů 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? |
Odpověď: |
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 Kolize při ukládání do databáze (transakce, zamykání, 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? |
Odpověď: |
Pokud jsou v systému ABRA Gen jakýmkoli způsobem (včetně Skriptování 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í odeslání EET pomocí skriptování? |
Odpověď: |
Odeslání EET lze řešit i pomocí skriptování. Vzorové řešení naleznete mezi dodávanými příklady v adresáři instalace ABRA Gen v podadresáři Examples. Zde jsou k dispozici mj. dvě instalační sady, které obsahují balíček skriptů s ukázkou související s EET:
|
Otázka: | Existuje nějaké řešení práce s kasou a účtenkami maloobchodního prodeje pomocí skriptování? |
Odpověď: |
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? |
Odpověď: |
Ano, ve skriptování je implementována třída TNxComPort nabízející potřebnou funkcionalitu. Použití je patrné z příkladu. Příklad...
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í? |
Odpověď: |
Ano. 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? |
Odpověď: |
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. |