Dále jsou uvedeny příklady pro základní dotazování - query string (parametry URL).
 Volba vybíraných dat (klauzule select)
Volba vybíraných dat (klauzule select)
                                                        Klauzule select slouží k výběru polí BO, která budou vrácena ve výsledku dotazu.
 PŘÍKLAD 1 - výběr faktur s vybranými fieldy a s přejmenováním
PŘÍKLAD 1 - výběr faktur s vybranými fieldy a s přejmenováním
                                                                Výběr kolekce faktur, každý objekt faktury bude obsahovat field ID a field DisplayName, který bude přejmenován na DocNumber.
Tímto způsobem je možné do výsledku zahrnout i uživatelské nebo nepersistentní fieldy Business objektu. Nicméně nepersistentní fieldy BO doporučujeme používat jen v krajních případech, při jejich výběru dochází k degradaci výkonu.
GET http://localhost/data/issuedinvoices?select=ID,DisplayName+as+DocNumberVšimněte si, že místo mezer je napsáno +. Alternativně by bylo možné mezeru zakódovat jako %20. (Jedná se URL kódování, viz Základní dotazování - query string (parametry URL) Jednotlivé fieldy jsou odděleny čárkou.
						
 PŘÍKLAD 2 - výběr faktur se všemi persist. a uživ. položkami
PŘÍKLAD 2 - výběr faktur se všemi persist. a uživ. položkami
                                                                Výběr kolekce faktur, každý objekt faktury bude obsahovat všechny persistentní fieldy a uživatelské položky Business objektu.
GET http://localhost/data/issuedinvoices?select=* PŘÍKLAD 3 - výběr faktur s vybranými fieldy a přejmenováním
PŘÍKLAD 3 - výběr faktur s vybranými fieldy a přejmenováním
                                                                Výběr kolekce faktur, každý objekt faktury bude obsahovat částku (Amount) a název firmy, na kterou je faktura vystavena (Firm_ID.Name). První varianta vrátí název firmy v JSON vlastnosti s názvem "Firm_ID.Name", stejným názvem, jaký byl použit pro jeho výběr. Ve druhé variantě je vidět, jak lze field přejmenovat pomocí konstrukce as (výsledná JSON vlastnost se bude jmenovat "FirmName").
GET http://localhost/data/issuedinvoices?select=Amount,Firm_ID.NameGET http://localhost/data/issuedinvoices?select=Amount,Firm_ID.Name+as+FirmName PŘÍKLAD 4 - field DisplayName složen z polí načtených BO
PŘÍKLAD 4 - field DisplayName složen z polí načtených BO
                                                                Výběr kolekce faktur, každý objekt faktury bude obsahovat fieldy ID a DisplayName, který je tentokrát složen pomocí polí načtených z provázaných objektů. Jedná se o rychlejší variantu než je uvedena v prvním příkladu, ve kterém je použita nepersistentní položka (DisplayName); jak již bylo zmíněno výše, nepersistentní položky znamenají degradaci výkonu (při jejich použití dochází k načtení BO). Všimněte si operátoru || sloužícího ke spojování řetězců.
GET http://localhost/data/issuedinvoices?select=ID,DocQueue_ID.Code||'-'||OrdNumber||'/'||Period_ID.Code+as+DocNumber Omezení vybíraných dat (klauzule where)
Omezení vybíraných dat (klauzule where)
                                                        Klauzule where slouží k omezení vybíraných dat. Jeho hodnotou je výraz, který vrací booleanovskou hodnotu. Ve výrazech je možné využívat následující operátory pro porovnávání:
Výrazy je možné kombinovat pomocí logických operátorů (log. operátory viz tabulka níže). Pořadí provádění operací lze určovat pomocí závorek.
 PŘÍKLAD 1 - výběr faktur s podmínkou
PŘÍKLAD 1 - výběr faktur s podmínkou
                                                                Výběr kolekce faktur, vybrány jsou pouze faktury s částkou větší než 10000.
GET http://localhost/data/issuedinvoices?select=Amount,Firm_ID.Name+as+FirmName&where=Amount+gt+10000 PŘÍKLAD 2 - výběr faktur s kombinací podmínek
PŘÍKLAD 2 - výběr faktur s kombinací podmínek
                                                                Výběr kolekce faktur, vybrány jsou pouze faktury, které mají částku větší než 10000 a zároveň se Firm_ID nerovná '1100000101'.
GET http://localhost/data/issuedinvoices?select=Amount,Firm_ID.Name+as+FirmName&where=Amount+gt+10000+and+Firm_ID+ne+'1100000101' PŘÍKLAD 3 - výběr příjemek vystavených po určitém datu
PŘÍKLAD 3 - výběr příjemek vystavených po určitém datu
                                                                Ukázka práce s datumovými hodnotami. Pokud potřebujeme získat příjemky vystavené 2. 8. 2018 v 6:00 nebo později, můžeme pro vyjádření data a času použít variantně zápis ve formátu ISO 8601
GET http://localhost/data/receiptcards?select=DisplayName&where=CreatedAt$DATE+ge+timestamp'2018-08-02T06:00:00'nebo číselný formát OLE (Excel)
GET http://localhost/data/receiptcards?select=DisplayName&where=CreatedAt$DATE+ge+43314.25se stejným výsledkem.
Uvádění hodinových a minutových údajů je v obou případech nepovinné. 2. 8. 2018 je tak možné vyjádřit jako '2018-08-08' (ISO) nebo 43314 (OLE).
Pokud v zápisu explicitně neuvedete časovou zónu, předpokládá se, že máte na mysli lokální čas. Stejný požadavek by bylo možné zaslat také s uvedením časové zóny, např.
GET http://localhost/data/receiptcards?select=DisplayName&where=CreatedAt$DATE+ge+'2018-08-02T06:00:00+01:00' POZNÁMKA: Formát zobrazení data a času v odpovědích na požadavky
POZNÁMKA: Formát zobrazení data a času v odpovědích na požadavky
                                                                        Výše uvedené příklady se týkají zápisu data a času v odesílaných požadavcích. Při práci s Web API jsou nicméně časové údaje obsaženy také v odpovědích na požadavky, ve kterých jsou časové údaje vraceny jako UTC (koordinovaný světový čas) ve formátu ISO 8601 včetně specifikace časové zóny, tj. například 2018-08-02T05:00:00.000Z.
Výjimkou je používání agregačních funkcí, kdy se agregované časové údaje vrací v číselném formátu OLE (Excel). Viz příklad platnosti ceníků v kapitole Knihovna praktických příkladů Web API.
S touto skutečností je zapotřebí počítat a ke zpracování datumových a časových údajů ideálně využívat nějakou standardní knihovnu, která korektně interpretuje časové zóny.
Pokud používáte třídu java.time.format.DateTimeFormatter (Java 8 nebo novější), můžete využít předdefinovaný formát ISO_INSTANT.
Zcela nevhodné je zpracovávat vrácené hodnoty pouze řetězcovými funkcemi, jak si ukážeme na příkladu:
Hodnota 2019-02-10T23:00:00.000Z (vrácená v odpovědi na zaslaný požadavek) odpovídá místnímu času 2019-02-11T00:00:00.000. Pokud se pokusíte oddělit datum prostým odříznutím prvních 10 znaků z vráceného řetězce, získáte mylnou informaci (datum o 1 den starší, než je ve skutečnosti).
Od verze 22.1.9 již není nutné před uvedením času používat klíčové slovo timestamp.
Od verze 23.1. jsou datumové položky s hodnotou 0 v API místo ISOStringu vráceny s hodnotou null. Hodnota null je zároveň použitelná v klausuli where a vyhodnocuje se jako 0.
Ve starších verzích ABRA Gen nebyl údaj o časové zóně v odpovědích uváděn, což mohlo v určitých situacích vést k nejednoznačnostem (při práci s různými časovými pásmy nebo přechody ze standardního času na letní a zpět):
Požadavek (libovolná verze ABRA Gen):
GET http://localhost/data/issuedinvoices?where=id+eq+'3400000101'&select=docdate$dateOdpověď ve verzi ABRA Gen 19.x nebo novější:
[
	{
		"docdate$date": "2006-01-24T23:00:00.000Z"
	}
]Odpověď ve verzi ABRA Gen 18.x nebo starší (stejná data):
[
	{
		"docdate$date": "2006-01-25T00:00:00.000"
	}
] Rozvíjení vybíraných BO (klauzule expand)
Rozvíjení vybíraných BO (klauzule expand)
                                                        Klauzule expand slouží k rozvíjení odkazovaných BO a kolekcí BO. Je používán tehdy, chceme-li jedním dotazem získat Business objekt včetně BO, které jsou s ním propojeny (typicky fieldy, jejichž název končí na "_ID"). Může se jednat o jednotlivé objekty nebo jejich kolekce (typicky Rows - řádky dokladu).
Chceme-li při použití expand použít i jiné než rozvíjené objekty, je nutné je uvést v klauzuli select.
 PŘÍKLAD 1 - výběr faktur s celým objektem firmy
