Для получения всех элементов инфоблока по значению свойства меньше установленного значения в Битриксе есть несколько способов. Рассмотрим наиболее распространенные из них.
1. Использование класса CIBlockElement:
$iblockId = 1; // ID инфоблока $propertyCode = 'PROPERTY_CODE'; // Код свойства $propertyValue = 10; // Значение свойства $arResult = []; $res = CIBlockElement::GetList( [], [ 'IBLOCK_ID' => $iblockId, 'ACTIVE' => 'Y', '<PROPERTY_'.$propertyCode => $propertyValue, ], false, false, ['ID', 'NAME', 'PROPERTY_'.$propertyCode] ); while ($element = $res->GetNext()) { $arResult[] = $element; } // Результат будет содержать все элементы инфоблока, у которых значение свойства PROPERTY_CODE меньше $propertyValue print_r($arResult);
2. Использование класса BitrixMainEntityQuery:
use BitrixMainEntityQuery; use BitrixMainORMQueryFilterConditionTree; use BitrixMainORMQueryFilterCondition; use BitrixMainEntityExpressionField; $iblockId = 1; // ID инфоблока $propertyCode = 'PROPERTY_CODE'; // Код свойства $propertyValue = 10; // Значение свойства $query = new Query(IBlockElement::getEntity()); $query->setSelect(['ID', 'NAME', 'PROPERTY_'.$propertyCode]); $query->setFilter( (new ConditionTree()) ->where('IBLOCK_ID', $iblockId) ->where('ACTIVE', 'Y') ->where(new Condition('<PROPERTY_'.$propertyCode, $propertyValue)) ); $result = $query->exec(); $arResult = []; while ($element = $result->fetch()) { $arResult[] = $element; } // Результат будет содержать все элементы инфоблока, у которых значение свойства PROPERTY_CODE меньше $propertyValue print_r($arResult);
3. Использование класса BitrixMainLoader и метода getList:
use BitrixMainLoader; use BitrixIblockElementTable; $iblockId = 1; // ID инфоблока $propertyCode = 'PROPERTY_CODE'; // Код свойства $propertyValue = 10; // Значение свойства $arResult = []; if (Loader::includeModule('iblock')) { $res = ElementTable::getList([ 'filter' => [ 'IBLOCK_ID' => $iblockId, 'ACTIVE' => 'Y', '<PROPERTY_'.$propertyCode => $propertyValue ], 'select' => ['ID', 'NAME', 'PROPERTY_'.$propertyCode] ]); while ($element = $res->fetch()) { $arResult[] = $element; } } // Результат будет содержать все элементы инфоблока, у которых значение свойства PROPERTY_CODE меньше $propertyValue print_r($arResult);
Во всех трех примерах реализовано получение элементов инфоблока, у которых значение свойства PROPERTY_CODE меньше указанного значения $propertyValue. Выбор конкретного способа зависит от версии Битрикса и предпочтений разработчика.