Можно ли найти элементы с фильтром по общему свойству поиском по всем инфоблокам?

В 1C-Bitrix есть возможность найти элементы с фильтром по общему свойству, применяя поиск по всем инфоблокам. Для этого можно воспользоваться функцией CIBlockElement::GetList.

Для начала определим, какие инфоблоки нам нужно обработать. Для этого можно использовать метод CIBlock::GetList или CIBlock::GetByID, чтобы получить список или информацию об одном конкретном инфоблоке.

Затем используем метод CIBlock::GetProperties, чтобы получить список свойств, присущих каждому из найденных инфоблоков. Для этого метода передадим ID каждого инфоблока из списка, полученного на предыдущем шаге.

Далее, используем метод CIBlockElement::GetList, чтобы получить список элементов, отфильтрованный по требуемому свойству. Для этого создадим массив $arFilter, в котором укажем идентификаторы инфоблоков в ключе IBLOCK_ID и значение искомого свойства в ключе PROPERTY_КОД_СВОЙСТВА.

Также можно добавить дополнительные условия для фильтрации, например, активные элементы или элементы с определенной датой. Для этого в массиве $arFilter можно использовать соответствующие ключи.

Для получения результатов необходимо создать объект CIBlockElement и вызвать его метод GetList, передав ему массив $arFilter и необходимые параметры сортировки и выборки.

Пример кода:

$arBlocks = array(); // Массив для хранения информации об инфоблоках

// Получаем список инфоблоков
$res = CIBlock::GetList(array(), array());
while ($ar = $res->Fetch()) {
    $arBlocks[$ar["ID"]] = $ar; // Добавляем информацию о каждом инфоблоке в массив
}

foreach ($arBlocks as $arBlock) {
    $arProperties = array(); // Массив для хранения информации о свойствах инфоблока

    // Получаем список свойств инфоблока
    $res = CIBlock::GetProperties($arBlock["ID"], array());
    while ($ar = $res->Fetch()) {
        $arProperties[$ar["CODE"]] = $ar; // Добавляем информацию о каждом свойстве в массив
    }

    // Фильтр по нужному свойству
    $arFilter = array(
        "IBLOCK_ID" => $arBlock["ID"],
        "PROPERTY_КОД_СВОЙСТВА" => "ЗНАЧЕНИЕ_СВОЙСТВА",
    );

    // Получаем список элементов, отфильтрованных по свойству
    $res = CIBlockElement::GetList(array(), $arFilter, false, false, array());
    while ($ar = $res->Fetch()) {
        // Делаем что-то с каждым найденным элементом
    }
}

В примере выше мы получаем список всех инфоблоков и их свойств, затем ищем элементы с нужным свойством и обрабатываем результаты. Обратите внимание, что вам нужно заменить "КОД_СВОЙСТВА" и "ЗНАЧЕНИЕ_СВОЙСТВА" на соответствующие значения для вашего случая.

Надеюсь, это поможет вам решить вашу задачу поиска элементов с фильтром по общему свойству по всем инфоблокам в 1C-Bitrix.