Sdílet prostřednictvím


Funkce elektronického výkaznictví ORDERBY

Funkce ORDERBY vrátí zadaný seznam jako hodnotu typu seznam záznamů poté, co byl seřazen podle zadaných argumentů. Tyto argumenty lze definovat jako výrazy.

Syntaxe 1

ORDERBY (list, expression 1[, expression 2, …, expression N])

Syntaxe 2

ORDERBY (location, list, expression 1[, expression 2, …, expression N])

Poznámka

Tato syntace je podporována Microsoft Dynamics 365 Finance verze 10.0.25 a novější.

Argumenty

location: Řetězec

Místo, kde se má řazení spustit. Platné jsou tyto možnosti:

  • "Query"
  • "InMemory"

list: Seznam záznamů

Platná cesta ke zdroji dat typu seznam záznamů.

expression 1: Pole

Platná cesta k poli zdroje dat, na který odkazuje argument list volané funkce. Odkazované pole musí být primitivního datového typu. Tento argument je povinný.

expression N: Pole

Platná cesta k poli zdroje dat, na který odkazuje argument list volané funkce. Odkazované pole musí být primitivního datového typu. Tyto další argumenty jsou nepovinné.

Vrácené hodnoty

Seznam záznamů

Výsledný seznam záznamů.

Poznámky k použití

Syntaxe 1

Řazení dat se vždy provádí v paměti aplikačního serveru. Další podrobnosti viz příklad 1.

Syntaxe 2

Řazení v paměti

Když je argument location je specifikován jako InMemory, řazení dat se provádí v paměti aplikačního serveru. Další podrobnosti viz příklad 2.

Řazení v databázi

Když je argument location specifikován jako Dotaz, řazení dat se provádí na úrovni databáze. V tomto případě argument list musí ukazovat na jeden z následujících zdrojů dat elektronického vykazování (ER), který specifikuje zdroj aplikace, pro který lze vytvořit přímý databázový dotaz:

  • Zdroj dat typu Záznamy tabulky
  • Vztah zdroje dat typu Záznamy tabulky
  • Zdroj dat typu Pole výpočtu

Argumenty expression 1 a expression N musí ukazovat na pole zdroje dat ER, které specifikuje příslušná pole zdroje aplikace, pro který lze vytvořit přímý databázový dotaz:

Pokud nelze navázat přímý dotaz na databázi, dojde v návrháři mapování modelu ER k chybě ověření. Zpráva, kterou obdržíte, uvádí, že výraz ER obsahující funkci ORDERBY nelze spustit za běhu programu.

Pro lepší výkon doporučujeme používat možnost Dotaz, když je řazení nakonfigurováno pro aplikační zdroje dat, které mohou obsahovat velký počet záznamů (například pro transakční aplikační tabulky).

Poznámka

Samotnou funkci ORDEBY nelze převést na přímý databázový dotaz. Proto zdroj dat ER, který obsahuje tuto funkci, nelze dotazovat. Rovněž ho nelze použít v rámci funkcí ER, jako je např. FILTER a ALLITEMSQUERY, kde lze použít pouze dotazovatelné zdroje dat.

Další podrobnosti viz příklad 3 a příklad 4.

Srovnatelnost

Protože databázový modul SQL a aplikační server Finance mohou pro jeden znak používat různé hodnoty hodnocení, může se výsledek řazení stejného seznamu záznamů lišit, když se pro řazení používá pole Řetězec. Další podrobnosti viz příklad 5.

Příklad 1: Výchozí spuštění v paměti

Pokud zadáte zdroj dat DS typu vypočítané pole a ten obsahuje výraz SPLIT ("C|B|A", "|"), výraz FIRST( ORDERBY( DS, DS. Value)).Value vrátí textovou hodnotu "A".

Příklad 2: Explicitní spuštění v paměti

Jestliže Dodavatel nakonfigurován jako zdroj dat ER typu Záznamy tabulky, který odkazuje na tabulku VendTable, výraz ORDERBY (Vendor, Vendor.'name()') i výraz ORDERBY ("InMemory", Vendor, Vendor.'name()') vrátí seznam dodavatelů seřazených podle názvu ve vzestupném pořadí.

