Поиск по произвольным частям текста

07.04.19

Задачи пользователя - Поиск данных

Часто мы точно не знаем точное и полное название элемента справочника. Но знаем примерно его части. Например, хотим найти валюту "Доллар США", но помним только что название точно содержит два слова "олл" и "ША".

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Поиск по произвольным частям текста, демо-база
.dt 273,95Kb ver:1
4 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Демо-база работает на платформе 1с.8.3.12 и выше.

Часто мы точно не знаем точное и полное название элемента справочника. Но знаем примерно его части. Например, хотим найти валюту "Доллар США", но помним только что название точно содержит два слова "олл" и "ША".

Паттерн получения запроса:

Функция ПолучитьЗапросНаПоискПоЛексемамВСправочнике(Текст,Справочник="Валюты",Тип="Справочник",Поле="Наименование") Экспорт
	
	// может будет медленно, когда ссылок будет много.
	// разделим строку поиска на лексемы через пробел
	МассивЛексем	= СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Текст," ");
	Для Счетчик = 0 По МассивЛексем.Количество()-1 Цикл
		МассивЛексем[Счетчик]	= "%"+МассивЛексем[Счетчик]+"%";
	КонецЦикла;
	//Если СтрокаМассива.Количество()>5 Тогда
	//	Сообщить("Поиск будет произведен только по первым пяти частям строки.",СтатусСообщения.Внимание);
	//КонецЕсли;
	
	Запрос	= Новый Запрос;
	Запрос.УстановитьПараметр("Лексема0",МассивЛексем[0]);
	Запрос.УстановитьПараметр("Лексема0Р",ВосстановитьРаскладку(МассивЛексем[0]));
	Запрос.Текст	= 
		"ВЫБРАТЬ различные
		|	Справочник.Ссылка,Справочник.ПометкаУдаления
		|ИЗ
		|	Справочник.Валюты КАК Справочник
		|ГДЕ
		|	(Справочник.Наименование ПОДОБНО &Лексема0
		|	ИЛИ Справочник.Наименование ПОДОБНО &Лексема0Р)"
		;
		
	Для Счетчик = 1 По МассивЛексем.Количество()-1 Цикл
		Запрос.УстановитьПараметр("Лексема"+Счетчик+"",МассивЛексем[Счетчик]);
		Запрос.УстановитьПараметр("Лексема"+Счетчик+"Р",ОбщегоНазначения.ВосстановитьРаскладку(МассивЛексем[Счетчик]));
		Запрос.Текст	= Запрос.Текст+"
			|И (Справочник.Наименование ПОДОБНО &Лексема"+Счетчик+"
			|	ИЛИ Справочник.Наименование ПОДОБНО &Лексема"+Счетчик+"Р)";
	КонецЦикла;
		
	Запрос.Текст	= СтрЗаменить(Запрос.Текст,"Валюты",Справочник);	
	Запрос.Текст	= СтрЗаменить(Запрос.Текст,"Справочник",Тип);	
	Запрос.Текст	= СтрЗаменить(Запрос.Текст,"Наименование",Поле);
		
	Возврат Запрос;	
	
КонецФункции

 

Использование запроса в управляемых формах - подключение к полю выбора:

Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
	
	СтандартнаяОбработка	= Ложь;

	Запрос			= ОбщегоНазначения.ПолучитьЗапросНаПоискПоЛексемамВСправочнике(Параметры.СтрокаПоиска,"Валюты");		
	//Запрос.Текст	= Запрос.Текст+" И НЕ Справочник.НеИспользоватьВВыборе";
	
	Результат				= Запрос.Выполнить();
	
	ДанныеВыбора			= Новый СписокЗначений;
	ВыборкаДетальныеЗаписи	= Результат.Выбрать();
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		
		Структура = Новый Структура("Значение,ПометкаУдаления",ВыборкаДетальныеЗаписи.Ссылка,ВыборкаДетальныеЗаписи.ПометкаУдаления);
		
		Элемент = ДанныеВыбора.Добавить();
		Элемент.Значение = Структура;
		
	КонецЦикла;
	
КонецПроцедуры

 

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

текст поиск вхождение слов

См. также

Работа с интерфейсом Анализ учета Мониторинг 1С:Предприятие 8 1С 8.3 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:Библиотека стандартных подсистем 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:Зарплата и Управление Персоналом 3.x 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 Платные (руб)

