Битрикс — скрипт деактивирования товаров, которых нет в наличии

27.01.2021  10:54

Возникла задача: деактивировать товары, которых нет в наличии. Зачем я так и не понял, потому-что в настройках комплексного компонента каталога и так можно указать отображать недоступные товары или не отображать. Похожий скрипт: деактивирования товаров по свойству.

Скрипт недоступным товарам ставит флаг активности N, а доступным наоборот — флаг Y:

$DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"];
if(empty($DOCUMENT_ROOT)){
	$DOCUMENT_ROOT = '/home/public_html';
}
require($DOCUMENT_ROOT."/bitrix/modules/main/include/prolog_before.php");
define("NO_KEEP_STATISTIC", true);
define("NOT_CHECK_PERMISSIONS", true);
ini_set('max_execution_time', '36000');
set_time_limit(0);
ini_set('memory_limit', '512M');
$IBLOCK_ID = 15;
$c = 0;
CModule::IncludeModule("iblock");
CModule::IncludeModule("catalog");
CModule::IncludeModule("sale");
$arFilter = Array(
   "IBLOCK_ID"=>$IBLOCK_ID,
   // "ID"=>123,//для отладки
   // "QUANTITY"=>"0",
   // "SECTION_ID"=>87,
   // "INCLUDE_SUBSECTIONS"=>"Y",
);
$res = CIBlockElement::GetList(Array("ID"=>"ASC"), $arFilter, false, false, Array("ID","NAME","IBLOCK_ID","CODE","QUANTITY","CATALOG_AVAILABLE","ACTIVE"));
while ($ar_fields = $res->GetNext()){
	$ID_ITEM = $ar_fields["ID"];
	// echo $ar_fields["ID"]." - ".$ar_fields["CATALOG_AVAILABLE"]." - ".$ar_fields["ACTIVE"].'
'; if($ar_fields["CATALOG_AVAILABLE"] == "N"){ $arFields = array( 'ID' => $ID_ITEM, 'ACTIVE' => "N", ); } else{ $arFields = array( 'ID' => $ID_ITEM, 'ACTIVE' => "Y", ); } $obE = new CIBlockElement(); if ($obE->Update($ID_ITEM, $arFields)){ $c++; } } echo 'fin: '.$c;


При необходимости в конец можно добавить очистку кеша:
BXClearCache(true, "/");
Андрей Панёвин
Здравствуйте! Я — Андрей Панёвин и занимаюсь профессиональной разработкой сайтов на платформе 1С-Битрикс (исключительно программирование). Есть вопросы по статье? Могу подсказать и помочь по скайпу (andrey.panevin.ru), WhatsApp (+7-911-091-0670), Telegram (@panevin_ru) или перепиской в ВК.
1000 р./час. Часовой пояс — московский.






Помогла статья? На поездку на море (Охотское):


перейти в Блог

Ударим лайками по бездорожью, разгильдяйству и бюрократизму!


Ключевые слова (тэги): 1С-Битрикс 69  PHP 82  web-программирование 107  

Вам есть что сказать — ну я же чую.
Высказаться о наболевшем, я выслушаю-:
Имя


email (не публикуется)