Каждый пользователь 1С постоянно использует возможности платформы «1С Предприятие» по поиску справочников/документов и прочих типов данных.
Мы настолько привыкли к этой возможности что практически не задумываемся как она работает. Бывают ситуации когда платформа 1С выдает в результатах поиска не совсем то, что мы ожидали. Разберёмся почему это происходит и как правильно использовать механизмы поиска.
Представим что у нас в справочнике «Номенклатура» есть несколько элементов: «Краска белая», «Краска жёлтая», «Краска синяя» и т.д.
Нам нужно найти именно синюю краску и мы вводим в поле поиска строку «син»:
Как мы видим, 1С нашла нужный элемент и подсветила цветом совпавшую часть строки.
Что в этот момент происходит «под капотом»? В платформе 1С есть несколько механизмов поиска. В самом простом варианте 1С читает из базы все элементы справочника по очереди и ищет в каждом из них нужную строку по специальному алгоритму. Это работает хорошо, пока количество элементов в справочнике небольшое. А что если в справочнике десятки или сотни тысяч элементов? Да, среди наших баз есть и такие.
В этом случае на помощь приходят механизмы «полнотекстового поиска». В платформе 1С их две версии. Принцип их работы примерно одинаков – все элементы справочников при создании или изменении сразу попадают в отдельную поисковую систему. В ней они хранятся не целыми строками, а сразу делятся на слова. Выглядит это примерно вот так:
В результате вместо того чтобы читать все элементы из основной базы, запрос на поиск отправляется в данную поисковую систему. Это позволяет избежать дополнительной нагрузки на базу данных 1С, чтобы ваши отчёты строились, а документы проводились как можно быстрее. Так как в поисковой системе индекс уже построен по отдельным словам, то запрос «син» сразу выберет из базы нужный элемент.
Здесь кроется «подводный камень». В динамических списках полнотекстовый поиск почти всегда ищет, начиная с начала слова, как это описано в ИТС.
Это значит что при попытке ввести «иняя» мы можем не увидеть «Краска синяя» в списке найденных элементов. Эта проблема может проявляться например при попытке поиска по части артикула.
Если вам необходим поиск по подстроке артикула или какого-либо слова, то можно воспользоваться «Расширенным поиском». Он вызывается через контекстное меню, либо через горячие клавиши Alt+F:
Другой вариант – это использовать «Настройку списка» в меню «Еще». В этом случае есть возможность вывести на форму списка поиск по нужному элементу, например «Артикул»:
Вторая особенность полнотекстового поиска – обработка букв «е» и «ё».
Существует две версии полнотекстового поиска. В первой выполняется автоматическая замена буквы «ё» на букву «е». В результате слова «ёж» и «еж» становятся одинаковыми (с точки зрения поиска). Во второй буквы «е» и «ё» считаются различными. При необходимости выполнить поиск слова, которое содержит букву «ё», слово необходимо писать именно с буквой «ё». В большинстве баз «на разделителях» используется вторая версия полнотекстового поиска.