Как найти строку в битрикс

Универсальный алгоритм поиска:

1) Открываем urlrewrite.php, смотрим есть ли правило для данной страницы. Если есть – открываем страницу из правила, если нет – ищем физическую страницу
2) Смотрим наличие кода компонентов на данной странице, проверяем включаемые области. Если проект тестовый, то можно по одному убирать компоненты, пока не найдете.
Если убрали все компоненты, а надпись выводится, то идем дальше
3) Открываем настройки сайта и смотрим какой шаблон выводится на данной странице. Открываем его по ssh (как header.php так и footer.php) смотрим компоненты, включаемые области, области с отложенными функциями (ShowViewContent)
4) Если надпись все еще не выводится, смотрим события страницы

Делая все 3 шага Вы сможете найти что угодно в Битриксе.
Как пример, данная область может быть:
1) Физическим тестом на странице
2) Включаемой обастью подключаемой на странице
3) Результатом работы компонента
4) Отложенным результатом компонента
5) Физическим текстом в шаблоне
6) Результатом работы компонента в шаблоне
7) Результатом работы отложенной функции в footer.php
8) Результатом работы отложенной функции на событиях страницы

Навигация и поиск

Урок
57
из
372

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

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


2 из 5

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

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

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

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


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

  Как быстро попасть на нужную страницу

В Административном разделе предусмотрено несколько способов навигации и поиска. Традиционно навигация осуществляется с помощью пунктов Административного меню и Меню функций. Но есть и быстрый способ навигации – с помощью навигационной цепочки:

  “Умный” поиск – быстрый поиск

На любой странице Административного раздела можно воспользоваться “умным” поиском, который при наборе слова уже начинает предлагать возможные варианты страниц, где встречается набираемое слово:

  Поиск по файлам

В рамках

файловой структуры

Физическая структура – это порядок размещения
физических файлов в папках сайта на сервере.
В том числе файлов с программным кодом.
Мы рекомендуем
работать с физической структурой с большой осторожностью.
Вы можете повредить системные файлы и всё сломается:).



есть механизм поиска файлов, размещающийся на контекстной панели в виде кнопки

Поиск




. Нажатие на эту кнопку открывает окно поиска:

Поиск ищет как по имени, так и по содержимому. Ограничения можно наложить следующие:

  • По папке или сайту;
  • Дате изменения;
  • Размеру файла;
  • Регистру.

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

С помощью поиска можно произвести замену слова или фразу в файле. Для этого воспользуйтесь закладкой Замена.

При работе с большим объемом информации в 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 сделок.

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

    Спасибо 🙂


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


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


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


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


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

    Вы замечали что иногда поиск по документам на диске (и не только) в коробочной версии Битрикс24 не всегда ищет по содержимому, а в последних версиях он вообще не ищет по содержимому документов? А уж об индексации pdf/jpg и других форматов так и вообще можно забыть. Нет, на самом деле это немножечко не так и эта особенность поддается корректировке.

    Заинтересовались? Поехали!

    Как устроен поиск в Битриксе?

    Исторически в платформе всегда использовался поиск средствами модуля Поиск. Когда создается элемент инфоблока специальный механизм применяется к элементу и собрает с него поисковый контент, который токенизирует и складывает в отдельные таблицы b_search* и когда пользователь начинает вводить поисковый запрос, он разбивается на токены и ищется в этих таблицах. Время шло и со временем поиск перестал удовлетворять по критериям скорости и объема информации. Так поиск получил возможность интеграции с sphinx.

    Для 1С-Битрикс: управления сайтом такого варианта вполне хватало: был либо поисковый запрос либо параметры фильтрации, однако пользовательский сценарий работы в Битрикс24 подразумевает использование обоих механизмов, что делает текущие варианты не эффективным. Разработчики Битрикс24 решили перейти на фильтрацию с полнотекстовым поиском в MySQL что дает возможность одновременного использования фильтрации и поиска.

    Презентацию можно сказать по ссылке: скачать презентацию

    Таким образом каждый элемент битрикс24 в своей таблице (или отдельной таблице) содержит некоторый столбец с текстом, по которому выполняется полнотекстовый поиск. Когда вы создаете сделку/контакт/загружаете файл в соответствующей таблице в этот столбец записывается конкатенация параметров и когда производится поиск то он осуществляется именно по этому столбцу.

    Как включить индексацию диска?

    Для базовой настройки индексации достаточно активировать эту возможность в настройках модуля Диск.

    Админ.панель - Настройки - Настройки продукта - Настройки модулей - Диск
    Админ.панель – Настройки – Настройки продукта – Настройки модулей – Диск

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

    Индексация документов в действии
    Индексация документов в действии

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

    Например для 10 маленьких локальных документов это может быть 10 минут, а для тысяч документов расположенных в облаке этот процесс может растянуться на недели или даже месяцы.

    Как именно индексируются документы?

    Если с текстовыми полями все более менее понятно: берем значения и пишем в поле, то как происходит извлечение информации из файлов?

    При включенной индексации содержимого файлов для каждого загружаемого файла последовательно вызывается обработчик события OnSearchGetFileContent модуля search. Результат первого обработчика и будет является контентом документа (остальные обработчики даже не будут вызваны). Для файлов таким обработчиком внезамно является модуль Интранет (на событие подписан класс CIntranetSearchConverters с его одноименным методом OnSearchGetFileContent, найти который вы можете по пути: /bitrix/modules/intranet/tools/search.php)

    Думаю не нужно объяснять, что для работы с MSOffice форматами, выбором языка программирования PHP будет не лучшим решением. Разработчики битрикса это в целом тоже понимают, поэтому для извлечения контента они используют внешние команды.

    Что такое внешняя команда?

    Это любое linux приложение вызванное через php-функцию exec от пользователя под которым запущен apache, которое получает на вход путь к документу и выводит на экран текстовое содержимое.

    Например для конвертации doc-формата используется linux приложение catdoc. Часть из них вы можете найти в настройках модуля интранет, другая часть зашита в ядро продукта

    Из коробки помимо перечисленных форматов индексируются так же: docx, odt, odp, ods, rtf, xlsx, pptx.
    Из коробки помимо перечисленных форматов индексируются так же: docx, odt, odp, ods, rtf, xlsx, pptx.

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

    Из хороших идей, можно сделать:

    • ML-парсер изображений (писать в духе поисковых систем: “на изображении человек”
    • Распознавать текст на картике
    • Проводить распознавание речи для аудиофайлов

    Не устраивает качество?

    И хотя в битрикс24 имеется стандартные способы индексации, всегда можно их изменить. Например, меня не очень устраивает стандартная индексация docx файла: она медленная и не полная. Я обычно в таких случаях ставлю на linux-овую виртуальную машину libreoffice (последняя, на момент работ была 6.4) и прописываю доп. строчку в настройках модуля Интранет:

    Расширение: docx

    Внешняя команда: libreoffice6.4 –headless –convert-to “txt:Text (encoded):UTF8” # FILE_NAME# –cat –outdir /tmp

    Каталог программы: /usr/bin

    P.S. Между # и FILE_NAME# не должно быть пробела – это дзен ставит хеш-теги

    Только убедитесь, что выполнение команды под пользователем bitrix на файле docx формата выводит его содержимое в консоль 🙂

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

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

    Итак, у нас был в разработке интернет-магазин и в шапке сайта должен функционировать быстрый поиск на базе 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().

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

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

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

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