Как работает bitrix:main.ui.grid

Гриды работают на 80% через сервер, т.е. вся сортировка, фильтрация, отображение колонок происходит через запросы к серверу.

Основная идея:
есть компонент (component.php) со своей логикой выборки и обновления данных.
есть шаблон, где подключены компоненты bitrix:main.ui.filter и bitrix:main.ui.grid - они только отображают полученные данные и реализуют интерфейс для взаимодействия с сервером (отправка запросов происходит через js шаблона либо штатными методами грида)

итак, вот примеры вызова наших компонентов в шаблоне (templates.php):
<? $APPLICATION->IncludeComponent('bitrix:main.ui.filter', '', [
        'FILTER_ID' => $arResult['GRID']['ID'].'_filter',
        'GRID_ID' => $arResult['GRID']['ID'],
        'FILTER' => $arResult['GRID']['FILTER'],
        'ENABLE_LIVE_SEARCH' => true,
        'ENABLE_LABEL' => true
]); ?>
<? $APPLICATION->IncludeComponent(
        'bitrix:main.ui.grid',
        '',
        [
            'GRID_ID' => $arResult['GRID']['ID'],
            'COLUMNS' => $arResult['GRID']['COLUMNS'],
            'ROWS' => $arResult['GRID']['DATA'],
            'SHOW_ROW_CHECKBOXES' => true,
            'NAV_OBJECT' => $arResult['GRID']['NAV'],
            'AJAX_MODE' => 'Y',
            'AJAX_ID' => \CAjax::getComponentID('bitrix:main.ui.grid', '.default', ''),
            'PAGE_SIZES' => [
                ['NAME' => "5", 'VALUE' => '5'],
                ['NAME' => '10', 'VALUE' => '10'],
                ['NAME' => '20', 'VALUE' => '20'],
                ['NAME' => '50', 'VALUE' => '50'],
                ['NAME' => '100', 'VALUE' => '100']
            ],
            'AJAX_OPTION_JUMP'          => 'N',
            'SHOW_CHECK_ALL_CHECKBOXES' => true,
            'SHOW_ROW_ACTIONS_MENU'     => true,
            'SHOW_GRID_SETTINGS_MENU'   => true,
            'SHOW_NAVIGATION_PANEL'     => true,
            'SHOW_PAGINATION'           => true,
            'SHOW_SELECTED_COUNTER'     => true,
            'SHOW_TOTAL_COUNTER'        => true,
            'SHOW_PAGESIZE'             => true,
            'SHOW_ACTION_PANEL'         => true,
            'ACTION_PANEL'              => $arResult['GRID']['ACTION_PANEL'],
            'ALLOW_COLUMNS_SORT'        => true,
            'ALLOW_COLUMNS_RESIZE'      => true,
            'ALLOW_HORIZONTAL_SCROLL'   => true,
            'ALLOW_SORT'                => true,
            'ALLOW_PIN_HEADER'          => true,
            'AJAX_OPTION_HISTORY'       => 'N',
            "SORT" => $arResult['GRID']["SORT"],
            "SORT_VARS" => $arResult['GRID']["SORT_VARS"],
            "FOOTER" => array(array("title" => "Всего", "value" => $arResult['GRID']["ROWS_COUNT"])),
            "FILTER" => $arResult['GRID']["FILTER"],
        ]
); ?>

Можно заметить, что вся информация по гридам разнесена в свойстве массива $arResult['GRID'] - это позволит интегрировать гриды в дефолтные компоненты без ущерба другим шаблонам.

Чуть позже найду время расписать все параметры этих компонентов (ведь их тоже нигде не найти в открытом виде)

Где документация по bitrix:main.ui.grid

Гриды - Интересный инструмент в Битрикс но опять без документации...


Как я выяснил, это уже старый инструмент (статьи по main.interface.grid нашёл за 2010 год, а по новым гридам (main.ui.grid) самые первые за 2018 год)
Но поскольку документации нет почти нет, я решил отписываться сюда по реализованному функционалу, добавил тег #main.ui.grid