Поиск по началу слова в предложении

17.11.25

Разработка - Запросы

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

 

Друзья, в основном, представление ссылок справочников определяется реквизитом "Наименование", но при этом встроенный полнотекстовый поиск позволяет добавлять в себя какие-либо другие реквизиты. В определенный момент, пользователь вводит строку поиска, ожидая получить совпадение по полю "Наименование", а в выдачу полнотекстовый поиск поднимает вверх записи по другому реквизиту, например по "Полному наименованию". При программном использовании, все становится еще загадочнее, но если возможности управлять полями поиска нет, что еще можно сделать?

Конечно, поиск по ПОДОБНО, но данный оператор эффективен только при поиске по началу строки ("Слово%").

 

А что если:

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

 

Как видите, все просто! А если поиск по началу слова в предложении ничего не нашел, тогда уже перенаправляем строку поиска в полнотекстовый для более глубокого анализа.

Вступайте в нашу телеграмм-группу Инфостарт

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    273695    1523    422    

1185

Инструментарий разработчика Запросы Программист 1С 8.3 1С:Бухгалтерия 3.0 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

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

2 стартмани

06.07.2026    3979    53    XSlava    20    

45

Запросы Программист 1С 8.3 Россия Бесплатно (free)

Визуальный «Конструктор запроса» 1С, встроенный прямо в VS Code, — аналог конструктора из Конфигуратора и EDT, но без запуска платформы. Расширение читает конфигурацию, выгруженную в файлы, позволяет собрать запрос мышью и генерирует корректный текст на языке запросов 1С (SDBL). Открывает уже существующий текст запроса из кода для правки и — что особенно ценно — сохраняет комментарии при цикле «открыть - править - сохранить». Подходит тем, кто пишет код 1С в VS Code, держит под рукой множество проектов и не хочет ради одного запроса запускать тяжёлый Конфигуратор или EDT.

26.06.2026    9062    Alex_YAM    5    

33

WEB-интеграция Запросы Программист 1С 8.3 Абонемент ($m)

Post1C - это внешняя обработка, которая превращает 1С в полноценный инструмент для тестирования REST API. Всё управление сосредоточено в одном окне: настройка запроса, выполнение, просмотр ответа и генерация кода - без переключения между формами. Аналог Postman, но работающий в привычной среде 1С.

1 стартмани

02.04.2026    3407    87    priem_nv    27    

66

Инструментарий разработчика Запросы Программист 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

QueryConsole1C — расширение, включающее консоль запросов с поддержкой исполняемых представлений — аналогов виртуальных таблиц, основанных на методах программного интерфейса ЗУП. Оно позволяет выполнять запросы с учётом встроенной бизнес-логики, отлаживать алгоритмы получения данных и автоматически генерировать код на встроенном языке 1С.

1 стартмани

16.05.2025    12615    158    zup_dev    32    

86

Инструментарий разработчика Запросы Программист 1С:Предприятие 8 1С:ERP Управление предприятием 2 Абонемент ($m)

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

2 стартмани

05.03.2025    7079    24    XilDen    12    

29

Обновление 1С Запросы Программист 1С:Предприятие 8 1С:ERP Управление предприятием 2 Абонемент ($m)

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

3 стартмани

06.02.2025    6330    38    XilDen    26    

42
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. paulwist 17.11.25 10:27 Сейчас в теме
Перед записью элемента, реквизит "Наименование" разбить на слова


С помощью "чего" или на основании какого критерия определяется отдельное "слово" ??
3. ivshumelev 61 17.11.25 12:44 Сейчас в теме
(1) Мы разбиваем по пробелу, но перед этим "нормализируем строку" - удаляем кавычки, запятые и прочие символы. Тоже самое проделываем с введенной строкой пользователем.
5. paulwist 17.11.25 13:24 Сейчас в теме
(3) А как осуществляется поиск, что передаётся в предикат??
6. ivshumelev 61 17.11.25 13:43 Сейчас в теме
(5) Я не совсем понимаю что значит предикат, но в запросе применяется отбор:
Хештеги.Хештег ПОДОБНО "Машиностроение%" - поиск по началу строки
7. paulwist 17.11.25 14:11 Сейчас в теме
(6)
запросе применяется отбор


Имелось в виду, например юзер ищет наименование " l'Etual ", что передаётся в качестве Хештега??
8. ivshumelev 61 17.11.25 15:13 Сейчас в теме
(7) Предположим есть контрагент с наименованием " l'Etual "

1. В модуле объекта перед записью, все реквизиты по которым формируем хештег, отправляем сначала в функцию нормализации:
а) СокрЛП
б) ВРег
в) Удаляем не нужные на наш взгляд символы !№;%:?*()_+/*-/,#@$%^&*()|:?><{}[]. '“”«»
г) Удаляем повторяющиеся пробелы

В итоге:
" l'Etual "
LETUAL

В Таблицу хештеги добавится 1 строка
Хештег: LETUAL
КоррекцияПозиции: 0 = 0 + (0 * 10)

2. Пользователь когда вводит строку поиска " l'Etual ", мы её тоже сначала нормализуем в той же функции, а затем уже по ней ищем:
LETUAL%

3. Если ничего не нашлось, отправляем в полнотекстовый.

Сейчас, вот так.
2. SerVer1C 1121 17.11.25 10:29 Сейчас в теме
Велосипед какой-то.
Зачем удалять первое слово из предложения, если можно просто по словам разбить предложение.
4. ivshumelev 61 17.11.25 12:50 Сейчас в теме
(2) В пример попало удаление первого слова если это ООО, АО и прочее. Сделали из предположения, что "ООО Машиностроение" никто не ищет, но возможно, вы правы, стоило собрать статистику.
Для отправки сообщения требуется регистрация/авторизация