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

Для этого в шаблоне компонента корзины находим файл mutator.php и в начале него добавляем следующий код:

<?php

foreach ($arResult['BASKET_ITEM_RENDER_DATA'] as $basketItem) {
    if ($basketItem['NOT_AVAILABLE'] == 1) {
        CSaleBasket::Delete($basketItem['ID']);
    }
}

Цикл обойдет все товары в корзине. Если у товара присутствует ключ ['NOT_AVAILABLE'], значит этот товар не доступен для покупки – удаляем его через CSaleBasket::Delete.

Таким образом недоступные товары будут автоматически удалены при открытии пользователем страницы корзины.