Задача, вывести список типов магазинов (Тип магазина является множественным свойством типа список). Для решения этой задачи, можно воспользоваться несколькими способами.

Первый способ

Если требуется только значение свойства типа список, можно воспользоваться одним запросом CIBlockPropertyEnum, достанет только значения свойства.

    /** достаем значение свойств списка типа магазина*/
$property_enums = CIBlockPropertyEnum::GetList(Array("SORT"=>"ASC"), Array("IBLOCK_ID"=>$arParams['IBLOCK_BRANCH_ID'], "PROPERTY_TYPE" => '*'));
   while($enum_fields = $property_enums->GetNext(true, false)) {
      $arResult['TYPE'][] = $enum_fields;
   }
Второй способ

Если нужны еще другие свойства, то формируем запрос, где достаем свойства GetNextElement. Отдельно проверяем каждое значение свойства и записываем их в новый массив $arResult[‘TYPE’].

/** достаем магазины*/
$arSelect = Array(
   'ID',
   'NAME',
   'PROPERTY_TYPE',
);

$arFilter = Array(
   "IBLOCK_ID"=>$arParams['IBLOCK_BRANCH_ID'],
   "ACTIVE_DATE"=>"Y",
   "ACTIVE"=>"Y",
);

$resM = CIBlockElement::GetList(Array('sort'=>'asc', 'name'=>'asc'), $arFilter, false, false, $arSelect);
while($fl = $resM->GetNextElement())
{
   $arFields = $fl->GetFields();
   $arResult['SHOPS'][$arFields['PROPERTY_CITY_VALUE']][] = $arFields;

   /**формируем массивы доступных типов магазинов*/
   if($arFields['PROPERTY_TYPE_VALUE'])
      foreach ($arFields['PROPERTY_TYPE_VALUE'] as $k => $e)
         if(!in_array($e, $arResult['TYPE']))
            $arResult['TYPE'][$k] = $e;
   unset($k, $e);

}

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