Сам разобрался. Если кому интересно, то в метод с товаром надо обязательно передавать 2 параметра: MODULE и PRODUCT_PROVIDER_CLASS. Т.е:
[CODE]$this->fuser = Bitrix\Sale\Fuser::getIdByUserId($this->userId);
$basket = Bitrix\Sale\Basket::LoadItemsForFUser($this->fuser, SITE_ID);
$res = Bitrix\Catalog\Product\Basket::addProductToBasket($basket, [
'MODULE' => 'catalog',
'PRODUCT_PROVIDER_CLASS' => Catalog\Product\Basket::getDefaultProviderName(),
'PRODUCT_ID' => $itemId,
'QUANTITY' => 1
], ['SITE_ID' => SITE_ID]);
if (!$res->isSuccess()) {
var_dump($res->getErrorMessage());
}
$basket->save();[/CODE]
[CODE]$this->fuser = Bitrix\Sale\Fuser::getIdByUserId($this->userId);
$basket = Bitrix\Sale\Basket::LoadItemsForFUser($this->fuser, SITE_ID);
$res = Bitrix\Catalog\Product\Basket::addProductToBasket($basket, [
'MODULE' => 'catalog',
'PRODUCT_PROVIDER_CLASS' => Catalog\Product\Basket::getDefaultProviderName(),
'PRODUCT_ID' => $itemId,
'QUANTITY' => 1
], ['SITE_ID' => SITE_ID]);
if (!$res->isSuccess()) {
var_dump($res->getErrorMessage());
}
$basket->save();[/CODE]