Блог Горошко Андрея 1C-Битрикс Компонент main.ui.filter: Подключение и обработка фильтра для Грида

Компонент main.ui.filter: Подключение и обработка фильтра для Грида

Таблица данных (main.ui.grid) почти всегда требует фильтрации.

Для этого используется парный компонент bitrix:main.ui.filter.

Он отображает строку поиска и выпадающую панель с условиями, сохраняет пресеты и настройки пользователя.

Шаг 1: Описание полей фильтра

Структура полей похожа на параметры компонента или настройки свойств инфоблока.

$filterId = 'my_custom_grid'; // Должен совпадать с GRID_ID грида!

$filterFields = [
    [
        'id' => 'NAME', 
        'name' => 'Название', 
        'type' => 'string', 
        'default' => true
    ],
    [
        'id' => 'DATE_CREATE', 
        'name' => 'Дата создания', 
        'type' => 'date',
        'default' => true
    ],
    [
        'id' => 'STATUS', 
        'name' => 'Статус', 
        'type' => 'list',
        'items' => [
            'Y' => 'Активен',
            'N' => 'Скрыт'
        ],
        'params' => ['multiple' => 'Y'] // Множественный выбор
    ],
    [
        'id' => 'PRICE',
        'name' => 'Цена',
        'type' => 'number'
    ]
];

Шаг 2: Вывод компонента

Разместите этот код перед вызовом грида.

<?$APPLICATION->IncludeComponent(
    'bitrix:main.ui.filter',
    '',
    [
        'FILTER_ID' => $filterId,
        'GRID_ID' => $filterId,
        'FILTER' => $filterFields,
        'ENABLE_LIVE_SEARCH' => true,
        'ENABLE_LABEL' => true,
    ]
);?>

Шаг 3: Получение значений фильтра (Backend)

Самое интересное — как применить выбранные пользователем условия к запросу данных (getList). Для этого используется класс Bitrix\Main\UI\Filter\Options.

use Bitrix\Main\UI\Filter\Options;

// 1. Получаем настройки фильтра по его ID
$filterOptions = new Options($filterId);

// 2. Получаем текущие данные запроса (логика + массив полей)
$filterData = $filterOptions->getFilter($filterFields);

// 3. Конвертируем в формат ORM getList
$ormFilter = [];

// Обработка поиска (строка "Найти...")
if (!empty($filterData['FIND'])) {
    $ormFilter['%NAME'] = $filterData['FIND'];
}

// Обработка полей
foreach ($filterData as $key => $value) {
    switch ($key) {
        case 'NAME':
            $ormFilter['%NAME'] = $value; 
            break;
        case 'STATUS':
            $ormFilter['=STATUS'] = $value;
            break;
        case 'DATE_CREATE_from':
            $ormFilter['>=DATE_CREATE'] = $value;
            break;
        case 'DATE_CREATE_to':
            $ormFilter['<=DATE_CREATE'] = $value;
            break;
        case 'PRICE_from':
             $ormFilter['>=PRICE'] = $value;
             break;
        // ... и так далее
    }
}

// 4. Передаем $ormFilter в getList
$res = \My\Table::getList(['filter' => $ormFilter, ...]);

Вывод:
Связка main.ui.grid + main.ui.filter позволяет создавать современные, удобные интерфейсы для работы с данными за считанные минуты.

Главная задача разработчика — правильно описать поля и корректно трансформировать полученные от Options::getFilter() данные в формат фильтра ORM.

main.ui.filter, фильтр битрикс, фильтрация грида, Filter\Options, ui.filter, настройка фильтра, поиск.

Похожая задача в бизнесе?

Помогу автоматизировать процессы и внедрить ИИ

Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.

Добавить комментарий

Related Post

Удалить товар catalog.product.deleteУдалить товар catalog.product.delete

Каждый PHP-разработчик, работающий с экосистемой Bitrix Framework, должен глубоко понимать работу её ключевых компонентов. В этой статье мы проведем подробный аудит темы «Удалить товар catalog.product.delete», проанализируем лучшие практики и покажем,

Request Response: Руководство разработчикаRequest Response: Руководство разработчика

Каждый PHP-разработчик, работающий с экосистемой Bitrix Framework, должен глубоко понимать работу её ключевых компонентов. В этой статье мы проведем подробный аудит темы «Request Response: Руководство разработчика», проанализируем лучшие практики и

Натяжка верстки на 1С-Битрикс: этапы, стандарты и стоимостьНатяжка верстки на 1С-Битрикс: этапы, стандарты и стоимость

Качественная frontend-разработка и профессиональная натяжка макетов на 1С-Битрикс являются фундаментальным фактором конверсии сайта и его позиций в поисковых системах. Услуга «Натяжка верстки на 1С-Битрикс: этапы, стандарты и стоимость» гарантирует пошаговый