Создайте свой функциональный интерфейс в любой конфигурации 1С с помощью расширения Infostart Dashboard. Настраивайте панели виджетов с метриками, индикаторами и показателями на начальном экране. Узнайте возможность внедрения подсистемы у себя в конфигурации с помощью бесплатной обработки "Анализ внедрения подсистемы 1С Infostart Dashboard"!

28800 руб.

27.03.2025    56404    31    25    

45

Информационная безопасность Поиск данных ServiceDesk, HelpDesk Журналы и реестры данных 1С 8.3 Россия Бухгалтерский учет Бюджетный учет Налоговый учет Управленческий учет Платные (руб)

Полный контроль над изменениями в 1С без нагрузки на вашу базу. Мгновенный доступ к истории изменений, удобное сравнение и откат данных в один клик. Простой отчет с визуальным отображением изменений Откат на любую версию объекта в два клика История изменения данных хранится во внешней базе

180000 руб.

05.09.2025    1796    1    1    

3

Поиск данных Системный администратор Программист 1С:Предприятие 8 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:Зарплата и Управление Персоналом 3.x 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 1С:Розница 2 1С:Розница 3.0 Платные (руб)

Обработки помогут Вам легко и, главное, быстро (в 5 раз и быстрее штатной обработки 1С), выполнить поиск дублирующих данных в Ваших базах 1С на платформах 8.1-8.3. Это позволит уменьшить объем лишней информации в справочниках и документах, планах видов характеристик и др., упростит работу с данными пользователям. А так же можно, одним нажатием, узнать в каких ссылочных объектах есть вообще дубли! Понятное расположение команд и настроек, в сочетании с описанием и справкой, еще упростят процесс. А так же обновления Вы получаете бесплатно в течение года с момента приобретения данных обработок! (Обновление от 27.11.2023, версия 6.12)

13200 руб.

14.05.2012    165240    353    253    

586

Разработка Инструментарий разработчика Работа с интерфейсом Адаптация типовых решений Нейросети 1C:Бухгалтерия 1C:ERP 1С:ЗУП 1С:КА 1С:УНФ 1С:УТ 1С:Розница 1С:ДО 1С:ERP Управление предприятием 2 Платные (руб)

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

36000 руб.

28.08.2025    2702    1    2    

4

Работа с интерфейсом Системный администратор Программист 1С:Предприятие 8 1C:Бухгалтерия Платные (руб)

Расширение «Динамическое управление доступом к элементам форм объектов 1С8» предназначен для обеспечения возможности оперативного управления видимостью и доступностью элементов форм документов и справочников продуктов фирмы «1С» «1С:Предприятие 8». Решение универсальное, встраивается в любую конфигурацию с минимальными доработками, что позволяет без проблем обновлять типовые решения.

6000 руб.

14.01.2016    58242    20    25    

46

Работа с интерфейсом Программист 1С:Предприятие 8 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

Обработка предназначена для создания и управления дашбордами (виджетами) в 1С.

5160 руб.

29.06.2020    22865    32    6    

51
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. tormozit 7325 07.04.19 20:12 Сейчас в теме
Чем не устроил стандартный механизм?
Прикрепленные файлы:
ixijixi; mefalcon; KolBbl4; +3 Ответить
4. user635629_exter 39 09.04.19 16:33 Сейчас в теме
(1) спасибо, не знал про это.
(3) спасибо, перед публикацией честно искал дубли, не нашел. По ссылке хорошая вещь, но мне бы по-проще.
2. RustIG 1931 07.04.19 20:30 Сейчас в теме
(0) интересный способ!
(1) то, что обратили внимание на типовой механизм +
а так-то можно и порассуждать:
а) типовой механизм - работает только для справочников, а в статье универсально механизм - можно применить алгоритм для поиска всех документов с комментарием "Иванов" + "наличка"
б) типовой механизм работает только для поля ввода, а в статье универсально - для любого элемента формы можно запустить поиск - например, обход строк в ТабличномДокументе и поиск чего-либо
в) неизвестно как запрограммирован типовой алгоритм, а тут код открыт - можно свою функциональность довнести.
3. Evg-Lylyk 5219 08.04.19 11:29 Сейчас в теме
Для отправки сообщения требуется регистрация/авторизация