PŘÍKLAD 1 - výběr faktur s celým objektem firmy
                                                                Výběr kolekce faktur vydaných, každá faktura obsahuje částku (Amount) a celý objekt firmy (Firm_ID), na kterou byla vystavena.
GET http://localhost/data/issuedinvoices?select=Amount&expand=Firm_ID PŘÍKLAD 2 - výběr faktur s vybranými fieldy objektu firma
PŘÍKLAD 2 - výběr faktur s vybranými fieldy objektu firma
                                                                Výběr kolekce faktur vydaných, každá faktura obsahuje částku (Amount) a objekt firmy (Firm_ID), na kterou byla vystavena - objekt firmy obsahuje pouze filedy specifikované v závorkách za názvem fieldu v klauzuli expand. Vybírané fieldy lze přejmenovávat pomocí operátoru as, stejně jako v klauzuli select.
GET http://localhost/data/issuedinvoices?select=Amount&expand=Firm_ID(ID, Code, Name)Jedná se o zkrácenou formu zápisu, stejného výsledku lze dosáhnout následovně:
GET http://localhost/data/issuedinvoices?select=Amount&expand=Firm_ID(select ID, Code, Name) PŘÍKLAD 3 - výběr faktur s objekty firmy a úplnou kolekcí řádků
PŘÍKLAD 3 - výběr faktur s objekty firmy a úplnou kolekcí řádků
                                                                Výběr kolekce faktur vydaných, každá faktura obsahuje částku (Amount), celý objekt firmy (Firm_ID), na kterou byla vystavena, a kolekci řádků faktury (Rows).
GET http://localhost/data/issuedinvoices?select=Amount&expand=Firm_ID, Rows PŘÍKLAD 4 - výběr faktur s objekty firmy a omezenou kolekcí řádků
PŘÍKLAD 4 - výběr faktur s objekty firmy a omezenou kolekcí řádků
                                                                Výběr kolekce faktur vydaných, přičemž každá faktura obsahuje ID a podmnožinu kolekce řádků faktury (Rows) omezenou na řádky typu 3 (skladové). Navíc jsou vráceny pouze specifikované fieldy - ID, typ řádku a částka).
GET http://localhost/data/issuedinvoices?select=id&expand=Rows(select ID, RowType, TotalPrice where RowType eq 3) PŘÍKLAD 5 - výběr faktur s objekty firmy a omezenou kolekcí řádků a řazením
PŘÍKLAD 5 - výběr faktur s objekty firmy a omezenou kolekcí řádků a řazením
                                                                Výběr kolekce faktur vydaných, přičemž každá faktura obsahuje ID a podmnožinu kolekce řádků faktury (Rows) omezenou na řádky typu 3 (skladové). Jsou vráceny pouze specifikované fieldy - ID, typ řádku a částka). Řádky jsou navíc seřazeny ve stejném pořadí jako na dokladu.
GET http://localhost/data/issuedinvoices?select=id&expand=Rows(select ID, RowType, TotalPrice where RowType eq 3 orderby PosIndex)Řazení může být i sestupné:
http://localhost/data/issuedinvoices?select=id&expand=Rows(select ID, RowType, TotalPrice where RowType eq 3 orderby PosIndex desc) PŘÍKLAD 6 - výběr faktur s objekty firmy a omezenou kolekcí řádků, řazením a expandováním položky v subkolekci
PŘÍKLAD 6 - výběr faktur s objekty firmy a omezenou kolekcí řádků, řazením a expandováním položky v subkolekci
                                                                Výběr kolekce faktur vydaných, přičemž každá faktura obsahuje ID a podmnožinu kolekce řádků faktury (Rows) omezenou na řádky typu 3 (skladové). Jsou vráceny pouze specifikované fieldy - ID, typ řádku a částka. Řádky jsou seřazeny ve stejném pořadí jako na dokladu. U skladových karet na řádcích chceme navíc získat jejich ID, kód a název.
GET http://localhost/data/issuedinvoices?select=id&expand=Rows(select ID, RowType, TotalPrice where RowType eq 3 orderby PosIndex), Rows.StoreCard_ID(select ID, Code, Name) Agregace dat (klauzule groupby)
Agregace dat (klauzule groupby)
                                                        Klauzule groupby slouží k agregaci dat stejným způsobem, jako v SQL.
 PŘÍKLAD 1  - výběr faktur s agregací dle firmy
