Bitrix как найти элемент

Поиск элементов инфоблока по их свойствам

Урок
720
из
932

Сложность урока:

2 уровень – несложные понятия и действия, но не расслабляйтесь.


2 из 5

Дата изменения:
24.04.2023

Просмотров:
41272

Недоступно в лицензиях:

Текущую редакцию Вашего 1С-Битрикс можно просмотреть на странице Обновление платформы (Marketplace > Обновление платформы).


Ограничений нет

  Видеоурок

Знаете ли вы, что поиск элементов инфоблока можно выполнять не только по названию, но и по значениям их свойств? Такой поиск будет работать у вас на сайте, если в свойствах отмечена всего лишь специальная галочка. Давайте вместе разберем данную настройку.

  Настройка поиска элементов по значениям их свойств

  • Откройте форму с настройками требуемого инфоблока (Контент > Инфоблоки > Типы инфоблоков > [ваш_инфоблок]) и перейдите на закладку Свойства.
  • Нажмите кнопку

    […]




    напротив интересующего свойства.
  • В открывшейся форме отметьте опцию

    Значения свойства участвуют в поиске




    .

    Примечание: поиск невозможен по значениям свойств следующих типов: Привязка к элементам, Привязка к разделам, Привязка к Яндекс.Карте, Привязка к карте Google Maps, Привязка к разделам с автозаполнением, Привязка к товарам (SKU), Привязка к элементам с автозаполнением, Привязка к теме форума, Привязка к элементам в виде списка и Счетчик.

  • Сохраните внесенные данные.
  • Выполните полную переиндексацию (т.е. в форме переиндексации флаг Переиндексировать только измененные должен быть снят).

Теперь поиск элементов инфоблока будет осуществляться и по названиям, и по значениям свойств.

Поиск элемента

Так как стандартного действия по поиску элемента списка или бизнес-процесса в Битриксе нет, то будем использовать REST API. Если у вас коробочная версия, то можно воспользоваться действием PHP-код, если же облачная, то в маркете есть два приложения, которые позволяют пользоваться REST API.

Описание задачи: Есть смарт-процесс Договоры, где настроен процесс согласования несколькими лицами. 

К смарт-процессу создан универсальный список согласований и при каждом решении того или иного лица это решение вносится в список. 

Согласования

Поля универсального списка:

Поля списка

На одном из этапов надо проверять решение конкретных лиц, для этого нужно найти это решение в списке и прочитать статус согласования. С помощью кода ниже мы ищем последнее решение генерального директора. Далее мы можем прочитать элемент и его поля стандартным действием Чтение элемента списка.

				
					if (BitrixMainLoader::includeModule('iblock'))
{
    $rootActivity = $this->GetRootActivity();

   $Doc_id = (int)"{{ID}}";
   $US_id = "{{ГД}}";
   $US_id = preg_replace("/[^0-9]/", '', $US_id);

$res = CIBlockElement::GetList(array('ID' => 'DESC'), array('IBLOCK_ID' => 35, '=PROPERTY_188' => $Doc_id, '=PROPERTY_189' => $US_id));
$elements = array();
while($ar = $res->Fetch())
{
    $elements[] = $ar['ID'];
}

   $rootActivity->SetVariable('Elements', $elements);
   $rootActivity->SetVariable('LastElement', $elements[0]);
   $rootActivity->SetVariable('Us', $US_id);
}
				
			
  • $Doc_id – ID договора в смарт-процессе;
  • $US_id – пользователь, чье решение нужно найти; 
  • ‘ID’ => ‘DESC’ – сортировка в убывающем порядке по полю ID;
  • ‘IBLOCK_ID’ => 35 – ID универсального списка; 
  • ‘=PROPERTY_188’ => $Doc_id – поле договор равно текущему договору;
  • ‘=PROPERTY_188’ => $US_id – пользователь равен искомому;
  • $elements[0] – первый элемент в отфильтрованном списке решений.

Коды полей универсального списка можно посмотреть в адресной строке при редактировании поля.

Поле договор

Обратите внимание, что поле договор – это поле типа Привязка к элементам CRM, при создании смарт-процесса в этом типе поля добавляются сущности, которые вы создали.

Читайте также

Задачи в БП

Битрикс 24

