Битрикс – как посчитать количество активных элементов в разделе

Есть несколько способов посчитать такое число, но какой же из способов покажет наиболее точную цифру? Давайте разбираться.

Выводим количество товаров раздела в Битриксе

Начнем с неправильного способа 🙂 .
Делается он при помощи устаревшего метода CIBlockSection::GetSectionElementsCount. Как он работает:

$activeElements = CIBlockSection::GetSectionElementsCount($arSection["ID"], Array("CNT_ACTIVE"=>"Y"));

Для большинства случаев такой код сгодится, даже несмотря на то что такой метод считается устаревшим в документации.
$arSection[“ID”] – ID нужного раздела, который нам необходимо передать для точного получения.

А не правильный он потому, что в большинстве случаев нам нужно не просто посчитать количество активных товаров, а еще и применить фильтр, у которых количество на складе больше 0.

Делается это при помощи GetList, притом не Section, а именно Element:

$activeElements = CIBlockElement::GetList (
	Array("ID" => "ASC"),
	Array("SECTION_ID" => $arSection["ID"], "ACTIVE" => "Y", ">CATALOG_QUANTITY" => 0),
	array(),
	false,
	Array('ID')
);

Помимо этого данный способ также хорош тем, что его проще масштабировать – вы легко можете добавить в него свои условия, и дописать в arFilter – PROPERTY_EXIST => ‘Y’ (ваше кастомное свойство тип список), или же >PROPERTY_ALL_COUNT => 0, которое, к примеру, отвечает за общее наличие по всем вашим торговым предложениям SKU.

автор: Dmitriy

З 2011 року займаюся веб-розробкою. Зараз я – PHP Full Stack Developer.
Обговорити ваш проект, а також дізнатися більше про мене ви можете на цьому сайті:
dev.forwww.com

Email: dmitriyribka@gmail.com

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *