Как фильтровать в ORM bitrix по свойству если выборка из 2 инфоблоков?

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

тут Как фильтровать в ORM bitrix пользовательские свойства? нашел примерное решение, она работает если делать выборку по одному ИБ, если из 2 делать, то не работает

$iblockId = 32;

        $entityPropsSingle = \Bitrix\Main\Entity\Base::compileEntity(
            sprintf('PROPS_SINGLE_%s', $iblockId),
            [
                'IBLOCK_ELEMENT_ID' => ['data_type' => 'integer'],
                'PROPERTY_1087' => ['data_type' => 'integer'],
            ],
            [
                'table_name' => sprintf('b_iblock_element_prop_s%s', $iblockId),
            ]
        );

        $iblockId = 33;
        $entityPropsSingle1 = \Bitrix\Main\Entity\Base::compileEntity(
            sprintf('PROPS_SINGLE_%s', $iblockId),
            [
                'IBLOCK_ELEMENT_ID' => ['data_type' => 'integer'],
                'PROPERTY_1096' => ['data_type' => 'integer'],
            ],
            [
                'table_name' => sprintf('b_iblock_element_prop_s%s', $iblockId),
            ]
        );

        $params = [
            'order' => array('DATE_CREATE' => 'DESC'),
            'select' => array('ID', 'NAME', 'IBLOCK_ID', 'DATE_CREATE'),
            'filter' => array('IBLOCK_ID' => $this->arParams['IBLOCK_IDS'],
                [
                    'LOGIC' => 'OR',
                    ['PROPS_SINGLE_32.PROPERTY_1087' => 1011,
                    'PROPS_SINGLE_33.PROPERTY_1096' => 1015],
                ]),
            'runtime' => array(
                'PROPS_SINGLE_32' => [
                    'data_type' => $entityPropsSingle->getDataClass(),
                    'reference' => [
                        '=this.ID' => 'ref.IBLOCK_ELEMENT_ID'
                    ],
                    'join_type' => 'inner'
                ],
                'PROPS_SINGLE_33' => [
                    'data_type' => $entityPropsSingle1->getDataClass(),
                    'reference' => [
                        '=this.ID' => 'ref.IBLOCK_ELEMENT_ID'
                    ],
                    'join_type' => 'inner'
                ],
            ),
            'cache' => array(
                'ttl' => 3600,
                'cache_joins' => true
            ),
        ];
        $params['limit'] = $limit;
        $params['offset'] = $offset;
        $itemsRequest = \Bitrix\Iblock\ElementTable::getList($params);


код такой, но, выборка пустая. Как делать правильно в ElementTable::getList фильтр по свойствам и из нескольких ИБ
  • Вопрос задан
  • 462 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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