Задать вопрос

Bitrix как реализовать фильтр по пользовательскому поля?

Добрый день!

Столкнулся с проблемой фильтрации HighloadBlock по диапазону даты в Bitrix.
Как можно отфильтровать по диапазону даты?

Пример кода (не фильтрует):
use Bitrix\HighloadBlock as HL;
use Bitrix\Main\Entity;

CModule::IncludeModule('highloadblock');

$hlbl = 2;
$hlblock = HL\HighloadBlockTabke::getById($hlbl)->fetch();
$entity = HL\HighloadBlockTable::compileEntity($hlblock);
$entity_data = $entity->getDataClass();

$dbData = $entity_data::getlist(array(
   'select' => array('*'),
   'order'  => array('UF_CATEGORIAY'=>'ASC'),
   'filter'  => array(
       '>=UF_DATE' => '2017-03-01 18:00:00',
       '<=UF_DATE' => '2017-01-01 18:00:00'
   )
));
while($data = $dbData->fetch())
{
   echo '<pre>';print_r($data);echo'</pre>';
}


тип пользовательского поля:
UF_DATE - Дата со временем
  • Вопрос задан
  • 4263 просмотра
Подписаться 1 Оценить 1 комментарий
Решения вопроса 1
gromdron
@gromdron
Работаю с Bitrix24
Во-первых, вместо Y-m-d H:i:s используется формат сайта.
Во-вторых, используйте \Bitrix\Main\Type\DateTime

$dbData = $entity_data::getlist(array(
   'select' => array('*'),
   'order'  => array('UF_CATEGORIAY'=>'ASC'),
   'filter'  => array(
       '>=UF_DATE' => \Bitrix\Main\Type\DateTime::createFromUserTime('01.01.2017 18:00:00'),
       '<=UF_DATE' => \Bitrix\Main\Type\DateTime::createFromUserTime('03.01.2017 18:00:00')
   )
));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы