Только самовывоз для некоторых товаров в 1C битрикс
2021.01.29
Для того что бы разрешить только самовывоз когда у вас в заказе появляются определенные товары, необходимо:
1) Создать группу товаров для которой будет разрешен только самовывоз (можно деактивировать что бы не было видно в публичной части)
2) Привязать товары дополнительно к этой группе
3) в init.php добавить код представленный ниже
1) Создать группу товаров для которой будет разрешен только самовывоз (можно деактивировать что бы не было видно в публичной части)
2) Привязать товары дополнительно к этой группе
3) в init.php добавить код представленный ниже
AddEventHandler("sale", "OnSaleComponentOrderOneStepDelivery", "MyOnBeforeDev"); function MyOnBeforeDev(&$arResult, $arUserResult, $arParams) { $IBLOCK_ID = 17; /* Инфоблок товаров */ $SECTION_ID = 183; /* Раздел которому разрешен только самовывоз */ foreach ($arResult['BASKET_ITEMS'] as $oneItem){ $filter[] = $oneItem['PRODUCT_ID']; } $arFilter = array( 'ID' => $filter, 'IBLOCK_ID' => $IBLOCK_ID, 'SECTION_ID' => $SECTION_ID ); $res = CIBlockElement::GetList(array(), $arFilter, false, false,array('ID')); if ($ob = $res->fetch()){ /* удаляем все ненужные службы доставки */ unset($arResult['DELIVERY'][14]); unset($arResult['DELIVERY'][8]); unset($arResult['DELIVERY'][5]); unset($arResult['DELIVERY'][1]); /* Нужную в данном случае это "Самовывоз" делаем активной */ $arResult['DELIVERY'][2]['CHECKED'] = 'Y'; } }