Введите поисковый запрос

Получаем количество элементов инфоблока 1С-Битрикс

Рассказываю как вывести количество элементов инфоблока

Наверное многие, читая руководство для разработчиков битрикса, опускают некоторые моменты и особенности. А затем мучаются и пишут костыли для решения той или иной задачи или проблемы.
А нужно лишь вернуться к определенной его теме и еще раз внимательно все прочитать.

Возьмем типичный пример: нужно посчитать количество элементов в инфоблоке, которые соответствуют каким-то параметрам. Что обычно делают люди: делают выборку, затем формируют в цикле массив элементов. После этого либо в цикле устанавливают счетчик для подсчета, либо после формирования массива выполняют функцию count(), которая высчитывает количество элементов.

Но зачем проделывать столько ненужных манипуляций, ведь все решается гораздо проще:

 
//подключаем модуль инфоблоков, если он не подключен ранее 
CModule::IncludeModule("iblock");
//id нужного инфоблока
$iblock_id = 3;
$arFilter = Array("IBLOCK_ID"=>$iblock_id, "ACTIVE"=>"Y");
$res_count = CIBlockElement::GetList(Array(), $arFilter, Array(), false, Array());


На выходе, в переменной $res_count будет значение количества элементов, соответствующих указанному фильтру. В нашем случае это все активные элементы из инфоблока с ID равным 3.

Чем эта конструкция отличается от типичных конструкций по выборке элементов? Дело в том, что мы третьим параметром (arGroupBy) в методе GetList указали пустой массив - Array(). Посмотрим, что нам говорит на этот счет документация:

"arGroupBy - Массив полей для группировки элемента. Если поля указаны, то выборка по ним группируется (при этом параметр arSelectFields будет проигнорирован), а в результат добавляется поле CNT - количество сгруппированных элементов. Если указать в качестве arGroupBy пустой массив, то метод вернет количество элементов CNT по фильтру."

Что мы, собственно, и сделали. Обычно третий параметр выставляют в false, тогда происходит обычная выборка элементов со всеми полями и свойствами, которые мы указали в arSelectFields. Но стоит только вместо false указать пустой массив Array() и метод GetList вернет нам количество элементов.


Пример реализации кода:



Ваша оценка:

Комментарии (0)


Оставить заявку
 
 

Денис Бунаков

C 2012 года являюсь Битрикс Программистом.
Программист 1С:Битрикс – это веб-разработчик с узким профилем, который работает непосредственно с продукцией от компании 1С.