mills
@mills

Фильтрация сразу по двум инфоблокам, как лучше реализовать?

Всем привет. Делаю фильтрацию по двум инфоблокам для получения ID элемента
То есть делаю фильтрацию по каталогу и торговому предложению что бы вывести нужные ID товаров каталога. Но что то не выходит, 36 инфоблок не фильтрует...

Пытаюсь отфильтровать сразу 2 инфоблока и разделить уже в while по инфоблокам , что бы из ТП товаров получить ID главного товара каталога.

$pvalues выглядит так

[PROPERTY_605] => Array
        (
            [0] => 358
        )
    [PROPERTY_687] => Array
        (
            [0] => 8490
     )


Вот мой код:
$IDitems = [];
	$IDitemsOf = [];

	$arSelect = Array("ID", "IBLOCK_ID");
	$arFilter = Array("ACTIVE" => "Y", array("LOGIC" => "OR", array('IBLOCK_ID' => 36, $pvalues), array('IBLOCK_ID' => 21, $pvalues)));
	$res = CIBlockElement::GetList(false, $arFilter, false, false, $arSelect);

	while ($ob = $res->GetNextElement()){
		$arFields = $ob->GetFields(); 
		$arProps = $ob->GetProperties();
	
		if($arFields['IBLOCK_ID'] == 21){
			$IDitems[] = $arFields['ID'];
		}
		if($arFields['IBLOCK_ID'] == 36){
			$mxResult = CCatalogSku::GetProductInfo(
				$arFields['ID']
			);
			$IDitemsOf[] = $mxResult['ID'];
		}
	}
	$result = array_merge($IDitems, $IDitemsOf);


$result - я уже вписываю в глобальный фильтр по комплексному компоненту catalog
  • Вопрос задан
  • 190 просмотров
Пригласить эксперта
Ответы на вопрос 1
@tgarl
Одинаковые ID не могут быть в двух инфоблоках, поэтому фильтр с использованием ID свойства бесполезен в вашем случае и скорее всего правильно отрабатывает - ничего не показывает в одном из инфоблоков.

Если у вас свойства одинаковые в инфоблоках, то используйте PROPERTY_Код_вашего_свойства
И учтите что вот такой фильтр как у вас по свойству работает как AND
т.е. PROPERTY_605=358 и PROPERTY_687=8490
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы