в 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>"; } } |