Для скрытия товарного предложения в Битриксе можно использовать фильтры или настройки доступности товара. Вот несколько способов:
1. Через административную панель:
- Зайдите в раздел "Торговый каталог" -> "Товары" и выберите нужный товар.
- В разделе "Торговые предложения" найдите нужное предложение и установите его статус на "недоступен" или "скрыт".
2. Через API:
- Воспользуйтесь методом CIBlockElement::Update для изменения свойств товарного предложения. Установите свойство "ACTIVE" в значение "N" для скрытия товарного предложения.
Чтобы настроить обработчик для деактивации товарных предложений с нулевым количеством или ценами, можно использовать следующий код:
```php
// Получаем все активные товарные предложения
$arFilter = Array("IBLOCK_ID"=>5, "ACTIVE"=>"Y");
$res = CIBlockElement::GetList(Array(), $arFilter, false, false, array("ID", "IBLOCK_ID"));
while($ob = $res->GetNextElement()){
$arFields = $ob->GetFields();
// Получаем количество и цену товарного предложения
$quantity = CIBlockElement::GetProperty($arFields["IBLOCK_ID"], $arFields["ID"], array(), array("CODE" => "QUANTITY"))->Fetch();
$price = CIBlockElement::GetProperty($arFields["IBLOCK_ID"], $arFields["ID"], array(), array("CODE" => "PRICE"))->Fetch();
// Если количество или цена равны нулю, деактивируем товарное предложение
if($quantity["VALUE"] == 0 || $price["VALUE"] == 0){
$el = new CIBlockElement;
$arFields = Array(
"ACTIVE" => "N"
);
$el->Update($arFields["ID"], $arFields);
}
}
```
Замените значение "IBLOCK_ID"=>5 на ID вашего инфоблока и запустите этот код в обработчике, который будет вызываться при определенных событиях (например, при обновлении товара).