Anadi
@Anadi
Если ответ Вам помог мой, решением отметье его!

Как правильно сделать фильтр со сложной логикой?

Привет всем!

Пытаюсь вывести минимальное значение свойства "PROPERTY_SIZE" (число) всех элементов в разделе. Значение собственно получаю, но не много не так работает логика. Делаю выборку:
$arOrder = array("sort" => "asc");
    $arFilter = array("IBLOCK_ID" => $arSection["IBLOCK_ID"], "SECTION_ID" => $arSection["ID"], "GLOBAL_ACTIVE" => "Y", "ACTIVE" => "Y", "INCLUDE_SUBSECTIONS" => "Y", array(
            "LOGIC" => "OR",
            array("PROPERTY_DESTINATION_VALUE" => "TOP", "PROPERTY_DESTINATION_VALUE" => "MIDDLE", "PROPERTY_DESTINATION_VALUE" => "BOTTOM"),
        ),
        "!PROPERTY_SIZE" => false
    );
    $arSelect = array("IBLOCK_ID", "ID", "NAME", "PROPERTY_SIZE");

    $res = CIBlockElement::GetList($arOrder, $arFilter, false, array("nTopCount" => 1), $arSelect);
    if ($ob = $res->Fetch())
        $arSection["MIN_SIZE"] = $ob["PROPERTY_SIZE_VALUE"];


В разделе у элементов может быть одно значение "TOP, MIDDLE, BOTTOM" свойства "PROPERTY_DESTINATION_VALUE"

В первом разделе 10 элементов со значением свойства (5 - TOP, 3 -MIDDLE, 2 - BOTTOM);
Во втором разделе 10 элементов со значением свойства (8 - MIDDLE, 2 - BOTTOM):
В третьем разделе 5 элементов со значением свойства (5 - BOTTOM):

Как правильно составить фильтр, чтоб для первого раздела выборка прошла по значению TOP, для второго раздела по значению MIDDLE и для третьего по значению BOTTOM, т.е. чтоб был приоритет выборки 1 - TOP, 2 - MIDDLE, 3 - BOTTOM
  • Вопрос задан
  • 761 просмотр
Пригласить эксперта
Ответы на вопрос 1
gromdron
@gromdron
Работаю с Bitrix24
Скорее всего такую логику Битрикс уже не осилит и Вам нужно обращаться в SQL и формировать уже прямой запрос в БД. Либо, можно сделать промежуточную таблицу/инфоблок/хайлоадблок и уже искать там.
Ответ написан
Ваш ответ на вопрос

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

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