Для фильтрации по свойству типа "список" в Битриксе 1С можно использовать следующий подход.
Первым шагом необходимо получить код свойства типа "список". Для этого можно открыть настройки инфоблока, затем перейти на вкладку "Свойства". Найти нужное свойство и скопировать его код.
Затем, при формировании фильтра для выборки элементов, нужно добавить соответствующую конструкцию. В качестве фильтра в функции CIBlockElement::GetList
необходимо использовать "PROPERTY_" + "код свойства". Для фильтрации по значению свойства типа "список" можно использовать следующие операторы:
- PROPERTY_CODE
- фильтр по конкретному значению свойства.
- PROPERTY_CODE_VALUE
- фильтр по фразе в значениях свойства.
- PROPERTY_CODE_ENUM
- фильтр по ID значения свойства.
Пример:
$arFilter = array( 'IBLOCK_ID' => 1, // ID инфоблока 'ACTIVE' => 'Y', // Учитываем только активные элементы 'PROPERTY_COLOR' => 'red', // Фильтр по конкретному значению свойства ); $res = CIBlockElement::GetList(array(), $arFilter, false, false); while ($arItem = $res->Fetch()) { // ... }
В данном примере фильтр PROPERTY_COLOR
указывает на свойство "цвет" (где "COLOR" - код свойства), и выбираются только элементы, у которых значение этого свойства равно "red".
Также можно использовать другие операторы фильтрации. Например, для фильтрации по ID значения свойства:
$arFilter = array( 'IBLOCK_ID' => 1, 'ACTIVE' => 'Y', 'PROPERTY_COLOR_ENUM' => 3, // Фильтр по ID значения свойства ); $res = CIBlockElement::GetList(array(), $arFilter, false, false); while ($arItem = $res->Fetch()) { // ... }
В этом примере фильтр PROPERTY_COLOR_ENUM
указывает на свойство "цвет" и выбираются только элементы, у которых значение этого свойства имеет ID равный 3.
Если нужно осуществить фильтрацию по фразе в значениях свойства типа "список", то можно использовать следующий фильтр:
$arFilter = array( 'IBLOCK_ID' => 1, 'ACTIVE' => 'Y', '%PROPERTY_COLOR_VALUE' => 'red', // Фильтр по фразе в значениях свойства ); $res = CIBlockElement::GetList(array(), $arFilter, false, false); while ($arItem = $res->Fetch()) { // ... }
В данном примере фильтр %PROPERTY_COLOR_VALUE
указывает на свойство "цвет" и выбираются только элементы, у которых значение этого свойства содержит фразу "red".
Таким образом, используя соответствующую конструкцию и операторы фильтрации, можно легко отфильтровать элементы инфоблока по свойству типа "список" в Битриксе 1С.