
Друзья, в основном, представление ссылок справочников определяется реквизитом "Наименование", но при этом встроенный полнотекстовый поиск позволяет добавлять в себя какие-либо другие реквизиты. В определенный момент, пользователь вводит строку поиска, ожидая получить совпадение по полю "Наименование", а в выдачу полнотекстовый поиск поднимает вверх записи по другому реквизиту, например по "Полному наименованию". При программном использовании, все становится еще загадочнее, но если возможности управлять полями поиска нет, что еще можно сделать?
Конечно, поиск по ПОДОБНО, но данный оператор эффективен только при поиске по началу строки ("Слово%").
А что если:
1. Перед записью элемента, реквизит "Наименование" разбить на слова и записать в табличную часть "Хештеги" со смещением, удаляя первое слово.
ТОРГОВЫЙ ДОМ "МАШИНОСТРОЕНИЕ"
|
Хештег |
|
ТОРГОВЫЙ ДОМ МАШИНОСТРОЕНИЕ |
|
ДОМ МАШИНОСТРОЕНИЕ |
|
МАШИНОСТРОЕНИЕ |
ООО "МАШИНОСТРОЕНИЕ"
|
Хештег |
|
МАШИНОСТРОЕНИЕ |
ООО МАШИНОСТРОЕНИЕ И ЛОГИСТИКА
|
Хештег |
|
МАШИНОСТРОЕНИЕ И ЛОГИСТИКА |
|
И ЛОГИСТИКА |
|
ЛОГИСТИКА |
Теперь мы сможем, используя ПОДОБНО "Машиностроение%", найти все три записи, но они будут без сортировки.
2. Добавить в табличную часть "Хештеги" реквизит "КоррекцияПозиции", через который реализовать следующий порядок вывода:
а) Записи, которые состоят из одного слова
б) Записи, которые ближе к началу строки
в) Записи, которые ближе к концу строки
КоррекцияПозиции = СловПосле + (СловДо * 10)
ТОРГОВЫЙ ДОМ "МАШИНОСТРОЕНИЕ"
|
Хештег |
Коррекция позиции |
|
ТОРГОВЫЙ ДОМ МАШИНОСТРОЕНИЕ |
2 = 2 + (0 * 10) |
|
ДОМ МАШИНОСТРОЕНИЕ |
11 = 1 + (1 * 10) |
|
МАШИНОСТРОЕНИЕ |
20 = 0 + (2 * 10) |
ООО "МАШИНОСТРОЕНИЕ"
|
Хештег |
Коррекция позиции |
|
МАШИНОСТРОЕНИЕ |
0 = 0 + (0 * 10) |
ООО МАШИНОСТРОЕНИЕ И ЛОГИСТИКА
| Хештег | Коррекция позиции |
| МАШИНОСТРОЕНИЕ И ЛОГИСТИКА | 2 = 2 + (0 * 10) |
| И ЛОГИСТИКА | 11 = 1 + (1 * 10) |
| ЛОГИСТИКА | 20 = 0 + (2 * 10) |
Таким образом, выполнив запрос:
"ВЫБРАТЬ
| Хештеги.Ссылка КАК Ссылка,
| МИНИМУМ(Хештеги.КоррекцияПозиции) КАК КоррекцияПозиции
|ИЗ
| Справочник.Контрагенты.Хештеги КАК Хештеги
|ГДЕ
| Хештеги.Хештег ПОДОБНО ""Машиностроение%""
|
|СГРУППИРОВАТЬ ПО
| Хештеги.Ссылка
|
|УПОРЯДОЧИТЬ ПО
| КоррекцияПозиции";
Мы получим:
|
Ссылка |
Коррекция позиции |
|
ООО "МАШИНОСТРОЕНИЕ" |
0 |
|
ООО МАШИНОСТРОЕНИЕ И ЛОГИСТИКА |
2 |
|
ТОРГОВЫЙ ДОМ "МАШИНОСТРОЕНИЕ" |
20 |
Как видите, все просто! А если поиск по началу слова в предложении ничего не нашел, тогда уже перенаправляем строку поиска в полнотекстовый для более глубокого анализа.
Вступайте в нашу телеграмм-группу Инфостарт