Здравствуйте!
Я новичок в битриксе. Столкнулся со следующим затруднением.
В информационный блок "catalog" я добавил свойство "brand".
Необходимо вывести список значений этого поля для указанной группы товаров.
Для доступа к элементам каталога я пользуюсь функцией GetIBlockElementListEx() следующим образом:
----------------------------------------------------
$IBLOCK_TYPE = 'catalog';
$ELEMENT_COUNT = 9;
$arSelect = array(
"ID",
"IBLOCK_ID",
"brand"
);
$arGroupBy = array('PROPERTY_brand');
$arrFilter['ACTIVE'] = 'Y';
$arrFilter['IBLOCK_ID'] = 27;
$arrFilter['SECTION_ID'] = 143;
$rsElements = GetIBlockElementListEx(
$IBLOCK_TYPE,
false,
false,
array($ELEMENT_SORT_FIELD => $ELEMENT_SORT_ORDER),
9,
$arrFilter,
$arSelect
);
$count = intval($rsElements->SelectedRowsCount());
if ($count>0){
while ($obElement = $rsElements->GetNextElement()){
$arProperty = $obElement->GetProperties();
echo '<div>'.$arProperty['brand']['VALUE'].'</div>';
}
}
----------------------------------------------------
Результат содержит список значений полей. При этом, естественно, в этом списке могут находиться повторяющиеся значения.
Вопрос в том, как обеспечить уникальность значений этого поля. В SQL для этой цели можно использовать конструкцию группировки GROUP BY. В документации системы Bitrix написано, что
для этой цели можно использовать восьмой параметр функции GetIBlockElementListEx(), который содержит массив полей для группировки.
Я добавил этот параметр. Вот, что получилось:
...
$arGroupBy = array('PROPERTY_brend');
$rsElements = GetIBlockElementListEx(
$IBLOCK_TYPE,
false,
false,
array($ELEMENT_SORT_FIELD => $ELEMENT_SORT_ORDER),
9,
$arrFilter,
$arSelect,
$arGroupBy
);
...
И теперь результат пуст.
Что делать? Может быть, я в чём-то неправ?
Заранее благодарен за ответ.
Я новичок в битриксе. Столкнулся со следующим затруднением.
В информационный блок "catalog" я добавил свойство "brand".
Необходимо вывести список значений этого поля для указанной группы товаров.
Для доступа к элементам каталога я пользуюсь функцией GetIBlockElementListEx() следующим образом:
----------------------------------------------------
$IBLOCK_TYPE = 'catalog';
$ELEMENT_COUNT = 9;
$arSelect = array(
"ID",
"IBLOCK_ID",
"brand"
);
$arGroupBy = array('PROPERTY_brand');
$arrFilter['ACTIVE'] = 'Y';
$arrFilter['IBLOCK_ID'] = 27;
$arrFilter['SECTION_ID'] = 143;
$rsElements = GetIBlockElementListEx(
$IBLOCK_TYPE,
false,
false,
array($ELEMENT_SORT_FIELD => $ELEMENT_SORT_ORDER),
9,
$arrFilter,
$arSelect
);
$count = intval($rsElements->SelectedRowsCount());
if ($count>0){
while ($obElement = $rsElements->GetNextElement()){
$arProperty = $obElement->GetProperties();
echo '<div>'.$arProperty['brand']['VALUE'].'</div>';
}
}
----------------------------------------------------
Результат содержит список значений полей. При этом, естественно, в этом списке могут находиться повторяющиеся значения.
Вопрос в том, как обеспечить уникальность значений этого поля. В SQL для этой цели можно использовать конструкцию группировки GROUP BY. В документации системы Bitrix написано, что
для этой цели можно использовать восьмой параметр функции GetIBlockElementListEx(), который содержит массив полей для группировки.
Я добавил этот параметр. Вот, что получилось:
...
$arGroupBy = array('PROPERTY_brend');
$rsElements = GetIBlockElementListEx(
$IBLOCK_TYPE,
false,
false,
array($ELEMENT_SORT_FIELD => $ELEMENT_SORT_ORDER),
9,
$arrFilter,
$arSelect,
$arGroupBy
);
...
И теперь результат пуст.
Что делать? Может быть, я в чём-то неправ?
Заранее благодарен за ответ.