|
Подключение JS для грида Код |
---|
CJSCore::Init();
Bitrix\Main\Page\Asset::getInstance()->addJs('/bitrix/js/crm/interface_grid.js'); |
Инициализация стандартных кнопок и навигации Код |
---|
//region Action Panel
$controlPanel = array('GROUPS' => array(array('ITEMS' => array())));
//region Button
$snippet = new Snippet();
$controlPanel['GROUPS'][0]['ITEMS'][] = $snippet->getEditButton();
$controlPanel['GROUPS'][0]['ITEMS'][] = $snippet->getRemoveButton();
$controlPanel['GROUPS'][0]['ITEMS'][] = $snippet->getForAllCheckbox();
//endregion
$grid_options = new Bitrix\Main\Grid\Options('my_grid_id');
$sort = $grid_options->GetSorting(['sort' => ['ID' => 'DESC'], 'vars' => ['by' => 'by', 'order' => 'order']]);
$nav_params = $grid_options->GetNavParams();
$nav = new Bitrix\Main\UI\PageNavigation('my_grid_id');
$nav->allowAllRecords(true)
->setPageSize($nav_params['nPageSize'])
->initFromUri();
|
Получение данных фильтра по его id и обработка данных, массив $arFilter в дальнейшем нужно использовать для получения данных в $list Код |
---|
$filterOption = new Bitrix\Main\UI\Filter\Options('my_grid_id');
$filterData = $filterOption->getFilter([]);
$arFilter = [];
foreach ($filterData as $key => $value) {
if ($key =='CREATED_BY') {
foreach ($value as $userId) $arFilter['CREATED_BY'][]=$userId;
} |
Добавление полей в фильтр Код |
---|
$arGridFilter = [];
$arGridFilterPresets = [];
$arGridFilter [] =
['id' => 'CREATED_BY',
'name' => 'Автор',
'type' => 'dest_selector',
'params' => [
'multiple' => 'Y',
'enableCrm'=>'N',
'enableUsers' => 'Y',
'enableDepartments' => 'Y',
'enableSonetgroups' => 'N',
'enableLast' => 'Y',
],
]; |
возможные опции массива params (секретная инфа) для полей фильтра 'type' => 'dest_selector' Для добавления объектов crm обязательно 'enableCrm'=>'Y', дальше опциями нужные Y|N Для фильтра по пользователям 'enableUsers' => 'Y', 'departmentSelectDisable' => 'Y|N', Код |
---|
// 'multiple' => 'Y',
// 'enableCrm'=>'Y',
// 'enableAll' => 'N',
// 'enableUsers' => 'N',
// 'enableDepartments' => 'N',
// 'enableSonetgroups' => 'N',
// 'departmentSelectDisable' => 'Y',
// 'enableLast' => 'Y',
// 'enableCrmCompanies'=>'Y',
// 'addTabCrmCompanies'=>'Y',
// 'onlyMyCompanies'=>'Y',
// 'enableCrmContacts'=>'Y',
// 'addTabCrmContacts'=>'Y',
// 'enableCrmLeads'=>'Y',
// 'addTabCrmLeads' => 'Y',
// 'enableCrmDeals'=>'Y',
// 'addTabCrmDeals'=>'Y',
// 'enableCrmQuotes'=>'Y',
// 'addTabCrmQuotes'=>'Y',
// 'enableCrmOrders'=>'Y',
// 'addTabCrmOrders'=>'Y',
// 'enableCrmProducts'=>'Y',
// 'addTabCrmProducts'=>'Y',
// 'allowEmailInvitation' => 'N',
// 'allowSearchEmailUsers' => 'N',
// 'allowAddUser' => 'N',
// 'allowAddCrmContact' => 'N',
// 'allowAddSocNetGroup' => 'N',
// 'allowSearchCrmEmailUsers' => 'N',
// 'allowSearchNetworkUsers' => 'N',
// 'enableCrmDynamics' => array(184 => 'Y',),
// 'addTabCrmDynamics' => array(184 => 'Y',),
// 'crmDynamicTitles' => array('DYNAMICS_184' => 'IM Заказы',),
// 'dialogOptions' => [
// 'height' => 240,
// 'context' => 'filter',
// 'entities' => [
// [
// 'id' => 'user',
// 'entityId' => 'user',
// 'options' => [
// 'inviteEmployeeLink' => false
// ],
// ],
// [
// 'id' => 'department',
// ],
// ]
// ], |
Подключение компонента bitrix:crm.interface.grid - это компонент грида сразу с фильтром и объектами crm Ключевые для фильтра опции 'FILTER' => $arGridFilter, 'RENDER_FILTER_INTO_VIEW' => 'crm-internal-filter' - генерируется код фильтра и показывается вместе с компонентом грида внутри дива crm-internal-filter Код |
---|
$APPLICATION->IncludeComponent( 'bitrix:crm.interface.grid',
'titleflex',
[
'GRID_ID' => 'my_grid_id',
'HEADERS' => $arH,
'COLUMNS' => $arH,
'ROWS' => $list,
'FILTER' => $arGridFilter,
'FILTER_PRESETS' => $arGridFilterPresets,
'IS_EXTERNAL_FILTER' => false,
'ENABLE_LIVE_SEARCH' => false,
'DISABLE_SEARCH' => true,
'SHOW_ROW_CHECKBOXES' => true,
'NAV_OBJECT' => $nav,
'AJAX_MODE' => 'Y',
'AJAX_ID' => \CAjax::getComponentID('crm.interface.grid', 'titleflex', ''),
'AJAX_OPTION_JUMP' => 'N',
'AJAX_OPTION_HISTORY' => 'N',
'AJAX_LOADER' => null,
'ACTION_PANEL' => $controlPanel,
'RENDER_FILTER_INTO_VIEW' => 'crm-internal-filter',
'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,
'ALLOW_COLUMNS_SORT' => true,
'ALLOW_COLUMNS_RESIZE' => true,
'ALLOW_HORIZONTAL_SCROLL' => true,
'ALLOW_SORT' => true,
'ALLOW_PIN_HEADER' => true,
] |
Удачи
|