В методе добавления товара в корзину, добавляю к айтему свойства:
if ($props) {
$propertyCollection = $item->getPropertyCollection();
$propertyCollection->getPropertyValues();
$propertyCollection->setProperty($props);
$propertyCollection->save();
$item->setPropertyCollection($propertyCollection);
$arDebug['propertyCollection'] = $item->getPropertyCollection()->getPropertyValues();
}
Судя по возвращаемым значениям свойства успешно добавляются.
Но потом, при просмотре товаров в корзине у данного товара коллекция свойств пуста, как будт-то бы коллекция не сохранилась. В чем может быть проблема?
На всякий случай:
полный код метода
public function addProductAction (int $productid, int $quantity=1, array $props=[]): array
{
$arDebug = ['$productid' => $productid, '$quantity' => $quantity];
if ($productid > 0) {
if ($item = $this->basket->getExistsItem('catalog', $productid)) {
$arDebug['action'] = 'update';
$item->setField('QUANTITY', $item->getQuantity() + $quantity);
} else {
$arDebug['action'] = 'add';
$item = $this->basket->createItem('catalog', $productid);
$item->setFields([
'QUANTITY' => $quantity,
'CURRENCY' => \Bitrix\Currency\CurrencyManager::getBaseCurrency(),
'LID' => \Bitrix\Main\Context::getCurrent()->getSite(),
'PRODUCT_PROVIDER_CLASS' => 'CCatalogProductProvider'
]);
if ($props) {
$propertyCollection = $item->getPropertyCollection();
$propertyCollection->getPropertyValues();
$propertyCollection->setProperty($props);
$propertyCollection->save();
$item->setPropertyCollection($propertyCollection);
$arDebug['propertyCollection'] = $item->getPropertyCollection()->getPropertyValues();
}
$item->save();
}
$this->basket->save();
}
$arResponce = $this->getAction();
if (APPLICATION_ENV == 'dev') $arResponce['debug'] = $arDebug;
return $arResponce;
}