При работе с номенклатурой или другими справочниками в 1С пользователи часто сталкиваются со странным поведением поиска. Например, при попытке найти товар с наименованием «Товар 25/40» через поле ввода, система может выдать в подсказках позиции, где эти числа стоят через пробел или в другом порядке. Разберем детально, почему так происходит, как на это влияет версия платформы и какие настройки позволяют добиться точного поиска по спецсимволам.
Проанализируем поведение системы в зависимости от используемой версии платформы. Это ключевой фактор, который определяет, будут ли символы /, \, ., , и - восприниматься как часть искомой строки или как разделители слов.
В версиях платформы ниже 8.3.16:
Платформа жестко интерпретировала символы точки, запятой, тире и слэша как разделители. Если вы вводили «25/40», 1С разбивала этот запрос на два слова: «25» и «40». В результате поиск работал по логике «И», находя все строки, где встречаются оба этих числа, независимо от наличия слэша между ними. Именно поэтому в результатах поиска могли появляться позиции вида «Товар 25 артикул 40».
В версиях платформы 8.3.16 и выше:
Разработчики 1С изменили этот механизм. Теперь единственным стандартным разделителем при поиске считается пробел. Символы ., ,, -, / и \ больше не считаются разделителями и воспринимаются как обычные символы. Если ваша база работает на современной платформе, поиск по строке «25/40» должен искать именно это точное вхождение.
Выясним причину, по которой даже на новых платформах поиск может вести себя непредсказуемо. В настройках каждого справочника (например, «Номенклатура») существует свойство «Использовать полнотекстовый поиск при вводе по строке». Рассмотрим два варианта работы:
ПОДОБНО (LIKE). В этом случае поиск по подстроке «25/40» отработает максимально точно, так как для базы данных это просто набор символов.Разберем, какие действия необходимо предпринять программисту или администратору, чтобы поиск учитывал спецсимволы:
Откроем конфигуратор и найдем нужный справочник. Перейдем на вкладку «Данные» и нажмем кнопку «Ввод по строке». Проверим, какие поля выбраны для поиска. Важно, чтобы реквизит (например, Наименование или Артикул) был индексирован. Рассмотрим настройку индексации: для качественного поиска по любой части строки у реквизита должно стоять свойство Индексировать.
Посмотрим на свойство справочника «Способ выбора при вводе по строке». В современных типовых конфигурациях (УНФ, УТ 11, ERP) этот параметр часто управляется через настройки БСП. Рассмотрим варианты:
Если вы работаете в облаке и не можете менять свойства метаданных напрямую, можно воспользоваться расширением. Рассмотрим пример кода, который можно внедрить в модуль менеджера объекта для переопределения стандартного поиска в процедуре ОбработкаПолученияДанныхВыбора:
Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
// Если пользователь ввел строку со слэшем
Если СтрНайти(Параметры.СтрокаПоиска, "/") > 0 Тогда
СтандартнаяОбработка = Ложь;
// Формируем запрос вручную, чтобы избежать разбиения на слова
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 50
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.Наименование КАК Наименование
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Наименование ПОДОБНО &СтрокаПоиска";
Запрос.УстановитьПараметр("СтрокаПоиска", "%" + Параметры.СтрокаПоиска + "%");
Результат = Запрос.Выполнить();
ДанныеВыбора = Новый СписокЗначений;
ДанныеВыбора.ЗагрузитьЗначения(Результат.Выгрузить().ВыгрузитьКолонку("Ссылка"));
КонецЕсли;
КонецПроцедуры
Проанализируем ситуацию с полнотекстовым поиском. Если поиск по символам работает некорректно, попробуйте временно отключить использование полнотекстового поиска для ввода по строке в свойствах справочника. Это заставит систему использовать механизм ПОДОБНО, который более прямолинеен при работе со спецсимволами.
Также важно помнить про синтаксис поисковых выражений. Если ППС включен, попробуйте заключать строку в двойные кавычки при вводе, например: ""25/40"". Это указывает поисковому движку на необходимость поиска точной фразы. Однако, как показывает практика обсуждений, в облачных решениях этот механизм может быть программно ограничен разработчиками конфигурации.
Подведем итог. Чтобы поиск в 1С учитывал слэши и другие знаки препинания:
ОбработкаПолученияДанныхВыбора для реализации собственного алгоритма поиска.Рассмотренные методы позволяют гибко настроить систему под нужды пользователей, работающих со сложными артикулами и наименованиями, содержащими технические символы.