link0802
@link0802

Множественная привязка к элементам и фильтрация через GetList

Есть свойство, которое является привязкой к элементам. (к примеру PROPERTY_GOAL). Нужно через CIBlockElement::GetList вывести все элементы в свойствах которых идет привязка к определенному элементу, но нет привязки к другому элементу. Известно ID привязных блоков по которых нужно фильтровать.
Как правильно задать $arFilter? Пока максимум к чему дошел:
$arFilter = array(
"IBLOCK_ID"=>$blocks, 
"IBLOCK_SECTION_ID"=>$sectionIDS, 
"PROPERTY_GOAL.ID"=>466,  //если в свойстве GOAL  указана привязка к элементу с ID 466
"!PROPERTY_GOAL.ID"=>462, // и нет привязка к элементу с ID 462, то данный элемент подходит и попадает в $arResult 
"PROPERTY_RECOMEND_VALUE"=>"да",
"ACTIVE_DATE"=>"Y", 
"ACTIVE"=>"Y");

Подобная фильтрация работает, но хотелось бы быть уверенным что работает она на 100% правильно. Буду рад любой помощи/подсказкам и т.д.
  • Вопрос задан
  • 8422 просмотра
Пригласить эксперта
Ответы на вопрос 2
vasilyev
@vasilyev
php, 1c-bitrix
Хотелось бы, чтобы вы рассказали, в каком месте именно вы не уверены, потому код-то правильный и как вы говорите, работает.

С другой стороны, если я правильно понимаю, можно использовать просто конструкции "PROPERTY_GOAL_VALUE" и "!PROPERTY_GOAL_VALUE" (если они корректно отработают при множественном значении параметра). Мне кажется, что раз уж привязка идет все равно по ID (PROPERTY_GOAL_VALUE будет содержать как раз ID элементов, к которым привязаны) то нет смысла вытаскивать ID из привязанного элемента.
Ответ написан
rixaman
@rixaman
Фильтр со сложной логикой
Под параметрами вызова в документации.

Примерно так.
$arFilter = array(
"IBLOCK_ID"=>$blocks,
"IBLOCK_SECTION_ID"=>$sectionIDS,
array(
"LOGIC" => "AND",
array("PROPERTY_GOAL.ID" => 466),
array("!PROPERTY_GOAL.ID" => 462),
),
"PROPERTY_RECOMEND_VALUE"=>"да",
"ACTIVE_DATE"=>"Y",
"ACTIVE"=>"Y");
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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