Деактивация разделов и елементов после обмена из 1С в Битрикс

Если получается так что после обмена из 1С на сайт выгружаются разделы и элементы которые не нужно отображать на сайте, и нет скажем возможности исключить их из обмена. Эту проблему можно решить деактивацией ненужных разделов и элементов сразу после обмена, код в примере пишем в init.php.
logo
logo
PHP
//Получаем все разделы не для сайта
function getListSectionsNotSite()
{
    CModule::IncludeModule("iblock");

    $iblock_id  = 35;
    $section_id = 4766;
    $sections   = [];
    $CashName   = "sections_not_site";
    $obCache    = new CPHPCache();
    $timeCache  = 86400; // 24 часа

    if($obCache->InitCache($timeCache, $CashName))
    {
        $sections = $obCache->GetVars();
    }
    elseif($obCache->StartDataCache())
    {

    	$rs = CIBlockSection::GetList(
            array(),
            array(
                'IBLOCK_ID' => $iblock_id,
                'ID'        => $section_id,
            )
        );
        $ar = $rs->GetNext();

        $rs = CIBlockSection::GetList(
            array('LEFT_MARGIN' => 'ASC'),
            array(
                'IBLOCK_ID'     => $iblock_id,
                '>LEFT_MARGIN'  => $ar['LEFT_MARGIN'],
                '<RIGHT_MARGIN' => $ar['RIGHT_MARGIN'],
            )
        );

        while($arSect = $rs->GetNext())
        {
            $sections[] = $arSect['ID'];
        }
        
        $obCache->EndDataCache($sections);
    }

    return $sections;
}


//Деактивируем разделы и елементы не для сайта после обмена из 1С
AddEventHandler('catalog', 'OnSuccessCatalogImport1C', 'deactivationSectionsAndElements');
function deactivationSectionsAndElements()
{
	CModule::IncludeModule("iblock");
    $iblock_id = 35;

    //Выбираем разделы для деактивации
	$sections_not_site = getListSectionsNotSite();

    //Деактивируем разделы 
	$bs = new CIBlockSection;
	$arr = Array(
             "ACTIVE" => "N",
            );

	foreach ($sections_not_site as $key => $section_id) 
	{
		$bs->Update($section_id, $arr);
	}

    //Деактивируем елементы
	$arFilter = Array("IBLOCK_ID" => $iblock_id, "ACTIVE" => "Y", "IBLOCK_SECTION_ID" => $sections_not_site);
    $res = CIBlockElement::GetList(Array(), $arFilter, false, false, Array());

    $el = new CIBlockElement;
    $arr = Array(
             "ACTIVE" => "N",
            );

    while($ob = $res->GetNextElement())
    {
       $arFields = $ob->GetFields();
       $el->Update($arFields['ID'], $arr);
    }
}

Спасибо! Заявка успешно отправлена, мы с Вами свяжемся в ближайшее время!