Виталий Б.
949 сообщений
#3 месяца назад
Приветствую. Хелп! Есть фильтр обычный в битрикс. Не фильтрует элементы по дате. Куда копать? Уже все перерыл. Что с ним может быть не так? Пробовал разные форматы, всеравно не хочет. Тип свойства - дата.
Приложения:
  • 44 КБ
  • 191 КБ
  • 586 КБ
  • 364 КБ
Александр Ф.
3281 сообщение
#3 месяца назад
Дам совет в том, в чем не разбераюсь, могу облажаться, так что не судите строго.
Возможно Вам следует сначала получать какие то данные, а затем уже массив полученных данных фильтровать. То есть фильтр работает над уже полученными данными, а не искомыми.
P.S. Обратил еще внимание на то, что у вас элементы имеют период, то есть множество дат. Надо еще над этим размыслить, кстати не читали https://dev.1c-bitrix.ru/support/forum/forum6/topic25811/ ?
Виталий Б.
949 сообщений
#3 месяца назад
regado, Читал. Пришлось делать так, как там, через доп. массив, подставлять туда параметры из $_GET. Первый раз на битрикс натягиваю, еще не совсем разобрался, но по фильтрам ничего вразумительного, кроме как собирать массив, не нашел. Можно было конечно выбрать все данные, и отбросить лишнее, вплоть до "на лету javascript-ом", но уже пошел этим путем, думаю если есть фильтр из коробки, надо его юзать.
Александр С.
6 сообщений
#3 месяца назад
Свойство типа "Дата" хранится в БД как строковое с датой в формате YYYY-MM-DD HH:MI:SS. Перед фильтрацией нужно конвертировать дату из формата сайта в формат используемый для хранения.

$from = "01.03.2021";
$to = "31.03.2021";
$arFilter = array (
">=PROPERTY_DATE" => ConvertDateTime( $from, "YYYY-MM-DD" ) . " 00:00:00",
"<=PROPERTY_DATE" => ConvertDateTime( $to, "YYYY-MM-DD" ) . " 23:59:59",
);
Виталий Б.
949 сообщений
#3 месяца назад
Alex_Sim, Странно, что компонент не делает этого под капотом. Если админ захочет просто вставить компонент фильтра в шаблон, то ему еще и придется писать php код или другой код, чего он делать не должен. Недоработка какая-то у битрикса с датами.
Александр Ф.
3281 сообщение
#3 месяца назад
lufter, там много чего не доработано.