Для некоторых видов продукции нулевой кол-во товара не означает, что его нет в наличии. Тогда вы можете использовать
$stockStatus = Mage::getModel('cataloginventory/stock_item')
->loadByProduct($product)
->getIsInStock();
Для сбора одним из способов является
$collection = Mage::getModel('catalog/product')->getCollection()
->addAttributeToFilter('status', 1)
->addFieldToFilter('visibility', Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH)
->addAttributeToSelect('*');
if (! Mage::helper('cataloginventory')->isShowOutOfStock()) {
Mage::getSingleton('cataloginventory/stock')->addInStockFilterToCollection($collection);
}