$arSelect = Array("ID", "IBLOCK_ID", "NAME", "DETAIL_PAGE_URL", "PREVIEW_PICTURE", "DETAIL_PICTURE", "CATALOG_GROUP_7", "PROPERTY_CML2_ARTICLE");
$arFilter = Array("IBLOCK_ID"=>$GLOBALS['CATALOG_IBLOCK_ID'],
"ACTIVE"=>"Y",
"ACTIVE_DATE"=>"Y",
"?PROPERTY_CML2_ARTICLE"=>$acat,);
$res = CIBlockElement::GetList(Array(),$arFilter,false,false,$arSelect);
Предложение касается строки фильтра: "?PROPERTY_CML2_ARTICLE"=>$acat
При помощи этого фильтра отфильтруются элементы, у которых $acat является подстрокой строки "PROPERTY_CML2_ARTICLE".
А отфильтровать в другом направлении, чтобы значения "PROPERTY_CML2_ARTICLE" могли быть подстроками $acat невозможно.
Предлагаю добавить эту возможность.
Задача. Сопоставить артикулы с сайта с кодами из Автокаталога (другими артикулами), а они могут быть не равны строго, а входить как подстроки друг в друга. Пример:
Болт [М8х60.7796]
Болт [М8х60.56.35.019 ГОСТ 7798-70]
Винт 2В М8х60-5,8 БДС1359-88 [[Винт 2В М8х60-5,8 БДС1359-88]]
Болт [7798.М8х60]
...и так 76 штук
А на деле это один и тотже болт, просто названный по разному.
У меня уже есть алгоритм как это сделать и записать в базу для быстрого пользования. Но тогда это привлечение работы с базой и навешивание задачи на крон. А вот такая фильтрация по вхождению строк очень упростила бы задачу.