PŘÍKLAD 1  - výběr faktur s agregací dle firmy
                                                                Výběr kolekce faktur vydaných, každý objekt faktury obsahuje částku ("Sum(Amount)") agregovanou dle firem, na které byly faktury vystaveny ("Firm_ID").
GET http://localhost/data/issuedinvoices?select=Sum(Amount),Firm_ID&groupby=Firm_ID PŘÍKLAD 2   - výběr faktur s agregací dle firmy s celým objektem firmy
PŘÍKLAD 2   - výběr faktur s agregací dle firmy s celým objektem firmy
                                                                Výběr kolekce faktur vydaných, každý objekt faktury obsahuje částku ("Sum(Amount)") agregovanou dle firem, na které byly faktury vystaveny - Firm_ID obsahuje kompletní objekt firmy.
GET http://localhost/data/issuedinvoices?select=Sum(Amount)&groupby=Firm_ID&expand=Firm_ID PŘÍKLAD 3  - příklad použití funkce Floor, která vrátí data seskupená za dny
PŘÍKLAD 3  - příklad použití funkce Floor, která vrátí data seskupená za dny
                                                                Ukázka použití funkce Floor, vrací pro kladná čísla celou část, pro záporná taky celou, ale směrem od nuly.
GET http://localhost/data/issuedinvoices?select=Sum(Amount),Firm_ID&groupby=Firm_IDGET http://localhost/data/issuedinvoices?select=Sum(Amount),Firm_ID&groupby=Firm_ID Řazení dat (klauzule orderby)
Řazení dat (klauzule orderby)
                                                        Klauzule orderby slouží k řazení výstupu stejným způsobem jako v SQL.
 PŘÍKLAD 1 - výběr faktur s řazením dle částky
PŘÍKLAD 1 - výběr faktur s řazením dle částky
                                                                Výběr kolekce faktur vydaných, každý objekt faktury obsahuje částku (Amount) a objekt firmy, na kterou je faktura vystavena (Firm_ID). Data jsou řazena podle částky (výchozí je vzestupné řazení).
GET http://localhost/data/issuedinvoices?select=Amount&expand=Firm_ID(ID,Code,Name)&orderby=Amount PŘÍKLAD 2 - výběr faktur s řazením dle kódu firmy
PŘÍKLAD 2 - výběr faktur s řazením dle kódu firmy
                                                                Výběr kolekce faktur vydaných, každý objekt faktury obsahuje částku (Amount) a objekt firmy, na kterou je faktura vystavena (Firm_ID). Faktury jsou řazeny dle kódu firmy, na kterou jsou vystaveny, a následně podle částky. Řadit je možné i podle polí odkazovaných objektů, a také vícero polí obecně.
GET http://localhost/data/issuedinvoices?select=Amount&expand=Firm_ID(ID,Code,Name)&orderby=Firm_ID.Code,Amount PŘÍKLAD 3 - výběr faktur s kombinovaným řazením
PŘÍKLAD 3 - výběr faktur s kombinovaným řazením
                                                                Výběr kolekce faktur vydaných, každý objekt faktury obsahuje částku (Amount) a objekt firmy, na kterou je faktura vystavena (Firm_ID). Faktury jsou řazeny dle kódu firmy, na kterou jsou vystaveny vzestupně, a následně podle částky sestupně.
GET http://localhost/data/issuedinvoices?select=Amount&expand=Firm_ID(ID,Code,Name)&orderby=Firm_ID.Code,Amount+desc Stránkování (klauzule skip a take)
Stránkování (klauzule skip a take)
                                                        Klauzule skip a take slouží k omezování počtu vybraných záznamů. Typickým využitím je stránkování výpisu výsledků. Klauzule skip udává, kolik záznamů se má přeskočit, klauzule take počet záznamů, které se mají vrátit.
Klauzule skip a take je vhodné kombinovat s klauzulí orderby, která zajistí jednoznačné pořadí vypisovaných záznamů.
 PŘÍKLAD 1 - výběr středisek se stránkováním po deseti záznamech
PŘÍKLAD 1 - výběr středisek se stránkováním po deseti záznamech
                                                                Výběr kolekce středisek s omezením pro účely stránkování výpisu. První požadavek vrátí prvních deset středisek (seřazených podle kódu), druhý požadavek dalších deset středisek atd.
GET http://localhost/data/divisions?select=code,name&orderby=code&skip=0&take=10
GET http://localhost/data/divisions?select=code,name&orderby=code&skip=10&take=10
...Podobný příklad naleznete ve sbírce příkladů pod názvem Výběr skladových karet s omezením počtu vrácených záznamů.