в \local\templates\name\components\bitrix\catalog\.default\bitrix\catalog.section.list\.default\result_modifier.php добавил костыль:
$pprops = [];
foreach($arParams['SMART_FILTER_VARS'] as $key => $value) {
if(preg_match("|^([\!><=]+)(PROPERTY_)([0-9]+)$|", $key, $arr)) {
$res = CIBlockProperty::GetByID($arr[3], false, $arParams['IBLOCK_CODE']);
$ar_res = $res->GetNext();
$pprops[$arr[1] . $arr[2] . $ar_res['CODE']] = $value;
}
if(preg_match("|CATALOG_PRICE_1|", $key)) {
$pprops[$key] = $value;
}
}
foreach($arResult['SECTIONS'] as $key => $value) {
$arFilter = [
"IBLOCK_ID" => $arParams['IBLOCK_ID'],
"ACTIVE" => "Y",
"SECTION_ID" => $value['ID'],
"INCLUDE_SUBSECTIONS" => "Y",
];
$arFilter = array_merge($arFilter, $pprops);
$res = CIBlockElement::GetList([], $arFilter, false, [], $arSelect);
if(!$ar_fields = $res->GetNext()) {
unset($arResult['SECTIONS'][$key]);
}
}
$pprops = [];
foreach($arParams['SMART_FILTER_VARS'] as $key => $value) {
if(preg_match("|^([\!><=]+)(PROPERTY_)([0-9]+)$|", $key, $arr)) {
$res = CIBlockProperty::GetByID($arr[3], false, $arParams['IBLOCK_CODE']);
$ar_res = $res->GetNext();
$pprops[$arr[1] . $arr[2] . $ar_res['CODE']] = $value;
}
if(preg_match("|CATALOG_PRICE_1|", $key)) {
$pprops[$key] = $value;
}
}
foreach($arResult['SECTIONS'] as $key => $value) {
$arFilter = [
"IBLOCK_ID" => $arParams['IBLOCK_ID'],
"ACTIVE" => "Y",
"SECTION_ID" => $value['ID'],
"INCLUDE_SUBSECTIONS" => "Y",
];
$arFilter = array_merge($arFilter, $pprops);
$res = CIBlockElement::GetList([], $arFilter, false, [], $arSelect);
if(!$ar_fields = $res->GetNext()) {
unset($arResult['SECTIONS'][$key]);
}
}