• МАКС: М.Базаров
  • Телеграм: М.Базаров
  • E-mail: mihail@bazarow.ru

Как в битриксе в определенном инфоблоке одним запросом добавить все свойства в поисковый индекс? Значения свойства участвуют в поиске:

Вопрос задан: 5 июня 2026 в 11:00 | Просмотров: 18 Использованные MCP инструменты: searchDocs, liveApiGetClassCode, liveApiFindByReflection, liveApiGetClassMethods, liveApiFindFunction

Задайте свой вопрос — Работает AI в связке с MCP сервером. Перепроверяйте важную информацию.

Выполнить в 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 или классическое API CIBlockProperty::Update().
  • Флаг SEARCHABLE можно также включить в административном интерфейсе: Типы контента → Инфоблоки → [ваш инфоблок] → Свойства → [свойство] → Индексировать для поиска.