Вообще довольно-таки нетривиально.
Для одного конкретного товара можно дергать соответствующие методы в API:
if($oShop_Item->Shop_Item_Digitals->getCountDigitalItems() > 0) {
// товар есть в наличии
}
- признак наличия цифрового товара
$oShop_Warehouse_Item = Core_Entity::factory('Shop_Warehouse_Item')->getByShopItemId($oShop_Item->id, $this->cache);
if (!is_null($oShop_Warehouse_Item) && $oShop_Warehouse_Item->count > 0)
{
// товар есть в наличии
}
- признак наличия обычного товара
Но для показа списка товаров эти методы непригодны.
В вашем случае, целесообразнее всего сделать sql-запрос к базе, чтобы достать из нее идентификаторы всех товаров, которые есть в наличии, а потом собрать из них массив и строить фильтр (sql-выражение IN) по основному свойству id.