Проверка вхождения строки в фильтре GetList

Рейтинг: 0.0000  
На голосовании
Предложил Голубева Марина 01.02.2019 08:37:47

Проверка вхождения строки в фильтре GetList

$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 невозможно.

Предлагаю добавить эту возможность.

Рейтинг: 0  
Жуков Евгений 01.02.2019 09:59:49
А какую задачу вы хотите решить таким фильтром?
Рейтинг: 0  
Голубева Марина 01.02.2019 10:12:12
На сайте есть артикулы. Пример артикула "М8х60"
Задача. Сопоставить артикулы с сайта с кодами из Автокаталога (другими артикулами), а они могут быть не равны строго, а входить как подстроки друг в друга. Пример:

Болт [М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 штук

А на деле это один и тотже болт, просто названный по разному.

У меня уже есть алгоритм как это сделать и записать в базу для быстрого пользования. Но тогда это привлечение работы с базой и навешивание задачи на крон. А вот такая фильтрация по вхождению строк очень упростила бы задачу.
Рейтинг: 0  
Озерский Игорь 12.04.2019 17:07:35
Посмотрите в сторону D7.  Если оба значения это поля в базе то с помощью runtime это реализуемо.  
Рейтинг: 0  
Голубева Марина 15.04.2019 07:21:54
Озерский Игорь, одно в базе битрикса. Другое тоже в базе, но в таблицах стороннего решения. "Автокаталог" от Автософта.