Алексей Емельяно, благодарю за подсказку насчет фасетного поиска.
Пошла самым простым путем: т.к. такой фильтр нужен только в одном разделе, то я скопировала компонент "search.filter" и в файле "result_modifier.php" добавила код для исключения из массива результата тех значений заданного свойства, которые не используются в элементах информационного блока.
Код инфоблока = 4, код исходного свойства = 252. Также используется фильтр по активным записям (ACTIVE) и по датам активности (ACTIVE_DATE). Для выборки всех различных значений свойства с кодом 252 (PROPERTY_252) использовала группировку (третий параметр-массив функции GetList).
$IDs = [];
$rs = CIBlockElement::GetList(array(), array("IBLOCK_ID" => 4, "ACTIVE" => "Y", "ACTIVE_DATE" => "Y", "!PROPERTY_252" => false), array("PROPERTY_252"));
while($ar = $rs->GetNext()) {
$IDs[] = $ar['PROPERTY_252_VALUE'];
}
Затем сделала проверку, в которой с помощью регулярных выражений из массива $arResult['ITEMS']['PROPERTY_252']['INPUT'] удалила все значения, которых нет в полученном массиве $IDs.
Profit!