среда, 23 сентября 2015 г.

Если нужно найти что-то в хайлоад блоке Битрикс по XML_ID списочного поля - себе на память


<?if (CModule::IncludeModule("highloadblock")){

CModule::IncludeModule("main");
//Уровни поддержки
$arSLAIDbyXMLID=array();
$rsSLA = CUserFieldEnum::GetList(array(), array(
            "USER_FIELD_ID" => 85,
        ));
while($arSLA = $rsSLA->GetNext()){
 $arSLAIDbyXMLID[$arSLA['XML_ID']]=$arSLA['ID'];
}


//Критичность
$arCritIDbyXMLID=array();
$rsCrit = CUserFieldEnum::GetList(array(), array(
            "USER_FIELD_ID" => 87,
        ));
while($arCrit = $rsCrit->GetNext()){
 $arCritIDbyXMLID[$arCrit['XML_ID']]=$arCrit['ID'];
}

//Категория
$arCatIDbyXMLID=array();
$rsCat = CUserFieldEnum::GetList(array(), array(
            "USER_FIELD_ID" => 89,
        ));
while($arCat = $rsCat->GetNext()){
 $arCatIDbyXMLID[$arCat['XML_ID']]=$arCat['ID'];
}

$HLData = \Bitrix\Highloadblock\HighloadBlockTable::getList(array('filter'=>array('TABLE_NAME'=>"ts_time")));

if ($HLBlock = $HLData->fetch())
    {
     $HLBlock_entity = \Bitrix\Highloadblock\HighloadBlockTable::compileEntity($HLBlock);
     $main_query = new \Bitrix\Main\Entity\Query($HLBlock_entity);
     $main_query->setSelect(array('*'));
    
     $main_query->setFilter(array('UF_TS_LEVEL'=>$arSLAIDbyXMLID[1],'UF_CRITICALITY'=>$arCritIDbyXMLID[5],'UF_SECTION'=>$arCatIDbyXMLID[37]));

     
      //Выполним запрос
     $res_query = $main_query->exec();

     //Получаем результат по привычной схеме
     $res_query = new CDBResult($res_query); 
     if ($row = $res_query->Fetch())
      {

       print_r($row );
      }
     else{
      print_r(array('UF_TS_LEVEL'=>$arFields[ 'SLA_ID'],"UF_SECTION"=>$arFields[ 'CATEGORY_ID'],"UF_CRITICALITY"=>$arFields['CRITICALITY_ID']));

     }

    }
  }?>


Комментариев нет: