Фильтр со сложной логикой в Битрикс

$arFilter может не только принимать значения свойств элементов ИБ и самих ИБ(наборы для разных Getlist() — отличаются), но и может манипулировать так называемой «Сложной логикой» по средствам «массива вложенного фильтра». Что это такое и как это работает я поясню ниже.

Предположем у Вас стоит задача сделать выборку из ИБ используя метод GetList() класса CIBlockElement. Условия выборки следующие:

  • вывести все элементы у которых свойство PROPERTY_archive_VALUE равняется значению «нет»
  • вывести все элементы у которых свойство PROPERTY_archive_VALUE не заполнено вообще

То есть нам необходимо получить выборку элементов ИБ в которой будут находиться элементы у которых свойство PROPERTY_archive_VALUE равняется значению «нет» или PROPERTY_archive_VALUE не заполнено вообще.

Пример кода:

<?$GLOBALS['arrArc'] = array('ACTIVE' => 'Y',  array("LOGIC" => "OR", array('PROPERTY_archive_VALUE'=>false), array('PROPERTY_archive_VALUE'=>"нет")));?>

Подробнее можно прочитать здесь.

Изменить значение пользовательского свойства элемента инфоблока в Битрикс

Реализуется простой функцией:

// $id_el - id элемента, свойство которого будем изменять
// $property_id - id свойства
// $property_value - значение свойства
CIBlockElement::SetPropertyValuesEx($id_el, false, array($property_id => $property_value));

Подробнее о функции