Коллеги, доброго времени суток!
Не могу решить задачу и очень нуждаюсь в Вашей профессиональной помощи.
Не работает [B]фильтр по дате[/B] в связке компонента bitrix:main.ui.filter и bitrix:main.ui.grid при получении свойств из инфоблока. На сколько я понял, перечитав половину интернета, дело в формате даты, инфоблок возвращает строку, а фильтр обращается к формату дата/время, но не могу понять, где в коде задавать формат полю 'DATE_CREATE'.
Помогите пожалуйста, где добавить строчку, чтобы работал фильтр по свойству 'DATE_CREATE'? В [URL=https://dev.1c-bitrix.ru/api_d7/bitrix/main/systemcomponents/gridandfilter/index.php]примере[/URL] из документации также не работает... :(
Код фильтра:
[CODE]<?
$filterOption = new Bitrix\Main\UI\Filter\Options($list_id);
$filterData = $filterOption->getFilter([]);
$ui_filter = [
['id' => 'PROPERTY_ABSENCE_SOTR', 'name' => 'Сотрудник', 'type'=>'text', 'default' => true],
['id' => 'NAME', 'name' => 'Причина', 'type'=>'text', 'default' => true],
['id' => 'DATE_CREATE', 'name' => 'Дата создания', 'type' => 'date', 'default' => true],
];
foreach ($filterData as $k => $v) {
if ($k === 'FIND') {
$filterData[] = [
'LOGIC' => 'OR',
'PROPERTY_ABSENCE_SOTR' => "%".$v."%",
'NAME' => "%".$v."%",
];
}
}
$APPLICATION->IncludeComponent('bitrix:main.ui.filter', '', [
'FILTER_ID' => $list_id,
'GRID_ID' => $list_id,
'FILTER' => $ui_filter,
'ENABLE_LIVE_SEARCH' => true,
'ENABLE_LABEL' => true
]);?>
[/CODE]
Код страницы полностью:
[CODE]<?
include($_SERVER["DOCUMENT_ROOT"] . "/bitrix/header.php");
$APPLICATION->SetTitle("Тестовый список");
use \Bitrix\Iblock\PropertyEnumerationTable;
use Bitrix\Main\Grid\Options as GridOptions;
use Bitrix\Main\UI\PageNavigation;
CModule::IncludeModule("iblock");
$list_id = 'example_list';
$grid_options = new GridOptions($list_id);
$sort = $grid_options->GetSorting(['sort' => ['DATE_CREATE' => 'DESC'], 'vars' => ['by' => 'by', 'order' => 'order']]);
$nav_params = $grid_options->GetNavParams();
$nav = new PageNavigation($list_id);
$nav->allowAllRecords(true)
->setPageSize($nav_params['nPageSize'])
->initFromUri();
if ($nav->allRecordsShown()) {
$nav_params = false;
} else {
$nav_params['iNumPage'] = $nav->getCurrentPage();
}
?>
<?
$filterOption = new Bitrix\Main\UI\Filter\Options($list_id);
$filterData = $filterOption->getFilter([]);
$ui_filter = [
['id' => 'PROPERTY_ABSENCE_SOTR', 'name' => 'Сотрудник', 'type'=>'text', 'default' => true],
['id' => 'NAME', 'name' => 'Причина', 'type'=>'text', 'default' => true],
['id' => 'DATE_CREATE', 'name' => 'Дата создания', 'type' => 'date', 'default' => true],
];
foreach ($filterData as $k => $v) {
if ($k === 'FIND') {
$filterData[] = [
'LOGIC' => 'OR',
'PROPERTY_ABSENCE_SOTR' => "%".$v."%",
'NAME' => "%".$v."%",
];
}
}
$APPLICATION->IncludeComponent('bitrix:main.ui.filter', '', [
'FILTER_ID' => $list_id,
'GRID_ID' => $list_id,
'FILTER' => $ui_filter,
'ENABLE_LIVE_SEARCH' => true,
'ENABLE_LABEL' => true
]);?>
<?
print_r($filterData);
$filterData['IBLOCK_ID'] = 1;
$columns = [];
$columns[] = ['id' => 'PROPERTY_ABSENCE_SOTR', 'name' => 'Сотрудник', 'sort' => 'PROPERTY_ABSENCE_SOTR', 'default' => true];
$columns[] = ['id' => 'NAME', 'name' => 'Причина', 'sort' => 'NAME', 'default' => true];
$columns[] = ['id' => 'DATE_ACTIVE_FROM', 'name' => 'Дата начала', 'sort' => 'DATE_ACTIVE_FROM', 'default' => true];
$columns[] = ['id' => 'DATE_ACTIVE_TO', 'name' => 'Дата окончания', 'sort' => 'DATE_ACTIVE_TO', 'default' => true];
$columns[] = ['id' => 'PROPERTY_ABSENCE_DEP', 'name' => 'Подразделение', 'sort' => 'PROPERTY_ABSENCE_DEP', 'default' => true];
$columns[] = ['id' => 'CREATED_USER_NAME', 'name' => 'Кем создано', 'sort' => 'CREATED_USER_NAME', 'default' => true];
$columns[] = ['id' => 'DATE_CREATE', 'name' => 'Дата создания', 'sort' => 'DATE_CREATE', 'default' => true];
$res = \CIBlockElement::GetList($sort['sort'], $filterData, false, $nav_params,
["PROPERTY_ABSENCE_SOTR", "IBLOCK_ID", "NAME", "DATE_ACTIVE_FROM", "DATE_ACTIVE_TO", "PROPERTY_ABSENCE_DEP", "CREATED_USER_NAME", "DATE_CREATE"]
);
$nav->setRecordCount($res->selectedRowsCount());
while($row = $res->GetNext()) {
$list[] = [
'data' => [
"PROPERTY_ABSENCE_SOTR" => $row['PROPERTY_ABSENCE_SOTR_VALUE'],
"NAME" => $row['NAME'],
"DATE_ACTIVE_FROM" => $row['DATE_ACTIVE_FROM'],
"DATE_ACTIVE_TO" => $row['DATE_ACTIVE_TO'],
"PROPERTY_ABSENCE_DEP" => $row['PROPERTY_ABSENCE_DEP_VALUE'],
"CREATED_USER_NAME" => $row['CREATED_USER_NAME'],
"DATE_CREATE" => $row['DATE_CREATE'],
],
'actions' => [
[
'text' => 'Просмотр',
'default' => false,
'onclick' => 'document.location.href="?op=view&id='.$row['ID'].'"'
], [
'text' => 'Удалить',
'default' => false,
'onclick' => 'if(confirm("Точно?")){document.location.href="?op=delete&id='.$row['ID'].'"}'
]
]
];
}
$APPLICATION->IncludeComponent('bitrix:main.ui.grid', '', [
'GRID_ID' => $list_id,
'COLUMNS' => $columns,
'ROWS' => $list,
'SHOW_ROW_CHECKBOXES' => false,
'NAV_OBJECT' => $nav,
'AJAX_MODE' => 'Y',
'AJAX_ID' => \CAjax::getComponentID('bitrix:main.ui.grid', '.default', ''),
'PAGE_SIZES' => [
['NAME' => '5', 'VALUE' => '5'],
['NAME' => '20', 'VALUE' => '20'],
['NAME' => '50', 'VALUE' => '50'],
['NAME' => '100', 'VALUE' => '100']
],
'AJAX_OPTION_JUMP' => 'N',
'SHOW_CHECK_ALL_CHECKBOXES' => false,
'SHOW_ROW_ACTIONS_MENU' => false,
'SHOW_GRID_SETTINGS_MENU' => false,
'SHOW_NAVIGATION_PANEL' => true,
'SHOW_PAGINATION' => true,
'SHOW_SELECTED_COUNTER' => true,
'SHOW_TOTAL_COUNTER' => true,
'SHOW_PAGESIZE' => true,
'SHOW_ACTION_PANEL' => false,
'ALLOW_COLUMNS_SORT' => true,
'ALLOW_COLUMNS_RESIZE' => true,
'ALLOW_HORIZONTAL_SCROLL' => true,
'ALLOW_SORT' => true,
'ALLOW_PIN_HEADER' => true,
'AJAX_OPTION_HISTORY' => 'N'
]);
?>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>
[/CODE]