Magento using addVisibleInCatalogFilterToCollection returns nothing when it shouldn't
In Magento I'm using the following code to get a bestsellers data collection:

Model Function:

      public function bestSellers($limit = 12){
        
        $storeId    = Mage::app()->getStore()->getId();
        $_productCollection = Mage::getResourceModel('reports/product_collection')
            ->addOrderedQty()
            ->addAttributeToSelect('id')
            ->setStoreId($storeId)
            ->addStoreFilter($storeId)
            ->setOrder('ordered_qty', 'desc') //best sellers on top
            ->setPageSize($limit); 
        
        Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($_productCollection);
        Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($_productCollection);

        return $_productCollection; 
        
    }

Block Output:

    <?php $products = Mage::getModel('tabs/collections')->bestSellers($limit); ?>
    <pre>
        <?php print_r($productCollection->getData()); ?>
    </pre>

However it returns nothing when the addVisibleInCatalogFilterToCollection line is used in the model function, but if I remove the addVisibleInCatalogFilterToCollection line, then it returns an array of expected bestselling product data (including the ones that shouldn't be visible in the catalog).

How can I return my array of data with the visibility filter working as it should? Rather than returning nothing. Very confused. Thanks in advance!
Magento using addVisibleInCatalogFilterToCollection returns nothing when it shouldn't
===

In Magento I'm using the following code to get a bestsellers data collection:

Model Function:

      public function bestSellers($limit = 12){
        
        $storeId    = Mage::app()->getStore()->getId();
        $_productCollection = Mage::getResourceModel('reports/product_collection')
            ->addOrderedQty()
            ->addAttributeToSelect('id')
            ->setStoreId($storeId)
            ->addStoreFilter($storeId)
            ->setOrder('ordered_qty', 'desc') //best sellers on top
            ->setPageSize($limit); 
        
        Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($_productCollection);
        Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($_productCollection);

        return $_productCollection; 
        
    }

Block Output:

    <?php $products = Mage::getModel('tabs/collections')->bestSellers($limit); ?>
    <pre>
        <?php print_r($productCollection->getData()); ?>
    </pre>

However it returns nothing when the addVisibleInCatalogFilterToCollection line is used in the model function, but if I remove the addVisibleInCatalogFilterToCollection line, then it returns an array of expected bestselling product data (including the ones that shouldn't be visible in the catalog).

How can I return my array of data with the visibility filter working as it should? Rather than returning nothing. Very confused. Thanks in advance!