Вера


23.12.2021


27 комментариев

Отдел

Битрикс 24

Вера


13.12.2021


2 комментария

Фишки БП

Битрикс 24

Вера


12.11.2021


2 комментария

Заместители

Битрикс 24

Вера


06.05.2020


Комментариев нет

При работе с большим объемом информации в CRM важно быстро находить и фильтровать нужные элементы.

В этой статье вы узнаете:

  • как найти элемент по номеру телефона,
  • как найти элемент по имени и электронной почте,
  • как работает фильтр,
  • как найти элементы с незаполненным полем,
  • как использовать поля из контактов и компаний в фильтре сделок.
  • Поиск работает очень просто — начните вводить запрос в строку поиска, и отфильтрованные данные тут же появятся у вас на экране.

    поиск_контакт.png

    Как найти элемент по номеру телефона

    Если мы введём в строку поиска цифры, то CRM найдет элементы по номеру телефона, даже если цифры разбиты разделителями — пробелами, скобками и дефисами.

    Для корректного поиска желательно вводить не менее трех цифр.

    контакт_телефон.png

    Как найти контакты без номера телефона

    Теперь очень просто найти контакты, в которых сотрудники забыли указать номер телефона клиента. В фильтре нажмите Добавить поле и выберите поле Задан телефон.

    задан_телефон.png

    Далее выберите значение Да или Нет. Таким образом, вы получите список клиентов без номера телефона.

    телефон_не_задан.png

     

    Как найти элемент по имени и электронной почте

    Если мы введём в строку поиска буквы, то фильтр будет искать элементы по имени, фамилии, отчеству клиента или ответственного. Также поиск учитывает и адреса электронной почты.

    Вы можете ввести любое количество букв, но фильтр будет искать их в начале слова или как отдельное слово. То есть по запросу «ха» Битрикс24 найдет значения: Харитон, Харламов и Ю Чжэ Ха, но не найдет Кухарин.

    поиск_имя.png

    Как работает фильтр

    Фильтр — более гибкий вариант поиска по конкретным полям.

    Если вы не указали значения полей, пустой фильтр по умолчанию покажет все элементы.

    фильтр.png

    Как только вы укажете, что хотите найти например, всех обладателей джипов, фильтр покажет только подходящие элементы.

    фильтр_поле.png

    Фильтр найдет элементы даже по фрагменту значения.

    поиск_директор.png

    Как найти элементы с незаполненным полем

    В Битрикс24 есть возможность фильтровать поля в элементах по признаку заполнено или не заполнено.

    Допустим, вы решили привести базу данных в порядок и хотите найти всех клиентов, у которых не заполнено поле фамилия.

    Опция работает для всех типов полей, кроме файлов, списков, бронирования ресурсов и различных связей.

    У полей, для которых доступен данный фильтр, в правой части находится меню. Нажмите на него и выберите подходящее значение.

    поле_заполнено.png

    После того как выберите одно из значений, CRM выдаст результат поиска.

    результат_поиска.png

    Как использовать поля из контактов и компаний в фильтре сделок

    Сделки можно фильтровать по полям из связанных компаний и контактов. Эта возможность будет полезна, если нужно найти сделки с компаниями определенной сферы деятельности или с контактами, которые создал конкретный сотрудник.

    Чтобы выбрать поля из контактов и компаний, нажмите Добавить поле в фильтре сделок. В верхней части окна вы увидите три кнопки, которые включают и выключают поля из элементов CRM. Отметьте нужные элементы, а затем выберите поля, которые хотите добавить в фильтр.

    кнопки_фильтр.png

    Существует лимит по количеству сделок для поиска и фильтра по полям Контактов и Компаний. Поиск не работает по полям E-mail и телефон. Количество сделок, при котором будет работать поиск, считается по всем воронкам.

    • Бесплатный — 1 000 сделок.
    • Базовый — 50 000 сделок.
    • Стандартный — 50 000 сделок.
    • Профессиональный — 50 000 сделок.
    • Энтерпрайз — 100 000 сделок.

    Спасибо, помогло!

    Спасибо 🙂


    Это не то, что я ищу


    Написано очень сложно и непонятно


    Есть устаревшая информация


    Слишком коротко, мне не хватает информации


    Мне не нравится, как это работает

    Совсем недавно довелось нам поработать над созданием сложного поиска на сайте под управлением Битрикс. По результату этой задачи получился интересный кейс, который может быть полезен вам, если необходимо сделать нечто подобное, а опыта еще не достаточно.

    Прежде всего опишу, что в итоге получилось

    Итак, у нас был в разработке интернет-магазин и в шапке сайта должен функционировать быстрый поиск на базе ajax. Кроме поиска по товарам, надо было искать так же по разделам каталога (причем на всех уровнях), а так же по двум дополнительным инфоблокам Акции и Новости.

    Оформление нам уже дали готовое и все по задумке выглядело вот так:

    Поиск в Битрикс по нескольким сегментам сразу через ajax

    В этом быстром поиске надо было ограничить результаты – по 2-3 в каждом сегменте. А при нажатии кнопки поиска, пользователь переходил на страницу с полным списком результатов.

    Вот такую:

    Сложный поиск в 1С-Битрикс по элементам и разделам инфоблока

    Начнем с шапки

    Схема работы в целом классическая – нам необходимо вызывать событие js при вводе данных в строке и когда пользователь завершает ввод, отправляем ajax запрос в обработчик, где с помощью api мы находим нужные данные и возвращаем их в готовом виде.

    Поставив на строку поиску идентификатор id=”search_top” мы пишем такой скрипт:

    Что интересно, так это использование встроенной в Битрикс функции BX.ajax.insertToNode – очень удобная, так как весь запрос умещается в одну строку. В этой функции две переменных – одна это url куда отправляем запрос (причем его можно отправить с любыми get параметрами), а вторая – это id контейнера куда будет вставлен возвращаемый результат.

    Переходим к файлу обработчику. Мы все обработчики для удобства храним в папке /local/ajax/ – это место хранения у нас прописано в стандартах.

    Здесь чуть больше работы 🙂

    Для начала мы используя классы api битрикса находим через фильтр возможные совпадения. Вот как это выглядит на примере товара:

    Используем тут простой фильтр по названию добавляя знак процента “%NAME”=>$search

    По такому же примеру ищем возможные совпадения в разделах. Но тут у нас были усложнения. Если мы находим раздел на 3 уровне вложенности – надо было поднимать всю цепочку до первого уровня.

    По итогу такого поиска получаем массивы данных по всем сегментам. И тут есть два варианта – мы можем запросить все необходимые данные и далее их оформить или же получить только id элементов и далее уже использовать стандартные компоненты в связке с фильтрацией по полученным id.

    Мы выбрали второй вариант – в нашем случае он был целесообразнее, так как работая с чистым апи нам бы пришлось делать более емкие запросы, чтобы получить наборы свойств и цены товаров.

    Вот что мы дальше делаем с полученным массивом id`шников элементов.

    Добавляем компонент и фильтр к нему. Шаблон компонента для требуемого внешнего вида при этом редактируется стандартными средствами.

    Важно отметить, что мы прописываем везде условия – выводить компоненты только при наличии результатов совпадений. А также в каждом указываем ограничение по количеству отображаемых элементов.

    Подсчет количества результатов в этом примере идет простым подсчетом размера нужного массива через sizeof().

    Страница поиска

    Последним этапом было создание страницы поиска с полным списком результатов. По сути там мы повторяем аналогичную процедуру как в обработчике выше.

    Исключением являются отсутствие ограничения результатов, а также более расширенные шаблоны отображения найденного и дополнительные опции по сортировке списка.

    Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
    то ждем ваше обращение в нашей службе тех поддержки.

    Поиск элементов инфоблока по их свойствам

    Знаете ли вы, что поиск элементов инфоблока можно выполнять не только по названию, но и по значениям их свойств? Такой поиск будет работать у вас на сайте, если в свойствах отмечена всего лишь специальная галочка. Давайте вместе разберем данную настройку.

    Настройка поиска элементов по значениям их свойств

    Теперь поиск элементов инфоблока будет осуществляться и по названиям, и по значениям свойств.

    Документация по теме:

    • Создание и редактирование свойств инфоблока
    • Переиндексация

    Назад в раздел

    Подписаться на новые материалы раздела:

    Добавить комментарий