Битрикс: как деактивировать все разделы и элементы инфоблока

Задача: в нашем распоряжении инфоблок с разделами и элементами. Необходимо массово деактивировать все элементы/разделы.

Решение достаточно простое. Начнем с элементов. Для их выключения нам понадобятся два метода: CIBlockElement::GetList и CIBlockElement::Update. С помощью первого — собираем уникальные идентификаторы всех элементов, с помощью второго — снимаем активность элемента. Код будет следующим:

$arSelect = Array("ID", "NAME", "DATE_ACTIVE_FROM");
$arFilter = Array("IBLOCK_ID"=>$iblock, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y");
$res = CIBlockElement::GetList(Array(), $arFilter, false, Array(), $arSelect);
$i;
while($ob = $res->GetNextElement())
{
$i++;
$el = new CIBlockElement;
$ElementArray = Array("ACTIVE" => "N",);
$arFields = $ob->GetFields();
$el->Update($arFields['ID'], $ElementArray);
}
echo "отключено элементов: ".$i;


В переменной $iblock должен содержаться ID вашего инфоблока.


C разделами инфоблока — ситуация аналогичная. Нам потребуется класс CIBlockSection.

Готовое решение:


$arFilter = Array('IBLOCK_ID'=>$iblock, 'GLOBAL_ACTIVE'=>'Y');
$db_list = CIBlockSection::GetList(Array(), $arFilter, true);
$i;
while($ar_result = $db_list->GetNext())
{
$i++;
$bs = new CIBlockSection;
$arFields = Array("ACTIVE" => "N");
$bs->Update($ar_result['ID'], $arFields);
}
echo "отключено разделов: ".$i;


Денис Бунаков

C 2012 года разрабатываю и поддерживаю сайты на 1С Битрикс. У меня вы можете заказать услуги по разработки или поддержке сайта на битриксе

Битрикс: как деактивировать все разделы и элементы инфоблока