Обработчик, который деактивирует товары по свойству


ТП Битрикса признало ошибку, что товары по отбору по свойству выгружаются из 1С криво (не все, как-то неправильно отбор товаров работает)
Решение: выгружать все товары без данного отбора, а по определенному свойству товары деактивировать обработчиком

2 обработчика (на добавление, изменение) размещаем в /bitrix/php_interface/init.php
  • 10 - ID инфоблока
  • свойство, в котором укзано, грузить или нет на сайт  (ID свойства 989, код свойства GRUZIT_NA_SAYT)
AddEventHandler("iblock", "OnBeforeIBlockElementUpdate", "MyOnBeforeIBlockElementUpdate");
function MyOnBeforeIBlockElementUpdate(&$arFields){
    if(($_GET['type'] == 'catalog') && ($_GET['mode'] == 'import') && strstr($_GET['filename'], 'import') && ($arFields["IBLOCK_ID"]==10)){
        if(isset($arFields["PROPERTY_VALUES"][989])){            
            foreach ($arFields["PROPERTY_VALUES"][989] as $arValue) {
                if($arValue["VALUE"]=="нет"){
                     $arFields["ACTIVE"] = "N";
                }
            }
        }
        else{
            if((!isset($arFields["ACTIVE"]) || ($arFields["ACTIVE"]=="Y")) && CModule::IncludeModule('iblock')){
                $arSelect = Array("ID", "IBLOCK_ID");
                $arFilter = Array("IBLOCK_ID"=>10, "ID"=>$arFields["ID"], "PROPERTY_GRUZIT_NA_SAYT"=>"нет");
                $res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>1), $arSelect);
                if($arElement = $res->Fetch()){
                    $arFields["ACTIVE"] = "N";
                }
            }
        }                 
    }
}


AddEventHandler("iblock", "OnBeforeIBlockElementAdd", "MyOnBeforeIBlockElementAdd");
function MyOnBeforeIBlockElementAdd(&$arFields){ 
    if($arFields["IBLOCK_ID"]==10){         
        if(isset($arFields["PROPERTY_VALUES"][989])){
            foreach ($arFields["PROPERTY_VALUES"][989] as $arValue) {
                if($arValue["VALUE"]=="нет"){
                     $arFields["ACTIVE"] = "N";
                }
            }        
        }           
    }
}