на третий год чукча увидел как наименее варврскими методами сказать обнови кеш  по измененным элементам инфоблока.





if (CModule::IncludeModule('iblock')){CIBlock::clearIblockTagCache($iblock_id);}
 

Печально. Нельзя просто так взять и с помощью update изменить все потроха инфоблока.Точнее можно, но это мало что даст в условиях когда существуют таблицы фасетных индексов. Когда они существуют то большая часть данных для пущего ускорения работы битрикс запросов берется как раз из фасетных индексов.

Пока найдено интересное но не совсем понятное:




if (CModule::IncludeModule('iblock'))
{
$indexer=\Bitrix\Iblock\PropertyIndex\Manager::createIndexer($iblock_id);
    $result=$indexer->deleteElement($element_id);
    $result=$indexer->indexElement($element_id );
}





Если оно  реально  работает,  то  можно будет попытаться сотворить нехорошее вида 

1. записать список обновленных  элементов в  массив
2. со словами  " они украли нашу прелесть"  вызвать  метод  удалить  и обновить  индекс элемента  инфоблока






А еще  я понял каким матерным заклинанием надо было отбиваться от  битрикса. 
показать шаманство класса: заполнить базу и попытаться  сделать  бекап битрикса и восстановление  на  другом хосте.   30 раз.  (каждый день  по  одному разу) и составить график когда  операция завершиласьошибкой.