- Модуль: catalog
- Путь к файлу: ~/bitrix/modules/catalog/lib/controller/skutree.php
- Класс: BitrixCatalogControllerSkuTree
- Вызов: SkuTree::getSkuAction
public function getSkuAction(int $skuId): array
{
$iterator = CIBlockElement::GetList(
[],
[
'ID' => $skuId,
'ACTIVE' => 'Y',
'ACTIVE_DATE' => 'Y',
'CHECK_PERMISSIONS' => 'Y',
'MIN_PERMISSION' => 'R',
],
false,
false,
['ID', 'IBLOCK_ID']
);
$element = $iterator->Fetch();
if (!$element)
{
return [];
}
unset($iterator);
$skuRepository = ServiceContainer::getSkuRepository($element['IBLOCK_ID']);
if (!$skuRepository)
{
return [];
}
/** @var BaseSku $sku */
$sku = $skuRepository->getEntityById($skuId);
if (!$sku || $sku->isSimple())
{
return [];
}
$parentProduct = $sku->getParent();
if (!$parentProduct)
{
return [];
}
/** @var BitrixCatalogComponentSkuTree $skuTree */
$skuTree = ServiceContainer::make('sku.tree', [
'iblockId' => $parentProduct->getIblockId(),
]);
if (!$skuTree)
{
return [];
}
$productId = $parentProduct->getId();
$offers = $skuTree->loadWithSelectedOffers([
$productId => $skuId,
]);
if ($offers[$productId][$skuId] && is_array($offers[$productId][$skuId]['OFFERS']))
{
foreach ($offers[$productId][$skuId]['OFFERS'] as $offer)
{
if ((int)$offer['ID'] === $skuId)
{
unset($offer['DISPLAY_PROPERTIES'], $offer['PROPERTIES']);
return $offer;
}
}
}
return [];
}