Jaké jsou nejčastější dotazy programátorů, kteří začínají vyvíjet svůj projekt nad ABRA FlexiBee API? Pracovníci našeho zákaznického centra téměř každý den odpovídají na některou z následujících otázek.
Otázka č. 1: API mi nevrací všechny záznamy. Jak je získám všechny?
Odpověď:
K získání všech záznamů z dané evidence je nutné doplnit parametr limit=0.
Standardní výstup ABRA FlexiBee bez použití parametru limit obsahuje vždy jen prvních 20 záznamů. Pro kompletní výpis je nutné použít parametr limit=0. Nedoporučujeme používání parametru limit s vysokým číslem (např. limit=9999). Výpis by vám fungoval pouze do okamžiku, než počet záznamů takové číslo překročí.
Výsledek je případně možné stránkovat správným použitím parametrů limit a start.
Pokud chcete zjistit, kolik záznamů odpovídá vašemu dotazu, doplňte parametr add-row-count=true.
Také parametr add-row-count používejte jen v těch dotazech, kde má smysl. Například pokud v ABRA FlexiBee potřebujete po stránkách vypsat adresáře, tento parametr použijte jen v prvním dotazu. Parametr totiž přidává další dotaz do databáze (select count(*) from …). U některých výstupů může zpracování takového dotazu přidávat zbytečnou časovou prodlevu.
Ukázka:
https://demo.flexibee.eu/c/demo/faktura-vydana.xml – výpis prvních 20 faktur https://demo.flexibee.eu/c/demo/faktura-vydana.xml?limit=0 – výpis všech faktur
Otázka č. 2.: API mi nevrací všechna pole. Jak je získám všechna?
Odpověď:
K získání všech polí z dané evidence je nutné doplnit parametr detail=full.
Výchozí úrovní detailu je detail=summary, který obsahuje jen nejdůležitější pole.
Detail=full je řešením, jak vypsat všechna pole. Obvykle však všechna pole nejsou ve výstupu potřeba. Váš program tímto způsobem načte spoustu dat, přičemž skutečně využijete jen některá. Pole, která program bude zpracovávat, jsou už ale známá dopředu. Není tedy důvod používat detail=full.
Správně by otázka měla znít, jak získám všechna pole, která potřebuji mít ve výstupu? Odpovědí je použití parametru detail=custom:…, ve kterém je možné vyjmenovat pole, která má ABRA FlexiBee vrátit.
Při použití detail=custom navíc opět můžete zrychlit odezvu ABRA FlexiBee. Nebudou se totiž z databáze načítat objekty, které neuvedete a tím pádem odpadne mnoho SQL dotazů. Kromě zrychlení odpovědí od ABRA FlexiBee se také sníží paměťová náročnost vašeho programu. Nebude totiž nutné držet v paměti tak velké odpovědi od ABRA FlexiBee.
Ke zjištění, jaká pole daná evidence poskytuje, je nejjednodušší a nejpřehlednější možností využití /properties (např. https://demo.flexibee.eu/c/demo/faktura-vydana/properties).
V tomto výstupu se dozvíte, jakých hodnot mohou jednotlivá pole nabývat. U vazebních objektů zjistíte, do jaké evidence odkazují a v neposlední řadě, zda bude pole uvažováno při importu XML.
Ukázka:
https://demo.flexibee.eu/c/demo/faktura-vydana.xml – detail=summary https://demo.flexibee.eu/c/demo/faktura-vydana.xml?detail=full – detail=full https://demo.flexibee.eu/c/demo/faktura-vydana.xml?detail=custom:id,typDokl,nazFirmy,sumCelkem,zbyvaUhradit – detail=custom, který vrací jen potřebná pole
Otázka č. 3: API mi na faktuře vydané nevypisuje položky. Jak získám položky dokladů?
Odpověď:
Pokud chcete doplnit do výpisu dokladů i položky, je potřeba doplnit parametr relations=polozkyDokladu.
ABRA FlexiBee při výpisu dat z jedné evidence umožňuje do výpisu doplnit i subevidence (vazby 1:N nebo M:N). Je to například právě faktura a její položky. Pro vnoření subevidence se používá parametr relations s uvedením, kterou subevidenci chcete do výstupu doplnit.
Seznam všech subevidencí, které je možné vkládat, získáte doplněním /relations za název evidence (např. https://demo.flexibee.eu/c/demo/faktura-vydana/relations).
V parametru relations se pak používá sloupec uvedený jako identifikátor (např. polozkyDokladu).
Dokumentace zmiňující relations
Ukázka:
https://demo.flexibee.eu/c/demo/faktura-vydana.xml – výpis faktur bez položek https://demo.flexibee.eu/c/demo/faktura-vydana.xml?relations=polozkyDokladu – výpis faktur s položkami https://demo.flexibee.eu/c/demo/faktura-vydana.xml?relations=polozkyDokladu&detail=custom:id,kod,polozkyDokladu(sumCelkem)&order=id – i zde funguje custom detail, takže pro optimalizaci rychlosti vyberte jen ta pole, která potřebujete.