Обучаю битриксу программистов, интеграторов. Подробнee ⇒

Выборка из highload блоков и подтягивание информации из юзеров



в highload блоке есть поле привязка к юзеру
у юзера есть поле привязка к инфоблоку стран

надо получить часть данных по фильтру из  highload, подтянуть email из юзеров, подтянуть название страны юзера
use Bitrix\Highloadblock\HighloadBlockTable as HLBT;
\Bitrix\Main\Loader::includeModule('iblock');

function GetEntityDataClass($HlBlockId){
    if (empty($HlBlockId) || $HlBlockId < 1 || !CModule::IncludeModule('highloadblock')){
        return false;
    }
    $hlblock = HLBT::getById($HlBlockId)->fetch();
    $entity = HLBT::compileEntity($hlblock);
    $entity_data_class = $entity->getDataClass();
    return $entity_data_class;
}

$entity_data_class = GetEntityDataClass(3);
if($entity_data_class){

    $rsData = $entity_data_class::getList([
       'select' => ['UF_USER'],
       'filter' => ['UF_BETA_TESTING' => 2]
    ]);
    $userIds = [];
    while($el = $rsData->fetch()){
       $userIds[$el["UF_USER"]] = $el["UF_USER"];
    }
    $result = \Bitrix\Main\UserTable::getList([
        'select' => ['ID','NAME',"EMAIL","UF_ISO_COUNTRY"], 
        'filter' => ['ID'=>$userIds],
        'order' => ['LAST_LOGIN'=>'DESC'], 
        'limit' => 700 //я знаю что их 650
    ]);
    $countryIds = [];
    $arUsers = [];

    while ($arUser = $result->fetch()) {
        if(!empty($arUser["UF_ISO_COUNTRY"])){
            $countryIds[$arUser["UF_ISO_COUNTRY"]] = $arUser["UF_ISO_COUNTRY"];
        }
        $arUsers[] = $arUser;
        
    }
    if(!empty($countryIds)){
        $dbItems = \Bitrix\Iblock\Elements\ElementCountriesTable::getList([
            'filter'=>["ID"=>$countryIds], 
            'select' => ['ID', 'NAME'],         
        ]);
        $arCountries = [];
        while ($arCountry = $dbItems->fetch()){ 
            $arCountries[$arCountry["ID"]] = $arCountry["NAME"];
        }
    }
    foreach($arUsers as $arUser){
        echo $arUser["ID"]."|",$arUser["NAME"]."|".$arUser["EMAIL"]."|";
        if(!empty($arUser["UF_ISO_COUNTRY"]) && !empty($arCountries[$arUser["UF_ISO_COUNTRY"]])){
           echo $arCountries[$arUser["UF_ISO_COUNTRY"]];
        }
        echo "<br>";
    }
}
Если блог был полезным, можете угостить меня "чашечкой кофе" :)

Сбер по номеру телефона +7 (953) 585-13-09 Вероника.
Спасибо!