Документация для разработчиков
Темная тема

main.ui.grid и main.ui.filter

Рассмотрим работу с компонентами main.ui.grid (классы Bitrix\Main\Grid) и main.ui.filter (классы Bitrix\Main\UI\Filter).

Компоненты

КомпонентОписание
main.ui.gridКомпонент для визуального представления данных в виде таблицы.
main.ui.filterВыводит фильтр + поиск О том, как выглядит работа с фильтром можно посмотреть в уроке Фильтр (новый интерфейс) в курсе
Контент-менеджер.
.

Компоненты являются системными и в визуальном редакторе не отображаются. В физической структуре их можно найти в папке /bitrix/components/bitrix/[название_компонента]

Связка компонентов

Компоненты могут работать в связке, что позволяет вывести информацию в виде таблицы с возможностью фильтрации и поиска.

Для связи фильтра и таблицы необходимо передать данные из фильтра в грид. Общая схема выглядит так:
// Подключаем фильтр.
$APPLICATION->includeComponent(
	"bitrix:main.ui.filter",
	"",
	[
		"FILTER_ID" => "DEMO_FILTER",
		"GRID_ID" => "DEMO_GRID",
		// ...
	]
);

// Получаем данные для фильтрации.
$filterOptions = new \Bitrix\Main\UI\Filter\Options("DEMO_FILTER");
$filterFields = $filterOptions->getFilter([
	['id' => 'DATE', 'name' => 'Дата', 'type' => 'date'],
	['id' => 'IS_SPEND', 'name' => 'Тип операции',
	'type' => 'list',

	'params' => ['multiple' => 'Y']
	],
	['id' => 'AMOUNT', 'name' => 'Сумма', 'type' => 'number'],
	['id' => 'PAYER_INN', 'name' => 'ИНН Плательщика', 'type' => 'number'],
	['id' => 'PAYER_NAME', 'name' => 'Плательщик'],
]);

// Конвертируем то, что вернул фильтр в формат пригодный для выборки данных.
// (формат зависит от того, как и с помощью чего планируется выбирать данные)
$filter = [];
foreach ($filterFields as $key => $value)
{
	// ...
}

// Получаем данные на основе сконвертированного фильтра.
$data = \AnyClass::getList(..., $filter);

// Конвертируем данные в формат пригодный для грида
$rows = [];
foreach ($data as $key => $value)
{
	// ...
}

// Подключаем грид и передаем ему данные
$APPLICATION->includeComponent(
	"bitrix:main.ui.grid",
	"",
	[
		"GRID_ID" => "DEMO_GRID",
		"ROWS" => $rows,
		// ...
	]
);


© «Битрикс», 2001-2024, «1С-Битрикс», 2024