Když nakonfigurujete výraz ORDERBY ("Query", Vendor, Vendor.'name()') v návrháři mapování modelu ER, chyba ověření se vyskytuje v době návrhu, protože cesta Vendor.'name()' odkazuje na metodu aplikace, která má logiku, kterou nelze převést na přímý databázový dotaz.

Příklad 3: Databázový dotaz

Pokud je TaxTransaction nakonfigurováno jako zdroj dat ER typu Záznamy tabulky, který odkazuje na tabulku TaxTrans, výraz ORDERBY ("Query", TaxTransaction, TaxTransaction.TaxCode) seřadí záznamy na úrovni databáze aplikace a vrátí seznam daňových transakcí, který je seřazen vzestupně podle kódu daně.

Příklad 4: Dotazovatelné zdroje dat

Pokud je TaxTransaction nakonfigurováno jako zdroj dat ER typu Záznamy tabulky, který odkazuje na tabulku TaxTrans, zdroj dat ER TaxTransactionFiltered lze nakonfigurovat tak, aby obsahoval výraz FILTER(TaxTransaction, TaxCode="VAT19"), který načte transakce pro zadaný daňový kód. Protože nakonfigurovaný zdroj dat ER TaxTransactionFiltered je dotazovatelný, výraz ORDERBY ("Query", TaxTransactionFiltered, TaxTransactionFiltered.TransDate) lze nakonfigurovat tak, aby vracel seznam filtrovaných daňových transakcí seřazený podle data transakce ve vzestupném pořadí.

Pokud nakonfigurujete TaxTransactionOrdered jako zdroj dat ER typu Počítané pole, který obsahuje výraz ORDERBY ("Query", TaxTransaction, TaxTransaction.TransDate), a zdroj dat ER typu Počítané pole, který obsahuje výraz FILTER(TaxTransactionOrdered, TaxCode="VAT19"), dojde k chybě ověření v době návrhu v návrháři mapování modelu ER. K této chybě dochází, protože první argument funkce FILTER musí odkazovat na dotazovatelný zdroj dat ER, ale zdroj dat TaxTransactionOrdered , který obsahuje funkci ORDERBY není dotazovatelný.

Příklad 5: Srovnatelnost

Předpoklady

  1. Zadejte zdroj dat DS1 typu Vypočítané pole, který obsahuje výraz SPLIT ("D1|_D2|D3", "|").
  2. Otevřete stránku Hodnoty finanční dimenze a vyberte dimenzi CostCenter.
  3. Zadejte následující hodnoty dimenzí: D1, _D2 a D3.

Řazení v paměti

  1. Nakonfigurujte zdroj dat DS2 typu Počítané pole, který obsahuje výraz ORDERBY("InMemory", DS1, DS1.Value).
  2. Všimněte si, že výraz FIRST(DS2).Value vrátí textovou hodnotu "D1", výraz INDEX(DS2, COUNT(DS2)).Value vrátí textovou hodnotu "_D2" a výraz STRINGJOIN(DS2, DS2.Value, "|") vrátí textovou hodnotu "D1|D3|_D2".

Řazení v databázi

  1. Zadejte zdroj dat DS3 typu Záznamy tabulky, který odkazuje na entitu FinancialDimensionValueEntity.
  2. Nakonfigurujte zdroj dat DS4 typu Počítané pole, který obsahuje výraz FILTER(DS3, DS3.FinancialDimension="CostCenter").
  3. Nakonfigurujte zdroj dat DS5 typu Počítané pole, který obsahuje výraz ORDERBY(DS4, DS4.DimensionValue).
  4. Všimněte si, že výraz FIRST(DS5).Value vrátí textovou hodnotu "_D2", výraz INDEX(DS5, COUNT(DS5)).Value vrátí textovou hodnotu "D3" a výraz STRINGJOIN(DS5, DS5.Value, "|") vrátí textovou hodnotu "_D2|D1|D3".

Další prostředky

Funkce seznamu