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

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

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

Начнем с неправильного способа 🙂 .
Делается он при помощи устаревшего метода 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 года. Посмотреть некоторые из моих работ, а также узнать чуть больше обо мне, вы можете на forwww.ru.

- Создание сайтов на 1С-Битрикс любой сложности
- Вёрстка макетов Figma, Photoshop, Zeplin
- Поддержка проектов на Битриксе
- Разработка нового функционала для сайта
- Парсинг данных
- Выгрузка \ Загрузка файлов в формате XML, YML, XLS, XLSX, CSV, JSON
- Интеграция по API со сторонними сервисами
и многое другое

E-mail: dmitriyribka@gmail.com

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *