# Расширенная фильтрация данных в Baserow - группы условий

> Группы условий в Baserow объединяют фильтры логикой И/ИЛИ с вложенностью, позволяя строить запросы вида «(это И то) ИЛИ что-то ещё».

Source: https://opennix.org/docs/baserow/views/advanced-filtering/


Расширенная фильтрация даёт мощь запросов уровня базы данных: несколько условий объединяются логикой И/ИЛИ во вложенные группы, что позволяет находить нужные записи даже в таблицах на тысячи строк. Статья объясняет, как строить сложные фильтры с помощью групп условий, вложенной логики и комбинированных критериев - без единой строчки кода.

## Обзор

Расширенная фильтрация расширяет базовую фильтрацию, позволяя создавать группы условий - наборы фильтров, объединённые логическими операторами, которые можно вкладывать друг в друга для сложных запросов. Если обычные фильтры применяют одно простое правило по всей таблице, то расширенная фильтрация позволяет строить запросы вида «если это И то, ИЛИ что-то ещё».

Группы условий работают как скобки в математическом выражении, определяя порядок объединения фильтров. Можно построить фильтр вида «показать (высокий приоритет И просрочено) ИЛИ (средний приоритет И назначено мне)», чтобы уловить более тонкие закономерности в данных, недоступные простым фильтрам.

Расширенная фильтрация распространяется на несколько функций Baserow, включая фильтрацию строк в представлении и условную логику полей формы, обеспечивая единообразную мощность запросов по всей платформе.

## Понимание групп условий

Группа условий - это набор фильтров, объединённых логикой И или ИЛИ, которые оцениваются вместе. Каждая группа даёт результат «истина» или «ложь», и такие группы можно комбинировать с другими группами или отдельными фильтрами, создавая сложные запросы.

### Поведение логики И и ИЛИ

| Тип логики | Поведение | Результат | Пример |
|---|---|---|---|
| **И** | Все условия должны быть истинны | Строже, меньше результатов | «Статус = В работе» И «Приоритет = Высокий» (только строки, соответствующие обоим условиям) |
| **ИЛИ** | Любое условие может быть истинно | Мягче, больше результатов | «Статус = Заблокирован» ИЛИ «Статус = Под риском» (строки, соответствующие любому из условий) |

### Зачем нужны группы условий

**Простой фильтр:** Приоритет = Высокий _(показывает все записи с высоким приоритетом)_.

**Группа условий:** (Приоритет = Высокий И Статус = В работе) ИЛИ (Приоритет = Критический) _(показывает высокоприоритетные записи, только если они в работе, но при этом показывает все критические записи независимо от статуса)_.

Групповая логика позволяет выразить «покажи мне вот эту конкретную комбинацию ИЛИ вот то другое» так, как обычный плоский список фильтров сделать не может.

## Когда использовать расширенную фильтрацию

**Сложные бизнес-правила.** Показать записи, отвечающие многокомпонентному критерию, например «(уровень клиента = корпоративный И сумма контракта > 100 тыс.) ИЛИ (дата продления в ближайшие 30 дней)».

**Обработка исключений.** Показать стандартные элементы по одному набору условий, но включить и исключения: «(статус = активен И последний контакт < 30 дней назад) ИЛИ (vip-клиент = да)».

**Работа нескольких команд.** Объединить условия для разных отделов: «(отдел = продажи И этап = переговоры) ИЛИ (отдел = поддержка И приоритет = срочно)».

**Комбинации по датам.** Построить сложные временные фильтры вида «(создано в этом году И изменено в этом месяце) ИЛИ (отмечено для проверки = да)».

**Проверка данных.** Найти записи, нарушающие бизнес-правило: «(обязательное поле пусто И статус != черновик) ИЛИ (дата согласования пуста И статус = согласовано)».

## Как создать группу условий

Постройте группу условий, добавляя фильтры и объединяя их логическими операторами.

Чтобы создать простую группу условий:

1. Откройте таблицу и нажмите кнопку **«Фильтр»** на панели инструментов представления.
2. Нажмите **«+ Добавить фильтр»**, чтобы добавить первое условие.
3. Выберите поле, оператор и значение для первого фильтра.
4. Нажмите **«+ Добавить фильтр»** ещё раз для второго условия.
5. Выберите **«И»** или **«ИЛИ»** из выпадающего списка логики между фильтрами.
6. Продолжайте добавлять фильтры по необходимости.

Таблица обновляется в реальном времени, показывая только строки, соответствующие группе условий.

Чтобы создать вложенные группы условий:

1. Откройте таблицу и нажмите кнопку **«Добавить группу фильтров»** на панели инструментов представления.
2. Выберите фильтры, которые нужно объединить в группу.
3. Создайте подгруппу со своей логикой И/ИЛИ.
4. Добавьте дополнительные фильтры или группы на родительском уровне.
5. Комбинируйте логику И/ИЛИ на разных уровнях вложенности.

Пример вложенной структуры:

```
Показать строки, где:
  (Приоритет = Высокий И Статус = В работе)
  ИЛИ
  (Отдел = Продажи И (Регион = Запад ИЛИ Регион = Восток))
```

## Стратегии вложенности групп условий

| Стратегия | Структура | Сценарий использования |
|---|---|---|
| **Плоские группы** | Все фильтры на одном уровне с единой логикой | Простые запросы «всё должно совпасть» или «достаточно одного совпадения» |
| **Одна вложенность** | Одна группа в сочетании с отдельными фильтрами | «Покажи исключения ИЛИ вот эти конкретные элементы» |
| **Несколько групп** | Несколько групп на одном уровне с логикой ИЛИ | «Покажи категорию А ИЛИ категорию Б ИЛИ категорию В», где у каждой категории несколько условий |
| **Глубокая вложенность** | Группы внутри групп | Сложные бизнес-правила с несколькими уровнями логики |

## Применение расширенной фильтрации в Baserow

Расширенная фильтрация используется в нескольких функциях Baserow, обеспечивая единообразное поведение на всей платформе.

### Фильтрация строк

Применяйте группы условий в фильтрах представления, чтобы показать только строки, соответствующие сложному критерию. Каждое представление хранит независимую конфигурацию фильтров. Базовые принципы разобраны в статье [«Фильтры в Baserow»](/docs/baserow/views/filters-in-baserow/).

### Условные поля формы

Показывайте или скрывайте поля формы динамически на основе групп условий. Пример: показать поле «Причина скидки», когда «(уровень клиента = корпоративный) ИЛИ (сумма заказа > 10 тыс.)».

## Комбинированные фильтры по дате

Фильтрация по дате поддерживает несколько одновременных условий, что позволяет строить точные временные диапазоны.

Чтобы создать комбинированный фильтр по дате:

1. Откройте [панель фильтров](/docs/baserow/views/filters-in-baserow/) в таблице.
2. Выберите поле даты для фильтрации.
3. Выберите первый оператор даты (до, после, равно и так далее).
4. Выберите точку отсчёта (сегодня, завтра, вчера или конкретная дата).
5. Нажмите **«+ Добавить фильтр»**, чтобы добавить ещё одно условие по дате.
6. Выберите другой оператор и точку отсчёта.
7. Задайте логику (И/ИЛИ) между фильтрами по дате.

**Пример: показать записи со скорым сроком**

- Фильтр 1: Дата выполнения «после» вчера;
- Логика: И;
- Фильтр 2: Дата выполнения «до» завтра;
- **Результат:** показывает только элементы со сроком сегодня.

**Пример: показать элементы за конкретные периоды**

- Фильтр 1: Дата создания «в этом году»;
- Логика: И;
- Фильтр 2: Дата изменения «в этом месяце»;
- **Результат:** показывает элементы, созданные в этом году, но изменённые в этом месяце.

## Примеры логики расширенной фильтрации

### Пример 1: фильтр воронки продаж

```
Показать сделки, где:
  (Этап = Переговоры И Сумма > 50 тыс.)
  ИЛИ
  (Этап = Предложение И Дней на этапе > 14)
  ИЛИ
  (Владелец = Текущий пользователь И Статус = Требует действия)
```

**Результат:** показывает крупные переговоры, застрявшие предложения и ваши срочные задачи.

### Пример 2: контроль состояния клиентов

```
Показать клиентов, где:
  (Дата последней покупки > 90 дней назад И Обращений в поддержку > 5)
  ИЛИ
  (Сумма контракта > 100 тыс. И Дата последнего контакта > 30 дней назад)
  ИЛИ
  (Дата продления в ближайшие 60 дней И Индекс здоровья = Красный)
```

**Результат:** выявляет клиентов в зоне риска, требующих внимания.

### Пример 3: приоритизация задач

```
Показать задачи, где:
  (Приоритет = Срочно И Статус != Завершено)
  ИЛИ
  (Срок = Сегодня И Исполнитель = Текущий пользователь)
  ИЛИ
  (Заблокировано = да И Дней в блокировке > 3)
```

**Результат:** ваши срочные задачи, сегодняшние назначения и давно заблокированные элементы.

## Часто задаваемые вопросы

**В чём разница между базовой и расширенной фильтрацией?** Базовая фильтрация использует плоский список условий с единой логикой И или ИЛИ на всё представление. Расширенная фильтрация позволяет создавать вложенные группы условий с разной логикой на каждом уровне, что даёт запросы вида «(это И то) ИЛИ что-то ещё».

**Сколько групп условий можно создать?** Жёсткого ограничения на глубину вложенности или число групп нет. Однако ради производительности и удобства поддержки стоит держать фильтры настолько простыми, насколько это возможно для решения задачи. Очень сложные фильтры могут замедлить загрузку представления на больших таблицах.

**Можно ли сохранить и повторно использовать группу условий?** Группы условий сохраняются вместе с представлением. Чтобы повторно использовать сложный фильтр, продублируйте представление или создайте представление-шаблон с нужной конфигурацией фильтров, а затем адаптируйте его под новую задачу.

**Работают ли группы условий со всеми типами полей?** Да, группы условий поддерживают все типы полей и их операторы. Можно комбинировать разные типы полей в одной группе - например, текстовые, датовые и числовые фильтры одновременно.

**Как понять, что группа условий настроена правильно?** Проверьте количество строк, отображаемое в панели фильтров. Если число кажется неверным, попробуйте упростить фильтр, тестируя условия по одному, а затем постепенно добавляя сложность. Предпросмотр в реальном времени помогает проверить логику.

## Связанные материалы

- [«Базовая фильтрация в Baserow»](/docs/baserow/views/filters-in-baserow/) - основные принципы фильтрации;
- [«Настройка представления»](/docs/baserow/views/view-customization/) - другие параметры настройки представления;
- [«Группировка строк по полю»](/docs/baserow/views/group-rows-in-baserow/) - организация результатов фильтрации по группам;
- [«Настройка полей»](/docs/baserow/fields/field-customization/) - типы полей и операторы.

