В целом все работает, но остался вопрос - как фильтровать по свойствам, в коде которых есть символ подчеркивания?
PROPERTY_PRODUCT_CODE_VALUE == не работает, потому что битрикс думает что требуется фильтровать по полю CODE свойства PRODUCT, а не по полю VALUE свойства PRODUCT_CODE.
Самый простой вариант использовать цифровой ID свойства. PROPERTY_9_VALUE.
Не очень красиво но должно работать. Чтобы не пришлось в случае чего по всему сайту заменять ID свойства на другое значение можно использовать константы.
Решение годится, очень не люблю ID т.к. при переносе от системы к системе они меняются. ID это некая штука, принадлежащая конкретному хранителю данных, и потому писать на ней код можно только одноразовый.
Например на том же битриксе нигде нет таблиц для связи ID из разных систем, да это и не только про битрикс это сама идея как бы граничит с "работой из ничего", а вот alias-ы или же коды свойств, это как раз про то, что при переносе на другой сайт останется работать.
Но это бы вредило бизнесу 1С. Потому что можно было бы скачать новый бесплатный битрикс и прикрутить старый код.