@jorshjorsh95

Почему не работает исключение в arrFilter?

Добрый день, есть условие:
if($_POST['SECTION_ID'] != 4){
		$arrFilter["!SECTION_ID"][] = 4;
	}
	if($_POST['SECTION_ID'] != 27){
		$arrFilter["!SECTION_ID"][] = 27;
	}
	if($_POST['SECTION_ID'] != 3){
		$arrFilter["!SECTION_ID"][] = 3;
	}
	if($_POST['SECTION_ID'] != 2){
		$arrFilter["!SECTION_ID"][] = 2;
	}


НО, оно из выборки CIBlockElement::GetList оно не исключает секции, если оставить в исключении одну секцию:
if($_POST['SECTION_ID'] != 4){
		$arrFilter["!SECTION_ID"] = 27;
	}

, то все работает

На форуме битрикса нашел такой вариант:
if($_POST['SECTION_ID'] != 4){
		$arrFilter[0]["!SECTION_ID"][] = 27;
	}
	if($_POST['SECTION_ID'] != 27){
		$arrFilter[0]["!SECTION_ID"][] = 27;
	}
	if($_POST['SECTION_ID'] != 3){
		$arrFilter[0]["!SECTION_ID"][] = 3;
	}
	if($_POST['SECTION_ID'] != 2){
		$arrFilter[0]["!SECTION_ID"][] = 2;
	}


Вместо SECTION_ID пробовал IBLOCK_SECTION_ID, там вообще не работает фильтрация

Подскжите пожалуйста, почему, и как с этим бороться?
  • Вопрос задан
  • 322 просмотра
Пригласить эксперта
Ответы на вопрос 2
babarun
@babarun Куратор тега 1С-Битрикс
Безумный план моих идей в руках больных людей
Отрицание в фильтре SECTION_ID не будет работать, если элементы привязаны к нескольким разделам, для случая фильтрации по массиву IDшников.
Ответ написан
> На форуме битрикса нашел такой вариант:
Может все же там предлагали что-то такое:
if($_POST['SECTION_ID'] != 27){
$arrFilter[0]["!SECTION_ID"] = 27;
}
if($_POST['SECTION_ID'] != 3){
$arrFilter[1]["!SECTION_ID"] = 3;
}
?

Честно говоря не понятно чего вы этим кодом вообще пытаетесь добиться. Да и сам код страшен, уж извините...
Если у вас есть такая конструкция в коде if(cond1){} if(cond2){} - вы уже делаете что-то не правильно вероятнее всего.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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