Часто бывает ситуация, когда ID инфоблока на боевом и тестовом сайтах не совпадают. В таком случае удобнее получать его "на лету" по символьному коду, который задается в настройках инфоблока.

Привожу код, который позволит получить ID инфоблока по его символьному коду:

<?php

use Bitrix\Main\Loader;
use Bitrix\Iblock\IblockTable;

function get_iblock_id($code)
{
    if (!$code) return '';

    $iblocksId = $_SESSION['iblocks_id']; //Проверяем в сессии

    if ($iblocksId && array_key_exists($code, $iblocksId) && $iblocksId[$code]) {
        return $iblocksId[$code];
    }

    Loader::includeModule('iblock');

    $iBlock = IblockTable::getRow([
        'filter' => ['=CODE' => $code],
        'select' => ['ID'],
    ]);

    $iblockId = $iBlock['ID'];

    $iblocksId[$code] = $iblockId;
    
    $_SESSION['iblocks_id'] = $iblocksId; //Сохраняем в сессии

    return $iblockId;
}

Также дополнительно имеется сохранение ID инфоблока в сессию для того, чтобы избежать лишних запросов в БД.