Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Как фильтровать по свойствам связанного элемента

00 голосов
2
Есть элемент торгового каталога.
У него есть свойство типа связанный элемент "Дополнительные характеристики" - VsProp.
Кроме того, т. к. у разных товаров может быть разный набор доп. характеристик, есть свойство "Тип характеристик" - VsType с типом инфоблока характеристик.

Пробую задавать фильтр таким образом:
Код
$arrFilter = array (
  'PROPERTY' => array (
    'VsType' => '18',
    '!VsProp' => false,
    'VsProp.IBLOCK_ID' => '18',
    'VsProp.ACTIVE' => 'Y',
    'VsProp.PROPERTY_head' => '49',
  ),
)

Фильтрация по полям - работает а по свойствам - нет.

Так же пытался использовать CIBlockElement::SubQuery:
Код
$arrFilter = array (
  'PROPERTY' => array (
    'VsType' => '18',
    '!VsProp' => false,
    'VsProp' => CIBlockElement::SubQuery(
      'ID',
      array('IBLOCK_ID' => '18', 'ACTIVE' => 'Y', 'PROPERTY_head' => '49')
    ),
  ),
)

Тоже не работает.

Как написать верный массив для фильтрации?
спросил 24 Фев, 14 от Daemonia (160 баллов)

2 Ответы

00 голосов
Есть ли решение подобной проблемы?
Или только вручную вызывать GetList для "Дополнительные характеристики" а потом обрабатывать в PHP коде?
ответил 28 Июль, 14 от Daemonia (160 баллов)
00 голосов
Добавил к блокам "дополнительных характеристик" свойство типа связанный элемент "Обратная ссылка" (BackLink).
После этого появилась возможность использовать CIBlockElement::SubQuery:
Код
$IB_BLOCK_DETAIL = 18
$arrFilter = array (
  'PROPERTY' => array (
    'VsType' => $IB_BLOCK_DETAIL,
    '!VsProp' => false,
  ),
  'ID' => CIBlockElement::SubQuery(
    'PROPERTY_BACKLINK',
    array('IBLOCK_ID' => $IB_BLOCK_DETAIL, 'ACTIVE' => 'Y', 'PROPERTY_head' => '49')
  ),
)


Решение нашлось после прочтения комментария к обсуждению CIBlockElement::SubQuery не получается зделать!.
ответил 30 Ноя, 14 от Daemonia (160 баллов)

Похожие вопросы

0 голосов
5 ответов
спросил 02 Фев, 14 от guk (360 баллов)
0 голосов
2 ответов
спросил 21 Апр, 14 от BAGIRA (560 баллов)
0 голосов
7 ответов
спросил 24 Авг, 13 от Vidoc (120 баллов)
0 голосов
9 ответов
0 голосов
4 ответов