Функция ER FILTER
Функция FILTER
возвращает указанный список в качестве значения Список записей после изменения запроса, чтобы он фильтровал для указанного состояния.
Синтаксис
FILTER (list, condition)
Аргументы
list
: Список записей
Действительный путь источника данных типа данных Список записей.
condition
: Логическое значение
Действительное условное выражение, используемое для фильтрации записей указанного списка.
Возвращаемые значения
Список записей
Полученный список записей.
Примечания по использованию
Эта функция отличается от функции WHERE, так как указанное условие применяется на уровне базы данных к любому источнику данных электронной отчетности (ER) с типом Записи таблицы. Список и условие могут определяться с помощью таблиц и связей.
Если один или оба аргумента, настроенные для этой функции (list
и condition
) не позволяют перевести этот запрос на прямой вызов SQL, во время разработке будет выдано исключение. Это исключение информирует пользователя о том, что list
или condition
невозможно использовать для запроса базы данных.
Примечание
Функция FILTER
ведет себя иначе, чем функция WHERE
, когда функция VALUEIN
используется для указания критериев выбора.
- Если функция
VALUEIN
используется в области действия функцииWHERE
, а второй аргумент функцииVALUEIN
ссылается на источник данных, который не возвращает записей, учитывается логическое значение False, которое возвращается функциейVALUEIN
. Поэтому выражениеWHERE(Vendors, VALUEIN(Vendors.VendGroup, VendGroups, VendGroups.VendGroup))
не возвращает записей поставщика, если источник данных VendGroups не возвращает записей групп поставщиков. - Если функция
VALUEIN
используется в области действия функцииFILTER
, а второй аргумент функцииVALUEIN
ссылается на источник данных, который не возвращает записей, логическое значение False, которое возвращается функциейVALUEIN
, игнорируется. Поэтому выражениеFILTER(Vendors, VALUEIN(Vendors.VendGroup, VendGroups, VendGroups.VendGroup))
возвращает все записи поставщиков из источника данных Поставщики, даже если источник данных VendGroups не возвращает записей групп поставщиков.
Пример 1
Если Поставщик настраивается в качестве источника данных ER, который ссылается на таблицу VendTable, выражение FILTER (Vendors, Vendors.VendGroup = "40")
возвращает список только поставщиков, которые относятся к группе поставщиков 40.
Пример 2
Если Поставщик настроен в качестве источника данных ER, который ссылается на таблицу VendTable и если parmVendorBankGroup настроен как источник данных ER, который возвращает значение строкового типа данных, выражение FILTER ( Vendor.'<Relations'.VendBankAccount, Vendor.'<Relations'.VendBankAccount.BankGroupID = parmVendorBankGroup)
возвращает список только счетов поставщиков, входящих в конкретную банковскую группу.
Пример 3
Вы вводите источник данных DS типа Вычисляемое поле, и он содержит выражение SPLIT ("A,B,C", ",")
. Затем вы вводите другое выражение, FILTER( DS, DS.Value = "B")
. При попытке сохранить это выражение в конструкторе формул ER выдается следующее исключение: «Ошибка проверки: выражение списка функции FILTER не может быть запрошено».