Т.е. сейчас с помощью метода CIBlockSection::GetList можно делать так:
а вот так:
или хотя бы так:
уже нельзя
Т.е. если решать средствами битрикса получалось бы ресурсозатранто, потому как пришлось бы использовать и CIBlockSection::GetList и CIBlockElement::GetList одновременно. Поэтому, было принято решение делать выборку влоб:
А предложение заключается в том что бы добавить возможность в класс CIBlockSection фильтровать секции по основным свойствам элементов.
$arFilter = array(
"IBLOCK_ID" => $IB,
"ACTIVE" => "Y",
"DEPTH_LEVEL" => 1,
"PROPERTY" => array("prop1" => "good")
); |
а вот так:
$arFilter = array(
"IBLOCK_ID" => $IB,
"ACTIVE" => "Y",
"DEPTH_LEVEL" => 1,
"PROPERTY" => array(">DATE_CREATE" => "2008-12-15")
); |
или хотя бы так:
$arFilter = array(
"IBLOCK_ID" => $IB,
"ACTIVE" => "Y",
"DEPTH_LEVEL" => 1,
"PROPERTY" => array("XML_ID" => "590216")
); |
уже нельзя

Т.е. если решать средствами битрикса получалось бы ресурсозатранто, потому как пришлось бы использовать и CIBlockSection::GetList и CIBlockElement::GetList одновременно. Поэтому, было принято решение делать выборку влоб:
function GetElementSections($arItems)
{
global $DB;
$impItems = implode(",", $arItems);
$query = "SELECT S.ID, S.NAME, S.IBLOCK_SECTION_ID, COUNT(DISTINCT SE.IBLOCK_ELEMENT_ID) as ELEMENT_CNT ".
"FROM b_iblock_section_element SE, b_iblock_section S ".
"WHERE SE.IBLOCK_SECTION_ID=S.ID AND SE.IBLOCK_ELEMENT_ID IN (". $impItems .") ".
"GROUP BY S.NAME ".
"ORDER BY S.NAME";
$dbr = $DB->Query($query);
return $dbr;
}
|
А предложение заключается в том что бы добавить возможность в класс CIBlockSection фильтровать секции по основным свойствам элементов.