@anton99zel
29а класс средней школы №7

Как вывести торговые предложения через api в битриксе?

Выведет названия элементов (товаров).
spoiler
<?
CModule::IncludeModule("catalog");
$my_slider = CIBlockElement::GetList (
Array("NAME" => "ASC"),
Array("IBLOCK_ID" => 1),
false,
false,
Array(
'ID', 
'NAME', 
)
);
while($ar_fields = $my_slider->GetNext())
{
echo $ar_fields['NAME'].'</br>';
}
?>

Как вывести у товаров торговые предложения, например символьный код?
  • Вопрос задан
  • 8804 просмотра
Пригласить эксперта
Ответы на вопрос 2
udjin123
@udjin123
PHP, Golang, React
Плохая идея, у вас будет в цикле обращение к базе, ни когда так не делайте.
Тем более метод getOffersList принимает первым параметром массив ID товаров для которых нужно получить торговые предложения
https://dev.1c-bitrix.ru/api_help/catalog/classes/...

Если сделать так, то обойдется все двумя запросами к базе

$elements = [];

CModule::IncludeModule("catalog");
$my_slider = CIBlockElement::GetList (
    Array("NAME" => "ASC"),
    Array("IBLOCK_ID" => 1),
    false,
    false,
    Array(
        'ID',
        'NAME',
    )
);
while($ar_fields = $my_slider->GetNext())
{
    $elements[] = $ar_fields;
}

$productID = array_column($elements, 'ID');

$arSKU = CCatalogSKU::getOffersList(
    $productID,
    0,
    array('ACTIVE' => 'Y'),
    array('ID', 'NAME', 'CODE'),
    array()
);

foreach ($elements as $element) {
    echo $element['NAME'] . '</br>';

    if ($arSKU[$element['ID']]) {
        foreach ($arSKU[$element['ID']] as $offer) {
            echo $offer['CODE'] . '<br>';
        }
    }
}
Ответ написан
Комментировать
@anton99zel Автор вопроса, куратор тега 1С-Битрикс
29а класс средней школы №7
$arSKU = CCatalogSKU::getOffersList($arResult[ID], 0, array('ACTIVE' => 'Y'), array('NAME'), array("CODE"=>array('HEIGHT', 'WIDTH')));
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы