Как в битриксе узнать, к какому бренду и категории принадлежит товар?
В общем пишу свой костыль для битрикса, использую метод CCatalogProduct::GetByIDEx, он возвращает значения, где имеется массив с брендом и категорией, но оба этих значения пустые, хотя в карточке товара или в корзине бренд виден, в нужной категории товар присутствует. Как еще можно это узнать? Известно что товары загружают как-то через 1С и не все свойства товара используются, но как-то хитро в базу они попадают все равно и системе видны. Но как их увидеть? Что еще можно попробовать?
1 Покажите что вам возвращает CCatalogProduct::GetByIDEx. (Почему кстати используете его? И в чем смысл костыля? Что он делает?)
2 По возможности всегда используйте для работы с элементами инфоблока CIBlockElement::GetList, если его хватает: dev.1c-bitrix.ru/api_help/iblock/classes/ciblockel...
Костыль - аякс корзина. При этом в CSaleBasket::GetList этого тоже нет, вот и ищу способ подцепить значения, но если зайти в обычную корзину, то она есть под ['PROPERTIES']['BREND'], но в выводе var_dump результата от CSaleBasket элемента массива ['BREND'] тоже не видно.
Ну вот видите. У вас производитель хранится в свойстве BREND, а CCatalogProduct:: будут извлеткать только значения свойств с кодом начинающимся с CML2_
Просто у вас у товаров два свойства Производитель - BREND и CML2_MANUFACTURER. И реально производителя 1C пихает в BREND, поэтому его и нет в результатах CCatalogProduct.
CCatalogProduct не работает с к элементов инфоблока - он работает с элементом каталога - это несколько другая абстракция, объединяющая поля элемента инфоблока, свойства CML2_MANUFACTURER и подобные, а так же ценовое предложение с которым связан элемент.
Обратите внимание такие вещи как цена например не являются свойствами элемента инфоблока. Цена это поле ценового предложения (иной сущности) которое связано с Элм.ИБ но его свойством не является. Как-то так.
Да, этот метод может вернуть все свойства. И ксатит список элементов. Почитайте доки по ссылке.
Вам понадобится arSelect примерно такой array('ID', 'PROPERTY_BREND') если вы хотите получить ID элемента и свойство BREND и arFilter('ID' => $PRODUCT_ID) где $PRODUCT_ID - это id элемента инфоблока, чтобы получить список из одного элемента, нужного вам.