Для того, чтобы программно создать хайлоадблок в 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'])); } } }