Задать вопрос
@photosho

Почему CIBlockSection::getList() и CIBlockElement::getList() выдают разное количество элементов?

Кто-нибудь сталкивался с тем, что CIBlockSection::getList и CIBlockElement::getList выводят разное количество элементов?

CIBlockSection::getList(
    ['LEFT_MARGIN' => 'ASC'],
    [
        'IBLOCK_ID' => $iblock,
        'GLOBAL_ACTIVE' => 'Y',
        'CNT_ACTIVE' => true,
        'ELEMENT_SUBSECTIONS' => 'Y',
        'PROPERTY' => [
            'MYPROP' => 42//Свойство "Привязка к элементам"
        ]
    ]
);


Выдает 21 элемент в разделе с ID = 191. В каталоге товаров элементов с фильтром по свойству "MYPROP" - 24.

CIBlockElement::getList(
    [],
    [
        'IBLOCK_ID' => $iblock,
        'SECTION_ID' => 191,
        'ACTIVE' => 'Y',
        'INCLUDE_SUBSECTIONS' => 'Y',
        'PROPERTY_MYPROP.ID' => 42//Свойство "Привязка к элементам"
    ],
    false, false,
    ['ID', 'IBLOCK_ID', 'NAME']        
)->selectedRowsCount();


Этот код выдает 24, как и должно быть. Есть ситуации, когда и он выдает не то же число, что показывает каталог, но они крайне редки (с этим потом разбираться будем). В чем может быть проблема? Возможно, я в коде что-то не так написал?
  • Вопрос задан
  • 1514 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
Потому что в первом случае вы подсчитываете все товары в разделе, а во втором только те, у которых PROPERTY_MYPROP.ID == 42

С чего вы взяли что
'PROPERTY' => [
            'MYPROP' => 42//Свойство "Привязка к элементам"
        ]

будет фильтровать элементы при подсчете?
Оно вам отфильтрует раздел в котором есть хотя бы один элемент с таким значением этого свойства, а дальше подсчитает в этом разделе все элементы.

Так что все работает корректно.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы