Как отфильтровать записи по связанному инфоблоку?

Для фильтрации записей по связанному инфоблоку в 1C-Bitrix можно использовать методы API для работы с инфоблоками.

1. Сначала нам необходимо получить ID связанного инфоблока. Для этого мы можем использовать метод CIBlockElement::GetByID, передавая ему ID элемента, для которого мы хотим получить связанный инфоблок.

Пример кода:

$arFilter = array(
    "ID" => $elementId // ID элемента, для которого мы хотим получить связанный инфоблок
);

$arSelect = array(
    "IBLOCK_ID" // поле, которое содержит ID связанного инфоблока
);

$res = CIBlockElement::GetList(array(), $arFilter, false, false, $arSelect);
if ($ob = $res->GetNext()) {
    $linkedIblockId = $ob["IBLOCK_ID"];
}

2. После получения ID связанного инфоблока мы можем использовать его для фильтрации записей по связанному инфоблоку. Для этого мы можем использовать метод CIBlockElement::GetList, передавая ему связанный инфоблок в параметрах фильтрации.

Пример кода:

$arFilter = array(
    "IBLOCK_ID" => $linkedIblockId, // ID связанного инфоблока
);

$res = CIBlockElement::GetList(array(), $arFilter);
while ($ob = $res->GetNextElement()) {
    $arFields = $ob->GetFields();
    
    // Обработка полученных полей элемента инфоблока
    
    echo $arFields["NAME"]; // Пример вывода имени элемента инфоблока
}

3. В приведенном примере мы используем метод CIBlockElement::GetList для получения списка элементов связанного инфоблока. В параметрах GetList мы передаем пустой массив для сортировки (array()), фильтр по связанному инфоблоку ($arFilter) и пустые значения для пагинации (false).

4. В цикле while мы проходимся по каждому элементу связанного инфоблока и получаем его поля методом GetFields. В данном примере мы просто выводим имя элемента инфоблока, но вы можете обрабатывать полученные поля по своему усмотрению.

Таким образом, используя методы API 1C-Bitrix, мы можем отфильтровать записи по связанному инфоблоку, получить список этих записей и обработать их по своему усмотрению.