В принципе, можно работать и с незаполненными полями, только фильтр будет сложным.
Например, кто-то ищет работу на 5 тыр. Ему подходят следующие вакансии:
1) указана вилка, в которую попадают 5 тыр (4..10 тыр)
2) указана только зарплата от, и она меньше или равна 5 тыр (от 3 тыр)
3) указана только зарплата до, и она больше или равна 5 тыр (до 7 тыр)
Соответственно, получается фильтр типа:
$arFilter = array(
'IBLOCK_ID' => ...,
array(
'LOGIC' => 'OR',
array(
'<=PROPERTY_JD_SALARYLEVELFROM' => 5000,
'>=PROPERTY_JD_SALARYLEVELTO' => 5000,
),
array(
'<=PROPERTY_JD_SALARYLEVELFROM' => 5000,
'PROPERTY_JD_SALARYLEVELTO' => false,
),
array(
'PROPERTY_JD_SALARYLEVELFROM' => false,
'>=PROPERTY_JD_SALARYLEVELTO' => 5000,
),
),
);