Решил задачу отмены примененного купона следующим образом.
На событие добавления купона в менеджер проверяю необходимые данные и в случае необходимости удаляю купон из менеджера. Есть один момент - CCatalogDiscountCoupon::GetByID() не сработает если купон на правило корзины, тогда применяем метод \Bitrix\Sale\Internals\DiscountCouponTable::GetList().
В задании ex2-34 необходимо дату первой новости на странице установить в качестве параметра определенного тега. При этом в условии к заданию прописано следующее: "Алгоритм решения, при котором будет использоваться некэшируемое обращение к базе данных - не будет верным".
Я бы в решении исходил из того, что дата первой новости на странице - это $arResult['ITEMS'][0]['ACTIVE_FROM'], а затем использовал бы метод setResultCacheKeys. Это правильно, или все-таки нужно получать значение из БД и кешировать результат?)