bitrix получить свойства инфоблока

Была у меня задача получить значения свойства инфоблока, который обновлялся из 1С, с целью вывода данных в поле формы заявки.

Первый вариант, который гуляет в сети, с использованием GetList с группировкой по свойству дал частичный результат

CModule::IncludeModule(‘iblock’);
$ > $arPropValues = array();$dbItems = CIBlockElement::GetList(array(), array(‘IBLOCK_ID’ => $ID), array(‘PROPERTY_MATERIAL’));
while($arItem = $dbItems->GetNext(true, false)) <
$arPropValues[] = $arItem[‘PROPERTY_MATERIAL_VALUE’];

Результат на примере свойства каталога демо сайта

Array
(
[0] =>
[1] => 95% хлопок, 5% эластан
[2] => искусственные материалы
[3] => кожа
[4] => полиуретан
[5] => резина/кожа
[6] => текстиль/полимер
[7] => трикотаж
[8] => хлопок
[9] => шелк
)

Но тут в итоге получается, что первый ключ массива пустой, так как не все элементы инфоблока содержат заполненные значения.

Во втором варианте я добавил фильтрацию, чтобы выбрать все заполненные значения свойства инфоблока (скачать пример)

$arResult = array();
$arrayFilter = array(‘IBLOCK_ID’ => 2, array(«!PROPERTY_MATERIAL»=>false));
array(«!=PROPERTY_MATERIAL»=>false));
$dbItems = CIBlockElement::GetList(array(«PROPERTY_MATERIAL»=>»ASC»), $arrayFilter, array(«PROPERTY_MATERIAL»));
while($arItem = $dbItems->GetNext(true, false)) <
$arResult[] = $arItem;
>

Итог:
Значения на выходе получаются сгруппирированы и без пустых ключей, что я и применил в такого плане веб формы заявки

Ещё статьи:

18.11.2019 Подборка эффективных WooCommerce шаблонов для электронной коммерции
Для создания интернет- магазина можно использовать различные платформы. К примеру OpenCart или Magento — популярные системы управления содержимым с от. ID: 204

07.11.2019 Две ошибки молодого интернет-магазина
Из моих наблюдений расскажу об ошибках молодого интернет-магазина. ID: 202

26.10.2019 Штатная битрикс сортировка по цене
Временами полезно смотреть документацию. Недавно обнаружил, что появилась сортировка по SCALED_PRICE_[ID]
ID: 199

Новые статьи в блоге:

18.11.2019 404 ошибка для результатов фильтра
Интересная ошибка выявлена в работе smart.filter. Не работает фильтрация и кнопка купить если в адресе есть слова с спецсимволами. ID: 205

10.11.2019 Ресайз изображений в news.list
Часто вижу, что изображения анонса элемента уменьшают с помощью стилей, а фактический размер картинки остаётся большой. В итоге суммарная нагрузка на . ID: 203

01.11.2019 Вывести начальные значения цена от и до
В smart-filter битрикс вывести начальные значения цен ID: 201

Привязал к элементу множественное свойство «Пользователи»,
пробовал получить этим dev.1c-bitrix.ru/api_help/iblock/classes/ciblockel.
$db_props = CIBlockElement::GetProperty($iblock_id, $el_id, Array(«sort» => «asc»), Array(«CODE» => «PERSONS»));
ничего не получается.

Как это правильно сделать?

  • Вопрос задан более двух лет назад
  • 3037 просмотров

Используете правильную функцию. Там на странице и пример есть для получения значений множественного свойства: «Пример 2».

С другой стороны: «ничего не получается» — слишком размыто.

с int iblock_id,
int element_id — все понятно,

а что это такое
$IBLOCKS[‘brands’],
$BRAND_ID,

Вы про пример?
IKSO_CUSTOM::$IBLOCKS[‘brands’] — код (ID) инфоблока
$BRAND_ID — код элемента.
Ваш вызов синтаксически верный (если множественное слово имеет символьный код буквально «PERSONS»)

Возможно проблема в том, как из выборки получить результат.
В примере это делается в цикле
while ($ob = $res->GetNext())

делаю так
$db_props = CIBlockElement::GetProperty(18, 363, Array(«sort» => «asc»), Array(«CODE» => «PERSON»)); //
echo «».print_r($db_props).»»;
var_dump($db_props);

$VALUES = array();
$res = CIBlockElement::GetProperty(IKSO_CUSTOM::18, 363, «sort», «asc», Array(«CODE» => «PERSONS»));
while ($ob = $res->GetNext())
<
var_dump($ob);
$VALUES[] = $ob[‘VALUE’];
>
var_dump($res);

для (катинка ниже). Пусто, ничего не ыводит.

//18 — ID инфоблока, 363 — код элемента?

$VALUES = array();
$res = CIBlockElement::GetProperty( 18, 363, array( «sort» => «asc» ), Array(«CODE» => «PERSONS»));
while ($ob = $res->GetNext()) <
$VALUES[] = $ob[‘VALUE’];
>
var_dump( $VALUES );

===
А просто CIBlockElement::GetByID( 363 ) читает элемент?
Что показывает?

GetNext())
echo «».print_r($ar_res[‘NAME’]).»

// теперь по ID элемента получаем в объект айдишники юзеров
$db_props = CIBlockElement::GetProperty(18, 5922, Array(«sort» => «asc»), Array(«CODE» => «PERSON»));
echo «».print_r($db_props).»»;

=====
Один черт , показывает не то что нужно:

Down Light? Down price!

CIBlockPropertyResult Object
(
[IBLOCK_ID:protected] => 0
[VERSION:protected] => 0
[arProperties:protected] => Array
(
)

[lastRes:protected] =>
[extMode:protected] =>
[arPropertyValuesID:protected] => Array
(
)

[result] => Resource id #198
[arResult] =>
[arReplacedAliases] =>
[arResultAdd] =>
[bNavStart] =>
[bShowAll] =>
[NavNum] =>
[NavPageCount] =>
[NavPageNomer] =>
[NavPageSize] =>
[NavShowAll] =>
[NavRecordCount] =>
[bFirstPrintNav] => 1
[PAGEN] =>
[SIZEN] =>
[SESS_SIZEN] =>
[SESS_ALL] =>
[SESS_PAGEN] =>
[add_anchor] =>
[bPostNavigation] =>
[bFromArray] =>
[bFromLimited] =>
[sSessInitAdd] =>
[nPageWindow] => 5
[nSelectedCount] =>
[arGetNextCache] =>
[bDescPageNumbering] =>
[arUserFields] =>
[usedUserFields] =>
[SqlTraceIndex] =>
[DB] => CDatabase Object
(
[version] =>
[escL] => `
[escR] => `
[alias_length] => 256
[DBName] => admin_litewell
[DBHost] => localhost
[DBLogin] => admin_litewell
[DBPassword] => U5VcAPBzeK
[bConnected] => 1
[db_Conn] => Resource id #2
[debug] =>
[DebugToFile] =>
[ShowSqlStat] =>
[db_Error] =>
[db_ErrorSQL] =>
[result] =>
[type] => MYSQL
[column_cache] => Array
(
)

[bModuleConnection] =>
[bNodeConnection] =>
[node_id] =>
[obSlave] =>
[cntQuery] => 0
[timeQuery] => 0
[arQueryDebug] => Array
(
)

[NavRecordCountChangeDisable] =>
[is_filtered] =>
[nStartPage] => 0
[nEndPage] => 0
[resultObject] =>
)

Не раз приходилось сталкиваться с задачей, когда нужно было вывести свойство инфоблока через 1с-Битрикс API. Рассмотрим такой пример : имеется инфоблок с различными футболками , задача – вывести название футболки и ткань , из которой она сделана.

Инфоблок с футболками имеет >

и требуется вывести свойство с символьным кодом = «TKAN»(рис.2).

Вот что у меня получилось:

Главный наш помощник в получении результата функция битрикс API — CIBlockElement::GetList.

$arSort — отвечает за сортировку. Значение ‘NAME’ => ‘ASC’ означает сортировать по имени по возрастанию.
$arSelect — массив возвращаемых полей элемента. В нашем случае доступны:

Этот список можно пополнить другими свойствами.

$arFilter – нужен для фильтрации элементов. $arFilter = Array(‘IBLOCK_ID’=> 5) означает, что из всех элементов хранимых в инфоблоках сайта, мы выбираем только те, которые находятся в инфоблоке с >

  • $arFilter = Array(‘PROPERTY_ TKAN ‘=> ‘шерсть’) – все элементы, у которых параметр ткань = шерсть.
  • $arFilter = Array(‘SECTION_ID’ => 55) – все элементы, которые лежат в папке с >Осталось лишь вывести информацию. Для этого используем цикл while с функцией GetNextElement() .И в результате применения функции GetFields() в массиве $arFields будут храниться отобранные по фильтру футболки со свойствами, добавленными в массив $arSelect .
Оцените статью