@sneeskaa

Почему не работает получение списка товаров в Bitrix d7?

Нужно получить список товаров в корзине с ID раздела 114. Для этого воспользовался функцией с оф. документации:
<? $dbRes = \Bitrix\Sale\Basket::getList([
    'select' => ['NAME', 'QUANTITY'],
    'filter' => [      
        '=IBLOCK_SECTION_ID' => '114',
        '=FUSER_ID' => \Bitrix\Sale\Fuser::getId(), 
        '=ORDER_ID' => null,
        '=LID' => \Bitrix\Main\Context::getCurrent()->getSite(),
        '=CAN_BUY' => 'Y',
    ]
]);

while ($item = $dbRes->fetch())
{
    var_dump($item);
   
}
?>


Открыл таблицу, в которой содержатся товары. ID раздела там называется IBLOCK_SECTION_ID, но именно возвращается ошибка:
Unknown field definition `IBLOCK_SECTION_ID` (IBLOCK_SECTION_ID) for \Bitrix\Sale\Internals\Basket Entity. (100)


Понятно, что накосячил - вопрос где?
  • Вопрос задан
  • 816 просмотров
Пригласить эксперта
Ответы на вопрос 2
@anton99zel Куратор тега 1С-Битрикс
29а класс средней школы №7
<?
require_once($_SERVER['DOCUMENT_ROOT'] . "/bitrix/modules/main/include/prolog_before.php");//подключить, если надо
use Bitrix\Sale;
$dbRes = \Bitrix\Sale\Basket::getList(array(
        'filter' => array(
        'FUSER_ID' => Sale\Fuser::getId(), 
        'ORDER_ID' => null,
        'LID' => SITE_ID,
        'CAN_BUY' => 'Y',
    ),
'select' => array('PRODUCT_ID', 'NAME'),
));
while ($item = $dbRes->fetch())
{
$res = CIBlockElement::GetByID($item);
if($arRes = $res->Fetch()) 
if ($arRes[IBLOCK_SECTION_ID] == '114') //покажем только из раздела с id 114
print_r ($item[NAME].'</br>');//выведем названия
}
?>

Basket::getList - не содержит разделы!
Ответ написан
@RuComMarket
Битрикс FullStack разработчик
столбец IBLOCK_SECTION_ID не содержится в b_sale_basket
надо через join доставать
соответственно добавляем runtime
'runtime' => [
'ELEMENT' => [
            'data_type' => '\Bitrix\Iblock\ElementTable',
            'reference' => ['=this.PRODUCT_ID' => 'ref.ID'],
            'join_type' => 'left'
        ],
]

а в фильтр добавляем
'=ELEMENT.IBLOCK_SECTION_ID' => 114
или в getMap корзины вроде есть PRODUCT связывающий с товаром, можно попробовать в фильтре без runtime
'=PRODUCT.IBLOCK_SECTION_ID' => 114
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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