Поделиться через


Функция ER ORDERBY

Функция ORDERBY возвращает указанный список в качестве значения Список записей после того, как он был отсортирован в соответствии с указанными аргументами. Эти аргументы могут определяться как выражения.

Синтаксис 1

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

Синтаксис 2

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

Примечание

Этот синтаксис поддерживается в Microsoft Dynamics 365 Finance версии не ниже 10.0.25.

Аргументы

location: Строка

Место, где должна выполняться сортировка. Допустимы следующие варианты:

  • "Query"
  • "InMemory"

list: Список записей

Действительный путь источника данных типа данных Список записей.

expression 1: Поле

Действительный путь поля источника данных, на который ссылается аргумент list вызываемой функции. Поле, на которое есть ссылка, должно быть полем примитивного типа данных. Этот аргумент обязательный.

expression N: Поле

Действительный путь поля источника данных, на который ссылается аргумент list вызываемой функции. Поле, на которое есть ссылка, должно быть полем примитивного типа данных. Эти дополнительные аргументы являются необязательными.

Возвращаемые значения

Список записей

Полученный список записей.

Примечания по использованию

Синтаксис 1

Сортировка данных выполняется всегда в памяти сервера приложений. Дополнительные сведения см. в примере 1.

Синтаксис 2

Сортировка в памяти

Когда аргумент location указан как InMemory, сортировка данных выполняется в памяти сервера приложений. Дополнительные сведения см. в примере 2.

Сортировка в базе данных

При указании аргумента location в качестве Query сортировка данных выполняется на уровне базы данных. В этом случае аргумент list должен указывать на один из следующих источников данных электронной отчетности (ER), которые определяют источник приложения, для которого может быть установлен прямой запрос к базе данных:

  • Источник данных типа Записи таблицы
  • Отношение источника данных типа Записи таблицы
  • Источник данных типа Вычисляемое поле

Аргументы expression 1 и expression N должны указывать поля источника данных электронной отчетности, которые определяют соответствующие поля источника приложения, для которого также может быть установлен прямой запрос к базе данных.

Если невозможно установить прямой запрос к базе данных, в конструкторе сопоставления моделей электронной отчетности возникает ошибка проверки. Выводится сообщение о том, что выражение электронной отчетности, включающее функцию ORDERBY, не может быть выполнено во время выполнения.

Для повышения производительности рекомендуется использовать параметр Query, если сортировка настроена для источников данных приложений, которые могут содержать большое число записей (например, для таблиц приложений с транзакциями).

Примечание

Сама функция ORDEBY не может быть преобразована в прямой запрос к базе данных. Поэтому источник данных ER, содержащий эту функцию, не является запрашиваемым. Это также не может использоваться в области функций ER, таких как FILTER и ALLITEMSQUERY, в которых могут использоваться только запрашиваемые источники данных.

Дополнительные сведения см. в примере 3 и примере 4.

Сравнимость

Так как ядро базы данных SQL и сервер приложений Finance могут использовать различные значения ранжирования для одного символа, результат сортировки одного и того же списка записей может различаться, если для сортировки используется строковое поле. Дополнительные сведения см. в примере 5.

Пример 1. Выполнение по умолчанию в памяти

Если вы введете источник данных DS типа Вычисляемое поле и он содержит выражение SPLIT ("C|B|A", "|"), выражение FIRST( ORDERBY( DS, DS. Value)).Value возвращает текстовое значение "A".

Пример 2. Явное выполнение в памяти

Если Поставщик настраивается в качестве источника данных электронной отчетности (ER) типа Таблица записей, который ссылается на таблицу VendTable, выражение ORDERBY (Vendor, Vendor.'name()') и выражение ORDERBY ("InMemory", Vendor, Vendor.'name()') возвращают список поставщиков, который отсортирован по имени в восходящем порядке.

При настройке выражения ORDERBY ("Query", Vendor, Vendor.'name()') в конструкторе сопоставления модели ER возникнет ошибка проверки во время разработки, так как в этом случае путь Vendor.'name()' ссылается на метод приложения, который имеет логику, которую невозможно преобразовать в прямой запрос к базе данных.

Пример 3. Запрос к базе данных

Если TaxTransaction настроено в качестве источника данных ER типа Записи таблицы, относящегося к таблице TaxTrans, выражение ORDERBY ("Query", TaxTransaction, TaxTransaction.TaxCode) сортирует записи на уровне базы данных приложения и возвращает список налоговых проводок, отсортированных по налоговому коду в возрастающем порядке.

Пример 4. Запрашиваемые источники данных

Если TaxTransaction настроено как источник данных ER для типа Записи таблицы, относящегося к таблице TaxTrans, источник данных ER TaxTransactionFiltered можно настроить таким образом, чтобы он содержал выражение FILTER(TaxTransaction, TaxCode="VAT19"), которое обработает проводки для указанного налогового кода. Так как настроенный источник данных ER TaxTransactionFiltered является запрашиваемым, выражение ORDERBY ("Query", TaxTransactionFiltered, TaxTransactionFiltered.TransDate) можно настроить так, чтобы оно возвращало список отфильтрованных налоговых проводок, отсортированных по датам проводок в возрастающем порядке.

Если настроить TaxTransactionOrdered как источник данных ER типа Вычисляемое поле, содержащий выражение ORDERBY ("Query", TaxTransaction, TaxTransaction.TransDate) и источник данных ER тип Вычисляемое поле, содержащий выражение FILTER(TaxTransactionOrdered, TaxCode="VAT19"), во время разработки в конструкторе сопоставления моделей ER появляется ошибка проверки. Эта ошибка происходит потому, что первый аргумент функции FILTER должен ссылаться на источник данных, который можно запросить, но источник данных TaxTransactionOrdered, содержащий функцию ORDERBY, не является запрашиваемым.

Пример 5. Сравнимость

Необходимые условия

  1. Введите источник данных DS1 типа Вычисляемое поле, содержащий выражение SPLIT ("D1|_D2|D3", "|").
  2. Откройте страницу Значения финансовой аналитики и выберите аналитику CostCenter.
  3. Введите следующие значения измерений: D1, _D2 и D3.

Сортировка в памяти

  1. Настройте источник данных DS2 типа Вычисляемое поле, содержащий выражение ORDERBY("InMemory", DS1, DS1.Value).
  2. Обратите внимание, что выражение FIRST(DS2).Value возвращает текстовое значение "D1", выражение INDEX(DS2, COUNT(DS2)).Value возвращает текстовое значение "_D2", а выражение STRINGJOIN(DS2, DS2.Value, "|") возвращает текстовое значение "D1|D3|_D2".

Сортировка в базе данных

  1. Введите источник данных DS3 типа Записи таблицы, который относится к сущности FinancialDimensionValueEntity.
  2. Настройте источник данных DS4 типа Вычисляемое поле, содержащий выражение FILTER(DS3, DS3.FinancialDimension="CostCenter").
  3. Настройте источник данных DS5 типа Вычисляемое поле, содержащий выражение ORDERBY(DS4, DS4.DimensionValue).
  4. Обратите внимание, что выражение FIRST(DS5).Value возвращает текстовое значение "_D2", выражение INDEX(DS5, COUNT(DS5)).Value возвращает текстовое значение "D3", а выражение STRINGJOIN(DS5, DS5.Value, "|") возвращает текстовое значение "_D2|D1|D3".

Дополнительные ресурсы

Функции для работы со списками