Александр,Я не сильно специалист и не претендую на грамотное решение, но для себя делал такое: мне нужно было в конце обмена, когда сработает деактивация товаров (по всем возможным условиям), удалить эти неактивные товары.
Я делал так:
[CODE]// Поиск инфоблоков, в которых были выполнены изменения с момента последней выгрузки.
$curr_date = mktime(0,0,0);
$rsImportedIBlocks = \Bitrix\IBlock\IblockFieldTable::getList(array(
"select" => array("IBLOCK_ID", "DEFAULT_VALUE"),
"filter" => array(
//"=IBLOCK_ID" => $arCatalogID,
"=FIELD_ID" => "XML_IMPORT_START_TIME",
">=DEFAULT_VALUE" => date("Y-m-d H:i:s", $curr_date),
),
));
// Обходим в цикле инфоблоки
while ($arField = $rsImportedIBlocks->fetch())
{
// Ищем неактивные товары
$element = new CIBlockElement;
$rsElements = CIBlockElement::GetList(array(), array(
"IBLOCK_ID" => $arField["IBLOCK_ID"],
"ACTIVE" => "N",
), false, false, array("ID"));
// в цикле удаляем эти товары
while ($arElement = $rsElements->Fetch())
{
$element->Delete($arElement["ID"]);
}
}
[/CODE]