Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Деактивация товара с нулевым остатком

00 голосов
1
Возникла необходимость выключить на сайте интернет-магазина все товары которых больше нет или временно закончились, чтобы не замусоривали каталог. Путем гугления был найден примерно похожий код Как деактивировать товары без цены? и в справке битрикса
CCatalogProduct::GetList
Из кусков того и этого составили вот этот скрипт, он даже работает как надо, а именно выводит список ID и названий товара которых нет на складе, и потом деактивирует элементы каталога товаров.
Я прекрасно понимаю что это говнокод и поэтому прошу знающих людей оценить, возможно в этом коде где-то есть скрытый баг, возможно все можно сделать гораздо проще? его пока тестили на копии сайта на движке Битрикс-малый бизнес.
Код
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("Деактивация товаров");
?>
<?
if(!CModule::IncludeModule("catalog"))
{
   ShowError(GetMessage("IBLOCK_MODULE_NOT_INSTALLED"));
   return;
}
$ind = 0;
$db_res = CCatalogProduct::GetList(
        array("SORT"=>"ASC"),
        array("QUANTITY" => 0),
        false,
        false,
        false
    );
   
while ($ar_res = $db_res->Fetch())
{
   $res = CIBlockElement::GetByID($ar_res['ID']);
   if($ar_res = $res->GetNext())
      if($ar_res['ACTIVE']=="Y"){
         print $ar_res['ACTIVE'];
         echo " ";
         print $ar_res['ID'];
         echo " ";
         print $ar_res['NAME'];
         echo "</br>";

         $el = new CIBlockElement; 
         $arLoadProductArray = Array( "ACTIVE" => "N",); 
         $res = $el->Update($ar_res['ID'], $arLoadProductArray); 
      }

    $ind++;
}
?>

<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>
спросил 21 Ноя, 13 от Fr3kOut (100 баллов)

1 Ответ

00 голосов
Все ваши модификации сводятся к деактивации товаров, тут ничего особо опасного нет. Правда, вы можете получить пустые разделы в итоге - возможно их так же стоит деактивировать.
ответил 19 Фев, 16 от root (25,590 баллов)

Похожие вопросы

0 голосов
2 ответов
спросил 14 Апр, 14 от Redmond (120 баллов)
0 голосов
3 ответов
спросил 05 Янв, 14 от legoARC (100 баллов)
0 голосов
3 ответов