Только самовывоз для некоторых товаров в 1C битрикс

2021.01.29
Для того что бы разрешить только самовывоз когда у вас в заказе появляются определенные товары, необходимо:
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';
    }
}
    
Текст сообщения*
Загрузить файл или картинкуПеретащить с помощью Drag'n'drop
Перетащите файлы
Ничего не найдено
Защита от автоматических сообщений