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

Как в смарт фильтре Битрикса использовать логическое отрицание т.е. "!"?

В фильтре выбираем дату (из свойства).
Задача - показывать обьекты, у которых нет этой даты в свойстве, т.е. вместо[PROPERTY_DATE] => 25-03-2023 должно быть [PROPERTY_DATE] => !25-03-2023
Штатно Битрикс так не умеет.
Что пробовал:
Делать второй фильтр array("PROPERTY_DATE" => "!24-03-2023")и пушить в первый - не работает.

Перебирать массив добавляя "!" - не работает.
foreach ($GLOBALS['arrFilter']['=PROPERTY_13'] as $key => $val) {
    $GLOBALS['arrFilter']['PROPERTY_13'][$key] = '!'.$val;
    unset($GLOBALS['arrFilter']['=PROPERTY_13']);
}


Что посоветуете, товарищи эксперты?
Важно - свойство множественное. С одним значением получалось сделать с помощью array_push - с 2 и более значениями - не получается :(
  • Вопрос задан
  • 102 просмотра
Подписаться 1 Средний Комментировать
Решения вопроса 1
@anton99zel Куратор тега 1С-Битрикс
29а класс средней школы №7
В фильтре сначала убирают не нужное, а потом фильтруют из оставшегося)
global $smartPreFilter;
$smartPreFilter = [
    '!PROPERTY_DATE' => "24-03-2023",// так можно использовать, если дата строка.
];
$APPLICATION->IncludeComponent(
    "bitrix:catalog.smart.filter", 
    ".default", 
    array(
        //...
        "FILTER_NAME" => "arrFilter",
        "PREFILTER_NAME" => "smartPreFilter",
        //...
    ),
    $component,
    array('HIDE_ICONS' => 'Y')
);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
В Битриксе условия пишутся в ключ, а не в значение. В Вашем примере должно быть: array("!PROPERTY_DATE" => "24-03-2023")
( и там формат даты, возможно, не такой. Всё время путаюсь). Вот ссылка на курс.
Ответ написан
Ваш ответ на вопрос

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

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