Есть несколько вариантов реализации данной задачи.
Какой способ более правильный - сказать не могу, какой способ использовать решайте сами))
1. Вариант - очень давно где-то подсмотрел на сайте...
Создаем множественное свойство "Привязка к элементам" и задаем код свойства к примеру "ACSSESUAR".
и в нужном нам шаблоне выводим.
<? if ($arResult["PROPERTIES"]["ACSSESUAR"]["VALUE"]) { global $myFil; $myFil=array("ID" => $arResult["PROPERTIES"]["ACSSESUAR"]["VALUE"]); $APPLICATION->IncludeComponent( "bitrix:catalog.section", "", array( "FILTER_NAME" => "myFil", ....... "LABEL_PROP_POSITION" => "top-left" ), false ); } ?>
2. Вариант - реализовал сам, пока пользуюсь им (пример в шапке статьи)
Создаем множественное свойство "Привязка к элементам" и задаем код свойства к примеру "sostav", настраиваем инфоблок для связи.
Далее заполняем связи в товаре

Далее в нужном нам шаблоне - в примере (в шапке) используется catalog.section. производим фильтрацию и вывод нужных нам элементов.
<? if($arItem["PROPERTIES"]["sostav"]["VALUE"]){ //если наше свойство заполнено, идем дальше $myFil=array("ID" => $arItem["PROPERTIES"]["sostav"]["VALUE"]); $yvalue = 26; // ИД инфоблока $arSelect = Array("ID", "NAME", "PREVIEW_PICTURE", "DETAIL_PAGE_URL"); //выборка полей $arFilter = Array("IBLOCK_ID"=>IntVal($yvalue), "ACTIVE"=>"Y", $myFil); //фильтрация $res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>50), $arSelect); while($ob = $res->GetNextElement()) { $arFields = $ob->GetFields();?>
<a href="<?=$arFields['DETAIL_PAGE_URL'];?>" class="composition__item detail" data-roll-id="<?=$arFields['ID'];?>"><span><?=$arFields['NAME'];?></span> <div class="composition__item__popover detail" data-roll-id="<?=$arFields['ID'];?>"> <div class="composition__item__image"><img src="<?echo CFile::GetPath($arFields['PREVIEW_PICTURE']);?>"></div> <div class="composition__item__text"> <p class="composition__item__name"><strong><?=$arFields['NAME'];?></strong></p> </div> </div> </a> <?} } ?>