От нашего клиента поступила задача. Надо сделать так, чтобы клиент добавлял товар А в корзину, но в корзину добавлялся товар А и В, или только В. Как такое может быть, например вы покупаете стол, он состоит из столешницы и 4 ножек. У клиента в каталоге есть товары как отдельно: ножка, столешница, так и стол в целом. Кто-то может сам собрать себе стол и подберет себе столешницу и ножки, а кто-то не хочет этим заниматься и готов выбрать готовый вариант. Так вот если клиент добавляет товар «стол» в корзину, то в корзине отображались товары: 1 «столешница» и 4 «ножки».
Что-же мы сделаем. Чтобы удалить товар нам понадобиться ID товара и вставить в код для удаление. Чтобы добавить товар нам также понадобиться ID товара.
//добавление товара if ($arResult['ID'] == 2872) { $fields = [ 'PRODUCT_ID' => 2872, //ID моего товара 'QUANTITY' => 1 ]; $fields1 = [ 'PRODUCT_ID' => 2940, //ID моего товара 'QUANTITY' => 4 ]; $r = Bitrix\Catalog\Product\Basket::addProduct($fields); $rr = Bitrix\Catalog\Product\Basket::addProduct($fields1); if (!$r->isSuccess()) { //ну и проверочка, для дебага var_dump($r->getErrorMessages()); } } // Удаление товаров if (CModule::IncludeModule('sale')) { $dbBasketItems = CSaleBasket::GetList(array(),array( 'FUSER_ID' => CSaleBasket::GetBasketUserID(), 'LID' => SITE_ID, 'ORDER_ID' => 'NULL', 'PRODUCT_ID' => 2872)); if ($arBasket = $dbBasketItems->Fetch()) { CSaleBasket::Delete($arBasket['ID']); } }