$Cart = Sale\Basket::loadItemsForFUser(Sale\Fuser::getId(), Bitrix\Main\Context::getCurrent()->getSite());
$item = $Cart->createItem('catalog', 666);
$item->setFields(array(
'PRODUCT_PRICE_ID' => 0,
'PRICE' => -(int)$Price,
'CURRENCY' => 'RUB',
'QUANTITY' => 1,
'LID' => Bitrix\Main\Context::getCurrent()->getSite(),
'CUSTOM_PRICE' => 'Y',
'NAME' => 'Скидон - '.$Price,
));
$Cart->save();
[Error]
Call to a member function GetProperties() on boolean (0)
/var/www/....php:17
17 строка: $articul= CIBlockElement::GetByID($mxResult['ID'])->GetNextElement()->GetProperties();
$articul= CIBlockElement::GetByID($mxResult['ID'])->GetNextElement()->GetProperties();
разные вещи. На каком сайте ты такой говнокод увидел?$articul = [];
$dbRes = CIBlockElement::GetByID($mxResult['ID']);
if($ob = $dbRes->GetNextElement()) {
$articul = $ob->GetProperties();
}
так ты показываешь вырванный кусок кода, где взаимосвязь первого и второго?
foreach ($arResult["GRID"]["ROWS"] as $id )
{
$mxResult = CCatalogSku::GetProductInfo($id['data']['PRODUCT_ID']);
на эту 17 строку ссылается: $articul= CIBlockElement::GetByID($mxResult['ID'])->GetNextElement()->GetProperties();
//print_r($articul['ARTNUMBER']['VALUE']); echo '<br><br>';
$arFilter = Array("IBLOCK_ID"=>26, "NAME"=>$articul['ARTNUMBER']['VALUE']);
$arSelect = Array("ID", "IBLOCK_ID", "NAME", "code");
$res = CIBlockElement::GetList(Array(), $arFilter, false, Array(), $arSelect);
...
$mxResult = CCatalogSku::GetProductInfo($id['data']['PRODUCT_ID']);
CIBlockElement::GetByID($mxResult['ID'])->GetNextElement()
возвращает boolean false, потому что нет у тебя $mxResult['ID'], а затем на этом false ты вызываешь метод GetProperties(). Улавливаешь? Call to a member function GetProperties() on boolean если в товар добавить торговое предложение
думаю проблема в том, что какой-то товар не торговое предложение
епт, и че я должен понять в твоем var_dumpe, а как можно еще показать что в $arResult["GRID"]["ROWS"]? Если показать, что идет после foreach, то после идет сразу тот код:
foreach ($arResult["GRID"]["ROWS"] as $id )
{
$mxResult = CCatalogSku::GetProductInfo($id['data']['PRODUCT_ID']);
$articul= CIBlockElement::GetByID($mxResult['ID'])->GetNextElement()->GetProperties();
$arFilter = Array("IBLOCK_ID"=>26, "NAME"=>$articul['ARTNUMBER']['VALUE']);
$arSelect = Array("ID", "IBLOCK_ID", "NAME", "code");
$res = CIBlockElement::GetList(Array(), $arFilter, false, Array(), $arSelect);
...
$mxResult = CCatalogSku::GetProductInfo($id['data']['PRODUCT_ID']);
$mxResult['ID'] = isset($mxResult['ID']) ? $mxResult['ID'] : $id['data']['PRODUCT_ID'];
echo 'First product id = '.current($arResult["GRID"]["ROWS"])['data']['PRODUCT_ID'].'<br>';
foreach ($arResult["GRID"]["ROWS"] as $id )
{
echo '<pre> product id';
print_r($id['data']['PRODUCT_ID']);
echo '</pre>';
$mxResult = CCatalogSku::GetProductInfo($id['data']['PRODUCT_ID']);
echo '<pre> product info';
print_r($mxResult);
echo '</pre>';
//..............
First product id = 35733
product id35733
product infoArray
(
[ID] => 34989
[IBLOCK_ID] => 2
[OFFER_IBLOCK_ID] => 3
[SKU_PROPERTY_ID] => 28
)
product id55619
product infoArray
(
[ID] => 41383
[IBLOCK_ID] => 2
[OFFER_IBLOCK_ID] => 3
[SKU_PROPERTY_ID] => 28
)
product id135215
product info
[Error]
Call to a member function GetProperties() on boolean (0)
foreach ($arResult["GRID"]["ROWS"] as $id )
{
$mxResult = CCatalogSku::GetProductInfo($id['data']['PRODUCT_ID']);
$productId = $mxResult ? $mxResult['ID'] : $id['data']['PRODUCT_ID'];
$articul = [];
$dbRes = CIBlockElement::GetByID($productId);
if($ob = $dbRes->GetNextElement()) {
$articul = $ob->GetProperties();
}
if($articul) {
$arFilter = Array("IBLOCK_ID"=>26, "NAME"=>$articul['ARTNUMBER']['VALUE']);
$arSelect = Array("ID", "IBLOCK_ID", "NAME", "code");
$res = CIBlockElement::GetList(Array(), $arFilter, false, Array(), $arSelect);
//..............
}
$item = $Cart->createItem('catalog', 135215); //создаём новый товар в корзине
$item->setFields(array(
'CURRENCY' => 'RUB',
'QUANTITY' => 1,
'LID' => Bitrix\Main\Context::getCurrent()->getSite(),
'PRICE' => -(int)$Price,
'CUSTOM_PRICE' => 'Y',
'NAME' => 'Скидон- '.$Price,
));
$articul= CIBlockElement::GetByID($mxResult['ID'])->GetNextElement()->GetProperties();
$articul = [];
$dbRes = CIBlockElement::GetByID($mxResult['ID']);
if($ob = $dbRes->GetNextElement()) {
$articul = $ob->GetProperties();
}