Стояла задача убрать из умного фильтра товары, которые были отмечены как распроданные. При этом активны на сайте. Решил через удаление их из фасетного индекса.
$arSelect = Array("ID", "IBLOCK_ID", "NAME");//IBLOCK_ID и ID обязательно должны быть указаны, см. описание arSelectFields выше $arFilter = Array("IBLOCK_ID"=>60, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y", "PROPERTY_SOLD" => "Y"); $res = CIBlockElement::GetList(Array(), $arFilter, false, array("nPageSize" => 50, "iNumPage" => $i), $arSelect); while($ob = $res->GetNextElement()){ $arFields = $ob->GetFields(); \Bitrix\Iblock\PropertyIndex\Manager::deleteElementIndex(60, $arFields["ID"]); echo "<br>"; } $i++; echo "<meta http-equiv='refresh' content='1; url=?i=".$i."' />";
Удаляется за раз 50 элементом, затем страница перезагружается(работает в браузере, возможно переделаю для запуска в консоли).