Компания в которой я работаю - Universe of Web занимается продвижением сайтов - http://uniofweb.ru и созданием сайтов на битрикс, правда созданием сайтов занимается лишь Тульское отделение - http://uw-tula.ru.
Так как в сфере интернет маркетинга очень высокая конкуренция, то нам приходится постоянно работать над своим сайтом. И не так давно передо мной была поставлена задача организовать перелинковку аналитических статей посвященных раскрутке и продвижению сайта (статьи находятся на - http://uniofweb.ru/analytics/), не буду вдаваться в алгоритм перелинковки, так как это является коммерческой тайной, но расскажу про некоторую проблему с которой столкнулся.
Итак, суть проблемы. Как использовать фильтр по множественному списку?
Наверное многие согласятся со мной если я скажу, что при всей прелести "1С-Битрикса" его модули разростаются на столько, что разработчики не успевают изучать API предыдущей версии, как выходит новое API с дополнениями, а не редко и существенными дополнениями к существующему функционалу. И видимо вместе с разработчиками не успевают еще и техрайтеры битрикса (для тех кто не знает, техрайтер это человек, который пишет документацию для пользователей и документацию по API для разработчиков). Проблема в том, что не раз натыкаясь на что-то новое для себя я обращаюсь к справке и в случае если проблема относительно проста, то быстро нахожу для себя там ответ. В случае с более сложными проблемами приходится прикинуть несколько вариантов (эти варианты одинаково разумны с точки зрения того что написано в описание функции или класса). Но бывает и так что в документации проблема описана настолько размыто, что вариантов уймо и приходится обращаться в службу тех поддержки чтобы добиться конкретики и не терять много времени в переборе вариантов.
Одним из таких случаев стал случай когда мне понадобилось использовать внешний фильтр в компоненте "список новостей".
Сам фильтр я уже неоднократно использовал и проблем не возникало, но вот не задача, теперь фильтровать пришлось по множественному списку.
При такой задаче сразу возникает куча вопросов: 1. Что передавать в качестве фильтра(при фильтрации по значению)? Массив или одиночное значение(жду ответа от сапорта, но предполагаю что массив), а самое главное как должен выглядеть этот массив. (Вот что говорит нам об этом API - http://dev.1c-bitrix.ru/api_help/iblo...etlist.php, на случай если товарищи из битрикса все же поправят сделаю выноску)
# PROPERTY_<PROPERTY_CODE> - фильтр по значениям свойств, где PROPERTY_CODE - код свойства или мнемонический код. Для свойств типа "Список", "Число", "Привязка к элементам" и "Привязка к разделам" - Число. Для прочих - Маска; # PROPERTY_<PROPERTY_CODE>_VALUE - фильтр по значениям списка для свойств типа "список" (Маска), поиск будет осуществляться по строковому значению списка, а не по идентификатору;
Ребята, вы не обижайтесь, но этот бред имеет значение только в том случае, если мы говорим о простых свойствах (тут еще можно догадаться о том, как этим пользоваться). В защиту битрикса скажу, что внизу этого раздела документации даны достаточно подробные примеры, но они все же не дают ответа на многие сложные вопросы (привели бы пример использования фильтров для множественного списка , ну ведь реально не понятно). Ну да ладно, гнев я свой выплеснул (кстати говоря именно потому, что на мой достаточно четко сформулированный вопрос в техподдержку меня послали в документацию, которую я разумеется перелопатил вдоль и поперек до того как обратиться в сапорт).
2. Будет ли использоваться условие "И" или "ИЛИ" при передачи группы значений.
И это только начало. Таких вопросов куча. И ведь это далеко не частный случай, а значит ответ должен быть в API!!!
На данный момент сижу жду ответа от сапорта. Как только у меня получится обязательно напишу, даже если решение было очень простым и тривиальным(в данном случае понятным из документации). В этом случае даже извинюсь перед товарищами техрайтерами.
Молодцы. Давно пора. На самом деле все что выше написано было не только ради ссылок. Точнее говоря изначально это не ради них задумывалось, просто, как говориться, если не запрещено, то почему бы и нет.
Печально что Вы приняли только эту информацию к размышлению. Не было времени отписаться, хотел еще вчера.
Вот сегодня все таки решил.
Возвращаясь к проблеме качества справки.
Вы бы тут вместо того чтобы про спамеров рассуждать лучше бы написали что при множественном списке не работает условие "И", работает только "ИЛИ". Написали бы не про апельсины (вы же не с овощеводами разговариваете), а аналогию с булевой алгеброй провели. Написали бы несколько примеров массивов и что это означает. К примеру:
Для ребят из техподдержки хочу пояснить, что в данном случае непонятно не само условие, а непонятно как в виде группы условий разворачивается каждое вложение массива.
Просто обрисовали бы на паре-тройке примеров что произойдет.
По поводу того что при множественном списке не работает условие "И", надо обязательно писать (а может даже и написано, но так глубоко что не дорыть) прям там где объясняете что есть возможность использовать фильтр.
Сказать честно я потерял целый вечер чтобы просто перепробовав все возможные варианты и понять что можно, что нельзя.
Там какой-то гемор с этим есть (логическими фильтрами). По крайней мере месяц назад в саппорт обращались, и выяснилось, что действительно баг, фикс пока в обновлениях не видел (но может уже есть, просто не написали? )
Так же выяснилась особенность работы со списками: если делать запрос не по значению списка, а по id значений (не "PROPERTY_bx_value"=>"1", а "PROPERTY_bx"=>id_of_value), то работать начинает в РАЗЫ быстрее. Становится заметно если несколько свойств типа список в запрос надо вписать
Ну тебя тут только не хватало. Кстати надо сказать что этот код был скопирован из ответа службы техподдржки. Точнее из того примера который она сотворила на сайте, после того как доступ дали для публикации примера.
Короче темный лес. И заметь, ребятки так и не отписались по поводу этого, а только ссылочки отрубили...
Интересно как сделать выборку вида значение множественного свойства типа список = X и больше ничего кроме X (то есть когда есть только одно конкретное значение и больше нет никаких значений)
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».