- Модуль: iblock
- Путь к файлу: ~/bitrix/modules/iblock/lib/component/base.php
- Класс: BitrixIblockComponentBase
- Вызов: Base::getSeparateList
protected function getSeparateList(array $params)
{
$list = [];
$selectFields = ['ID', 'IBLOCK_ID'];
if (!empty($params['order']))
{
$selectFields = array_unique(array_merge(
$selectFields,
array_keys($params['order'])
));
}
$iterator = CIBlockElement::GetList(
$params['order'],
$params['filter'],
false,
$params['navigation'],
$selectFields
);
while ($row = $iterator->Fetch())
{
$id = (int)$row['ID'];
$list[$id] = [
'ID' => $row['ID'],
'IBLOCK_ID' => $row['IBLOCK_ID'],
];
}
unset($row);
if (!empty($list))
{
$fullIterator = CIBlockElement::GetList(
[],
['IBLOCK_ID' => $params['filter']['IBLOCK_ID'], 'ID' => array_keys($list), 'SITE_ID' => $this->getSiteId()],
false,
false,
$params['select']
);
while ($row = $fullIterator->Fetch())
{
$id = (int)$row['ID'];
$list[$id] = $list[$id] + $row;
}
unset($row, $fullIterator);
$iterator->InitFromArray(array_values($list));
}
return $iterator;
}