Получение наборов и комплектов для товара

Получение наборов и комплектов для товара

4842
11.01.2016

Пример кода, позволяющего получить все наборы и комплекты для товара, зная ID товара

С 14 версии ядра битрикса появился очень полезный для маркетологов механизма: наборов и комплектов.

Набор – это предложенный магазином список (рекомендованный список) до трёх товаров, которые отображаются в публичной части магазина, к основному товару для которого набор и создаётся.

Комплект – это список товаров, которые содержатся внутри комплекта и будут списаны с вашего склада при покупке. Сам комплект не имеет физического остатка, его остаток зависит от товаров, которые входят в этот комплект. Удобно применять, например мебельщикам. Для нас, как для клиента интернет-магазина, стол - это товар законченный и целый, а для них - это 4 ножки, столешница, болтики и т.д. Вы покупаете стол, а со склада списываются необходимые комплектующие, из которых состоит этот стол. Примеров применения комплектов можно найти массу.

Более подробно о данных типах товарных предложений можно почитать в презентационной статье от Юрия Волошина, поэтому останавливаться на полезностях данного механизма не буду.

В карточке каждого товара, который состоит в том или ином наборе или комплекте, логично было бы показывать наборы и комплекты, в которых данный товар состоит (в типовом интернет-магазине e-shop от 1С-Битрикс данный функционал отлично уже реализован). Для этого можно воспользоваться такой функцией:

\Bitrix\Main\Loader::includeModule('catalog');
    $rsElem = CCatalogProductSet::getList(
        array(),
        array(
            array(
                'LOGIC' => 'OR',
                'TYPE' => CCatalogProductSet::TYPE_GROUP,
                'TYPE' => CCatalogProductSet::TYPE_SET
            ),
            'ITEM_ID' => $arResult['ID']),
        false,
        false,
        array('SET_ID', 'OWNER_ID', 'ITEM_ID', 'TYPE')
    );
    while ($set = $rsElem->Fetch()) {
        print_r($set);
    }

Данная функция выберет и наборы и комплекты. Если вам нужно получить только один тип товарного предложения - оставьте нужный тип.

Для получения содержимого каждого из товарных предложений, можно воспользоваться функцией:

$arSets = CCatalogProductSet::getList(
        array(), array( "TYPE" => 1, "OWNER_ID" => $set["OWNER_ID"] ), false, false, array()
    );
    while( $set2 = $arSets->Fetch() ){
        if( $set2["OWNER_ID"]!=$set2["ITEM_ID"]  ){
            echo $set2["ITEM_ID"];
        }
    }

Вот такой полезный механизм.



Благодарю за внимание! Делитесь вашими замечаниями в комментариях ниже.


P.S. Обращайтесь ко мне за приобретением лицензий и продлений на 1C-Битрикс "Управление сайтом", лицензий на облачную и коробочную версии Битрикс 24 а также за приобретением и внедрением готовых решений на базе 1С-Битрикс от партнеров. За более подробной информацией свяжитесь со мной любым удобным для вас способом


Комментарии

Еще никто не комментировал данную публикацию. Будьте первыми!

Добавить комментарий

captcha

Возврат к списку