Есть два highload блока. Нужно взять значения из одного и присоединить к ним цены из второго.
Не могу разобраться с join.
Написал такой код:
use Bitrix\Highloadblock\HighloadBlockTable;
use Bitrix\Main\Entity\ReferenceField;
use Bitrix\Main\Entity\Query;
$servicesHLB = HighloadBlockTable::getById(4)->fetch();
$servicesEntity = HighloadBlockTable::compileEntity($servicesHLB);
$servicesClass = $servicesEntity->getDataClass();
$pricesHLB = HighloadBlockTable::getById(6)->fetch();
$pricesEntity = HighloadBlockTable::compileEntity($pricesHLB);
$pricesClass = $pricesEntity->getDataClass();
$hlSelect = array('ID', 'UF_XML_ID', 'UF_NAME', 'UF_TYPE', 'UF_CATEGORY', 'UF_PRICE_LIST', 'UF_SPECIALIZATION');
$hlOrder = array('UF_NAME' => 'ASC');
$hlFilter = array('ID' => $rsItem["UF_DIAGNOSTIC_SERVICES"]); // $rsItem["UF_DIAGNOSTIC_SERVICES"] - содержит массив значений
$rsData = $servicesClass::getList(
array(
'select' => $hlSelect,
'filter' => $hlFilter,
'runtime' => array(
new ReferenceField(
'COST',
$pricesClass,
Query\Join::on('this.UF_PRICE_LIST', 'ref.ID')->where('this.UF_PRICE_LIST', true),
['join_type' => 'LEFT']
),
),
'order' => $hlOrder,
)
);
if ($hlItem = $rsData->fetchAll()) {
AddMessage2Log(print_r($hlItem, 1));
}
в итоге в логи пишется массив значений из первой таблицы без присоединенных из второй.