Служит для дополнительной фильтрации выборок по основным(список полей определяется для каждой сущности отдельно) и по дополнительным полям, созданным для сущности.
| Название | Тип данных | Обязательность | Описание |
|---|---|---|---|
| field | string | Обязательное | Имя поля сущности (например first_name, region_id, date_of_birth). |
| operator | Enum | Обязательное | Оператор фильтрации. |
| value | string | Обязательное | Значение фильтра в текстовом представлении. Для In/NotIn передаётся список значений через запятую. Также поддерживается маска ${field} в качестве значения, где field — название поля, доступного для фильтрации; обязательное условие: тип данных поля field должен совпадать с типом данных ${field}. Для Exists/NotExists не обязательно и игнорируется. |
Допустимые значения поля operator
| Название | Описание |
|---|---|
| Equal | Равенство (=). |
| NotEqual | Не равно (!=). |
| Greater | Больше (>). |
| Less | Меньше (<). |
| GreaterOrEqual | Больше или равно (>=). |
| LessOrEqual | Меньше или равно (<=). |
| Like | Частичное совпадение (только для строковых полей). |
| Exists | Проверка наличия значения. |
| NotExists | Проверка отсутствия значения. |
| In | Значение входит в список. |
| NotIn | Значение не входит в список. |
Для операторов Exists/NotExists поле Value не требуется и игнорируется.
Для операторов In/NotIn поле Value должно содержать список значений через запятую. Запятая внутри одного значения не поддерживается.
Правила валидации и применимости операторов по типам полей
value должен соответствовать типу данных поля (data_type) или быть маской ${field} при соблюдении условий ниже:
string — любое строковое значение.
int — строка, представляющая целое число (должна парситься в int).
decimal — строка, представляющая десятичное число (должна парситься в decimal).
bool — строка "true" или "false" (регистронезависимо).
для In/NotIn каждое значение списка должно соответствовать типу данных поля.
при использовании маски ${field}:
field внутри маски должен быть именем поля, доступного для фильтрации для данной сущности (основного или дополнительного пользовательского, если применимо).
обязательное условие: тип данных поля в field фильтра должен совпадать с типом данных поля, указанного в маске ${field}.
для In/NotIn маска ${field} не поддерживается.
Ограничения по операторам:
data_type = "string". Для других типов возвращается ошибка валидации.In/NotIn пустой список, пустые элементы списка и список больше 100 значений не допускаются.Если оператор требует Value (например Equal, Greater, LessOrEqual и т. п.), а Value отсутствует или не может быть корректно сконвертирован в соответствующий тип — возвращается ошибка валидации. Если Value задано маской ${field}, то дополнительно валидируется существование поля и совпадение типов данных (см. выше).
Для пользовательских дополнительных полей (is_custom = true) дополнительно проверяется, что поле существует в метаданных и принадлежит указанной сущности.
Пример JSON объекта фильтра
{ "field": "region_id", "operator": "Equal", "value": "5" }
Пример JSON применения фильтра для получения данных
{
"filters": [
{ "field": "field_telegram_id", "operator": "Equal", "value": "123456789" }
]
}
Пример JSON применения фильтра для получения номенклатуры, у которой поле icps (ИКПУ) не является пустой строкой
{
"filters": [
{ "field": "icps", "operator": "NotEqual", "value": "" }
]
}
Пример JSON применения двойной фильтрации для получения номенклатуры, у которой количество (quantity.common) меньше указанного минимального значения (min_quantity), и поле icps (ИКПУ) не является пустой строкой
{
"filters": [
{ "field": "quantity.common", "operator": "Less", "value": "${min_quantity}" },
{ "field": "icps", "operator": "NotEqual", "value": "" }
]
}
Пример JSON объекта фильтра с маской ${field}
{ "field": "max_amount", "operator": "GreaterOrEqual", "value": "${min_amount}" }
Пример JSON объекта фильтра со списком значений
{ "field": "region_id", "operator": "In", "value": "5,7,9" }
Пример JSON применения фильтра для исключения нескольких значений
{
"filters": [
{ "field": "status_id", "operator": "NotIn", "value": "2,3" }
]
}