Выполнить в SQL консоли запрос на добавление. Тип F (файл) обычно не имеет смысла индексировать — можно исключить:
UPDATE b_iblock_property SET SEARCHABLE = 'Y' WHERE IBLOCK_ID = 123 AND PROPERTY_TYPE != 'F';
Переиндексировать элементы инфоблока для модуля поиска — без этого значения свойств не попадут в поисковый индекс. Либо через админку /bitrix/admin/search_reindex.php.
Поле SEARCHABLE в таблице b_iblock_property отвечает за флаг "Значения свойства участвуют в поиске". Значение Y — индексировать, N — не индексировать. Это поле описано в классе Bitrix\Iblock\PropertyTable (архитектура свойств инфоблока).
Выполнение через классическое API CIBlockProperty::Update()
Этот способ работает с обеими версиями инфоблоков (1.0 и 2.0), но выполняется в цикле:
$iblockId // Фильтр по ID инфоблока
// Если нужно обновить только одно конкретное свойство, добавьте:
// 'CODE' => 'YOUR_PROPERTY_CODE',
]
);
// 2. Проходимся по всем найденным свойствам в цикле
while ($prop = $dbProps->Fetch()) {
$obProp = new CIBlockProperty();
// 3. Обновляем свойство, делая его участвующим в поиске
$isUpdated = $obProp->Update(
$prop['ID'],
[
'SEARCHABLE' => 'Y'
]
);
// Опционально: проверка результата обновления для логирования
if (!$isUpdated) {
// Можно добавить логирование ошибки: $obProp->LAST_ERROR
// echo "Ошибка обновления свойства ID: {$prop['ID']}. {$obProp->LAST_ERROR}
";
}
}
?>
- Прямой SQL — самый быстрый и действительно "один запрос", но не триггерит события ORM. Для простого включения флага это безопасно.
- Для инфоблоков 2.0 методы
PropertyTable::add/update/deleteне работают. Используйте прямой SQL или классическое APICIBlockProperty::Update(). - Флаг
SEARCHABLEможно также включить в административном интерфейсе: Типы контента → Инфоблоки → [ваш инфоблок] → Свойства → [свойство] → Индексировать для поиска.