Памятка по работе с хайлодблоками в 1С-Битрикс


Для того, чтобы программно создать хайлоадблок в 1С-Битрикс:

$data = array(
'NAME' => str_replace('_','',trim("H".$tableName)),
'TABLE_NAME' => trim($tableName)
);
$result = BitrixHighloadblockHighloadBlockTable::add($data);
if ($result->isSuccess())
{
$ID = $result->getId();
$oUserTypeEntity    = new CUserTypeEntity();
$aUserFields    = array(
'ENTITY_ID'         => 'HLBLOCK_'.$ID,
'FIELD_NAME'        => 'UF_MYFIELD',
'USER_TYPE_ID'      => 'string',
'MULTIPLE'          => 'N',
'MANDATORY'         => 'N',
'SHOW_FILTER'       => 'I',
'EDIT_FORM_LABEL'   => array(
'ru'    => 'MYFIELD',
'en'    => 'MYFIELD',
)
);
 
$iUserFieldId   = $oUserTypeEntity->Add( $aUserFields );
                .....
        }
else{
       $errors = $result->getErrorMessages();
print_r($errors);
}

Проверка существования, добавление/апдейт элемента хайлоадблока:

if (CModule::IncludeModule("highloadblock")){ CModule::IncludeModule("main"); //Уровни поддержки $arSLAIDbyXMLID=array(); $rsSLA = CUserFieldEnum::GetList(array(), array( "USER_FIELD_ID" => 85,<br ?--> ));
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 = BitrixHighloadblockHighloadBlockTable::getList(array('filter'=>array('TABLE_NAME'=>"ts_time")));
 
if ($HLBlock = $HLData->fetch())
{
$HLBlock_entity = BitrixHighloadblockHighloadBlockTable::compileEntity($HLBlock);
$main_query = new BitrixMainEntityQuery($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']));
 
}
 
}
}

Поиск в хайлоад блоке по XML_ID списочного поля:

if (CModule::IncludeModule("highloadblock")){ CModule::IncludeModule("main"); //Уровни поддержки $arSLAIDbyXMLID=array(); $rsSLA = CUserFieldEnum::GetList(array(), array( "USER_FIELD_ID" => 85,<br ?--> ));
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 = BitrixHighloadblockHighloadBlockTable::getList(array('filter'=>array('TABLE_NAME'=>"ts_time")));
 
if ($HLBlock = $HLData->fetch())
{
$HLBlock_entity = BitrixHighloadblockHighloadBlockTable::compileEntity($HLBlock);
$main_query = new BitrixMainEntityQuery($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']));
 
}
 
}
}

 

,

Добавить комментарий

Ваш адрес email не будет опубликован.