Creatio development guide
Это документация Creatio версии 7.8.0. Мы рекомендуем использовать новую версию документации.

Примеры запросов на выборку с фильтрацией

Glossary Item Box

Рекомендуем предварительно ознакомиться со статьей "Работа с объектами bpm'online по протоколу OData с использованием Http-запросов".

Конструкция $filter протокола OData используется для построения условий фильтрации данных.

В выражениях $filter можно использовать ссылки на свойства, литералы, а также строки, числа и логические выражения (true, false). Выражения $filter поддерживают арифметические, логические операции, а также операции группировки, операции со строками, датой и временем.

Логические операторы

Сигнатура Наименование Описание
eq Равно

Все контакты, у которых поле [Name] равно значению 'SomeUserName'.

Строка запроса:

GET <Адрес приложения BPMonline>/0/ServiceModel/EntityDataService.svc/ContactCollection?$filter=Name eq 'SomeUserName'

ne Не равно

Все контакты, у которых поле [Name] не равно значению 'SomeUserName'.

Строка запроса:

GET <Адрес приложения BPMonline>/0/ServiceModel/EntityDataService.svc/ContactCollection?$filter=Name ne 'SomeUserName'

gt Больше

Все контакты, у которых поле [BirthDate] больше значения '1990-12-12T12:00'.

Строка запроса:

GET <Адрес приложения BPMonline>/0/ServiceModel/EntityDataService.svc/ContactCollection?$filter=BirthDate gt datetime'1990-12-12T12:00'

ge Больше или равно

Все контакты, у которых поле [BirthDate] больше или равно значению '1990-12-12T12:00'.

Строка запроса:

GET <Адрес приложения BPMonline>/0/ServiceModel/EntityDataService.svc/ContactCollection?$filter=BirthDate ge datetime'1990-12-12T12:00'

lt Меньше

Все контакты, у которых поле [BirthDate] меньше значения '1990-12-12T12:00'.

Строка запроса:

GET <Адрес приложения BPMonline>/0/ServiceModel/EntityDataService.svc/ContactCollection?$filter=BirthDate lt datetime'1990-12-12T12:00'

le Меньше или равно

Все контакты, у которых поле [BirthDate] меньше или равно значению '1990-12-12T12:00'.

Строка запроса:

GET <Адрес приложения BPMonline>/0/ServiceModel/EntityDataService.svc/ContactCollection?$filter=BirthDate le datetime'1990-12-12T12:00'

and И

Все контакты, у которых поле [Name] равно значению 'SomeUserName' и поле [BirthDate] меньше или равно значению '1990-12-12T12:00'.

Строка запроса:

GET <Адрес приложения BPMonline>/0/ServiceModel/EntityDataService.svc/ContactCollection?$filter=Name eq 'SomeUserName' and BirthDate le datetime'1990-12-12T12:00'

or Или

Все контакты, у которых поле [Name] равно значению 'SomeUserName' или поле [BirthDate] меньше или равно значению '1990-12-12T12:00'.

Строка запроса:

GET <Адрес приложения BPMonline>/0/ServiceModel/EntityDataService.svc/ContactCollection?$filter=Name eq 'SomeUserName' or BirthDate le datetime'1990-12-12T12:00'

not Не

Все контакты, у которых поле [Name] не заканчивается на 'ame'.

Строка запроса:

GET <Адрес приложения BPMonline>/0/ServiceModel/EntityDataService.svc/ContactCollection?$filter=not endswith(Name, 'ame')

Арифметические операторы

Сигнатура Наименование Описание
add Сложение

Выбрать все продукты, для которых цена (поле Price) удовлетворяет условию (Price + 2) = 35.55

Строка запроса:

GET <Адрес приложения BPMonline>/0/ServiceModel/EntityDataService.svc/ProductCollection?$filter=Price add 2.00m eq 35.55m

sub Вычитание

Выбрать все продукты, для которых цена (поле Price) удовлетворяет условию (Price - 2) = 35.55

Строка запроса:

GET <Адрес приложения BPMonline>/0/ServiceModel/EntityDataService.svc/ProductCollection?$filter=Price sub 2.00m eq 35.55m

mul Умножение

Выбрать все продукты, для которых цена (поле Price) удовлетворяет условию (Price * 2) = 35.55

Строка запроса:

GET <Адрес приложения BPMonline>/0/ServiceModel/EntityDataService.svc/ProductCollection?$filter=Price mul 2.00m eq 35.55m

div Деление

Выбрать все продукты, для которых цена (поле Price) удовлетворяет условию (Price / 2) = 35.55

Строка запроса:

GET <Адрес приложения BPMonline>/0/ServiceModel/EntityDataService.svc/ProductCollection?$filter=Price div 2 eq 35.55m

Для построения сложных условий фильтрации данных в конструкции $filters можно использовать различные функции:

- арифметические;

- функции работы со строками;

- функции работы с датой и временем;

- функции работы с коллекциями объектов.

Более подробно они описаны в статье "Работа с объектами bpm'online по протоколу OData с использованием Http-запросов".

Полный перечень функций протокола OData приведен в официальной спецификации OData.

Lambda-оператор any

Оператор any применяет логическое выражение к каждому члену коллекции и возвращает true, если выражение правдиво хотя бы для одного из членов коллекции. Оператор any без аргрумента вернет true, если коллекция содержит хотя бы один элемент.

Пример.

Выбрать все счета, в которых есть хотя бы один продукт с именем 'SomeProductName'.

Строка запроса:

GET <Адрес приложения BPMonline>/0/ServiceModel/EntityDataService.svc/InvoiceCollection?$filter=InvoiceProductCollectionByInvoice/any(d:d/Product/Name eq 'SomeProductName')

Типы данных протокола OData

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

Тип данных Определение Примеры
Edm.Binary

Бинарные данные фиксированной или плавающей длины. 

Маска ввода: 

binary'[A-Fa-f0-9][A-Fa-f0-9]*'  

X'[A-Fa-f0-9][A-Fa-f0-9]*' 

ВАЖНО!

Х и binary регистрозависимы.

Не должно быть пробела между служебным словом и значением.

 

Пример: X'23AB'

Пример: binary'23ABFF'

Edm.Boolean

Логическое значение.

Маска ввода: 

true | false 

Пример: true

Пример: false

Edm.Byte

Беззнаковое 8-битное целое значение.

Маска ввода: 

[0-9]+ 

Пример: 255
Edm.DateTime

Дата и время в диапазоне от 12:00:00 midnight, January 1, 1753 A.D. до 11:59:59 P.M, December 9999 A.D.

Маска ввода: 

datetime'yyyy-mm-ddThh:mm[:ss[.fffffff]]'

ВАЖНО

datetime регистрозависимо

Не должно быть пробела между служебным словом и значением.

Пример: datetime'2000-12-12T12:00'
Edm.Decimal

Числовое значение с фиксированной точностью.

Этот тип описывает значение в диапазоне от отрицательного 10^255 + 1 до положительного 10^255 -1.

Маска ввода: 

[0-9]+.[0-9]+M|m 

Пример:
2.345M
Edm.Double

Числовое значение с плавающей точкой с точностью до 15 знаков.

Маска ввода: 

[0-9]+ ((.[0-9]+) | [E[+ | -][0-9]+])d 

Пример: 1E+10d

Пример: 2.029d

Пример: 2.0d

 

Edm.Single

Числовое значение с плавающей точкой с точностью до 7 знаков.

Маска ввода: 

[0-9]+.[0-9]+f 

Пример: 2.0f
Edm.Guid

128-разрядное значение, уникальный идентификатор.

Маска ввода: 

guid'dddddddd-dddd-dddd-dddd-dddddddddddd',

где d — [A-Fa-f0-9] 

 ВАЖНО!

 guid регистрозависимо.

 Не должно быть пробела между служебным словом и значением.

Пример: guid'12345678-aaaa-bbbb-cccc-ddddeeeeffff'
Edm.Int16

Целое 16-разрядное значение со знаком. 

Маска ввода: 

[-][0-9]+ 

Пример: 16

Пример: -16

Edm.Int32

Целое 32-разрядное значение со знаком. 

Маска ввода: 

[-] [0-9]+ 

Пример: 32

Пример: -32

Edm.Int64

Целое 64-разрядное значение со знаком. 

Маска ввода: 

[-] [0-9]+L 

Пример1: 64L

Пример: -64L

Edm.SByte

Represents a signed 8-bit integer value.

Маска ввода: 

[-] [0-9]+ 

Пример: 8

Пример: -8

Edm.String

Символьные данные фиксированной или плавающей длины.

Маска ввода: 

'<any UTF-8 character>'  

Пример: 'Hello OData'

 

 

© Terrasoft 2002-2016.

Был ли данный материал полезен?

Как можно улучшить эту статью?