Работа с фасетными индексами по API

На одном сайте на Битрикс используется схема обновления товаров, их свойств и остатков, при которой каждый раз после обновления слетают фасетные индексы инфоблока товаров (скрипт обновления редактирует свойства, из-за чего фасеты слетают автоматически).

Вмешаться в работу скрипта обновления никак нельзя. Поэтому понадобилось повесить на cron пересоздание фасетных индексов для инфоблока товаров.

Ранее я этого никогда не делал, поэтому полез в гугл за информацией. В итоге нашел все, что мне нужно. Привожу копию со ссылкой на источник.

Чтобы отключить (удалить) фасетный индекс, выполните этот код в консоли PHP:
CModule::IncludeModule('iblock'); 
Bitrix\Iblock\PropertyIndex\Manager::DeleteIndex(ID_инфоблока); 
Bitrix\Iblock\PropertyIndex\Manager::markAsInvalid(ID_инфоблока);

Пересоздать фасетный индекс через API:
Для элемента:
\Bitrix\Iblock\PropertyIndex\Manager::updateElementIndex(ID_инфоблока, ID_элемента);

Для инфоблока:
$index = \Bitrix\Iblock\PropertyIndex\Manager::createIndexer(ID_инфоблока);
$index->startIndex();
$index->continueIndex(0); // создание без ограничения по времени
$index->endIndex();

Источник: https://webdevhelp.ru/solutions/facet-index/
Иван Милов
Об авторе
Меня зовут Иван Милов, мне 28 лет. Опыт работы с Битрикс: 10 лет. Кроме этого работал с такими CMS, как Datalife Engine, WordPress, Joomla, OpenCart, Simpla и другими. Есть опыт парсинга и наполнения сайтов товарами и другими данными.