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

29.01.14

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

Поиск любых справочников по частям слов наименования

Скачать файлы

Наименование Файл Версия Размер
Поиск номенклатуры.dt
.dt 2,04Mb
10
.dt 2,04Mb 10 Скачать

Поиск любых справочников по частям слов наименования, при этом не важно, в каком порядке вводить части слов наименования.
Например при строке поиска "ламп 40 вт" результат будет тем же, что и при поиске по строке "вт ламп 40".
Поиск происходит очень быстро, при номенклатуре в 40 000 позиций, время работы около 1,5 - 2 сек.

Подключение к конфигурации производится путем объединения конфигураций.
В прилагаемом файле находится база данных с небольшим количеством номенклатуры для примера.
Конфигурация базы данных содержит только необходимые объекты метаданных:

1. Общий модуль с небходимыми процедурами
2. Подписка на событие "ПриЗаписи" объекта "СправочникОбъект.Номенклатура". Если необходимо выполнять поиск
    в другом справочнике, то его тип нужно добавить в список типов источника подписки.
3. Регистр сведений "_БазаСлов" хранит "огрызки" слов, составляющих наименования элементов справочника
4. Обработка "_ПереиндексацияБазыСлов" служит для первоначального заполнения регистра сведений "_БазаСлов", а 
    так же для его очистки в случае необходимости.
5. Обработка "_БыстрыйПоискЭлементовСправочника" служит для ввода поисковой строки и вызывается из формы списка
    справочника. Я в своем примере на форму списка номенклатуры добавил две кнопки "Поиск" и "ПоискОчистка", назначил
    им сочетания клавиш "F7" и "Ctrl+F7"

Не используются внешние компоненты.

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

См. также

Быстрый поиск дублей с четким/нечетким поиском по любому сочетанию реквизитов/реквизитов таб. частей с отбором и быстрой заменой значений в ЛЮБЫХ базах 8.1-8.3 (УТ 10.3, БП 2, ЗУП 2.5, КА 1.1, УТ 11, БП 3, УНФ 1.6/3.0, КА 2, ЗУП 3 и т.д.)

Поиск данных Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

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

9600 руб.

14.05.2012    155289    326    252    

558

Журнал изменений с восстановлением состояния ссылочных объектов и архивацией по HTTP / COM (расширение + конфигурация, 8.3.14+, ЛЮБАЯ конфигурация)

Архивирование (backup) Журнал регистрации Поиск данных Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 1С:Управление торговлей 11 Платные (руб)

База данных «сама» меняет данные в документах/справочниках? Тогда данный журнал изменений для Вас! Практически не влияет на скорость записи объектов за счет быстрого алгоритма! Скорость работы почти в 2 раза выше типового механизма "История изменений"! Позволяет следить за изменениями и удалением в любых ссылочных объектах конфигурации, с возможностью архивации по HTTP(!) или COM, и сверткой данных. А так же, может восстановить состояние реквизитов (значения) до момента изменения или удаления объекта из базы. Есть ДЕМО-база где можно самостоятельно протестировать часть функционала! Работает на любых платформах выше 8.3.14+ и любых конфигурациях! Версия 3.1 от 24.08.2023!

19200 руб.

15.05.2017    42521    10    24    

38

Кто такая Мантикора?

Поиск данных Платформа 1С v8.3 Россия Абонемент ($m)

Статья об опыте развертывания и интеграции с базой данных Manticore Search для быстрого полнотекстового поиска.

1 стартмани

30.11.2023    3058    andreysidor4uk    16    

45

PowerOffice

Поиск данных Корректировка данных Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

PowerOffice - обработка для поиска, просмотра и обработки данных для пользователей. Доступ к объектам на просмотр и редактирование данных определяется правами пользователя.

1 стартмани

05.06.2023    1922    23    PowerBoy    1    

15

Получение ссылки по бинарной строке PostgreSQL или MSSQL

Поиск данных Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Получение ссылки в 1С по бинарной строке из PostgreSQL в виде строки формата bytea или из MSSQL в виде шестнадцатиричной строки. Кроме ссылочных объектов ссылки могут быть получены и для перечислений. Это может быть полезно при анализе логов журнала регистрации или СУБД.

1 стартмани

04.04.2023    2580    2    berserg    2    

12

Поиск документов с ошибками проведения, универсальный

Поиск данных Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Обработка позволяет найти проведенные документы без движений и, наоборот, НЕ проведенные документы с движениями. Подходит для любой конфигурации.

1 стартмани

18.08.2022    2986    21    KVIKS    3    

10

Поиск и замена значений + Поиск дублирующихся элементов справочников с подключением к внешней базе

Поиск данных Корректировка данных Платформа 1С v8.3 Управляемые формы Платформа 1C v8.2 Конфигурации 1cv8 Платные (руб)

Обработка предназначена для гибкого поиска и дальнейшей замены дублей справочников, документов, а также планов видов расчетов и планов видов характеристик. В обработку включена возможность проверки наличия ссылки во внешней базе (по УИДу), поиска дублей с предварительным отбором, а также произвольной обработки реквизитов перед поиском (например, возможно удалить определенные символы из наименования).

3600 руб.

30.03.2022    8586    3    0    

5
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. cool.vlad4 2 30.01.14 01:27 Сейчас в теме
3. Регистр сведений "_БазаСлов" хранит "огрызки" слов, составляющих наименования элементов справочника
4. Обработка "_ПереиндексацияБазыСлов" служит для первоначального заполнения регистра сведений "_БазаСлов", а
так же для его очистки в случае необходимости.

А зачем? когда данная задача решается просто разбиением строки и формированием запроса через ПОДОБНО? и по скорости уж точно не медленнее, чем
Поиск происходит очень быстро, при номенклатуре в 40 000 позиций, время работы около 1,5 - 2 сек.
2. Re:аниматор 338 30.01.14 09:26 Сейчас в теме
Подскажу вам хитрость как это легко доработать в процедуре поиске стандартных конфигураций.

На примере обработки "Подбор номенклатуры" УТ 10.3

Процедура ВыполнитьПоиск()
...

		// заменим спецсимволы
		ШаблонПоиска = СтрЗаменить(ШаблонПоиска, "~", "~~");
		ШаблонПоиска = СтрЗаменить(ШаблонПоиска, "%", "~%");
		ШаблонПоиска = СтрЗаменить(ШаблонПоиска, "_", "~_");
		ШаблонПоиска = СтрЗаменить(ШаблонПоиска, "[", "~[");
		ШаблонПоиска = СтрЗаменить(ШаблонПоиска, "-", "~-");
		ШаблонПоиска = "%" + ШаблонПоиска + "%";

		Запрос = Новый Запрос;
		Запрос.УстановитьПараметр("ШаблонПоиска", ШаблонПоиска);

...

Показать


Заменяем на

		// заменим спецсимволы
		ШаблонПоиска = СтрЗаменить(ШаблонПоиска, "~", "~~");
		ШаблонПоиска = СтрЗаменить(ШаблонПоиска, "%", "~%");
		ШаблонПоиска = СтрЗаменить(ШаблонПоиска, "_", "~_");
		ШаблонПоиска = СтрЗаменить(ШаблонПоиска, "[", "~[");
		ШаблонПоиска = СтрЗаменить(ШаблонПоиска, "-", "~-");
		
		ШаблонПоиска = СокрЛП(ШаблонПоиска);

		ТекстИ = "
		|	И ";
		ТекстУсловияОтбораПоШаблону = "";
		СписокПодШаблонов = Новый СписокЗначений;
		ЕстьПробелы = Найти(ШаблонПоиска, " ") > 0;
		н = 0;
		Пока ЕстьПробелы Цикл
			ПозицияПробела = Найти(ШаблонПоиска, " ");
			ПодШаблон = Лев(ШаблонПоиска, ПозицияПробела - 1);
			ПодШаблон = "%" + ПодШаблон + "%";
			СписокПодШаблонов.Добавить(ПодШаблон);
			ШаблонПоиска = СокрЛП(Прав(ШаблонПоиска, СтрДлина(ШаблонПоиска) - ПозицияПробела));
			ЕстьПробелы = Найти(ШаблонПоиска, " ") > 0;
			ТекстУсловияОтбораПоШаблону = ТекстУсловияОтбораПоШаблону +
			?(ТекстУсловияОтбораПоШаблону = "", "", ТекстИ) + "	Номенклатура." + ЭлементыФормы.СписокВидовПоиска.Значение + " ПОДОБНО &ШаблонПоиска" + н + " СПЕЦСИМВОЛ ""~""";
			н = н + 1;
		КонецЦикла;
		
		ШаблонПоиска = "%" + ШаблонПоиска + "%";

		СписокПодШаблонов.Добавить(ШаблонПоиска);
		ТекстУсловияОтбораПоШаблону = ТекстУсловияОтбораПоШаблону +
		?(ТекстУсловияОтбораПоШаблону = "", "", ТекстИ) + "	Номенклатура." + ЭлементыФормы.СписокВидовПоиска.Значение + " ПОДОБНО &ШаблонПоиска" + н + " СПЕЦСИМВОЛ ""~""";
		
		Запрос = Новый Запрос;
		Запрос.УстановитьПараметр("ШаблонПоиска", ШаблонПоиска);

Показать


P.S. не нужно хранить "огрызки" слов. Время работы около 0,5 - 1 сек.
4. kida1 146 25.09.19 15:02 Сейчас в теме
(2) идея хорошая, вероятно вы выложили не весь текст который нужно заменить, и не совсем универсальный механизм.
Предлагаю в обработке Подбор номенклатуры в процедуре ВыполнитьПоиск() следующее:
	
	
		// заменим спецсимволы
		ШаблонПоиска = СтрЗаменить(ШаблонПоиска, "~", "~~");
		ШаблонПоиска = СтрЗаменить(ШаблонПоиска, "%", "~%");
		ШаблонПоиска = СтрЗаменить(ШаблонПоиска, "_", "~_");
		ШаблонПоиска = СтрЗаменить(ШаблонПоиска, "[", "~[");
		ШаблонПоиска = СтрЗаменить(ШаблонПоиска, "-", "~-");
		
		Запрос = Новый Запрос;
		
		ШаблонПоиска = СокрЛП(ШаблонПоиска);

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

		// Инициализируем структуру выбранной строки (реквизиты обработки).
		Если ПодборПоСправочнику Тогда

			Запрос.Текст = "
			|ВЫБРАТЬ ПЕРВЫЕ 51
			|	Номенклатура.Код КАК Код,
			|	Номенклатура.Артикул КАК Артикул,
			|	Номенклатура.Ссылка КАК Номенклатура,
			|	Номенклатура.НаименованиеПолное КАК НаименованиеПолное,
			|	Номенклатура.Родитель КАК Родитель
			|ИЗ
			|	Справочник.Номенклатура КАК Номенклатура
			|
			|ГДЕ
			|   "+ТекстУсловияОтбораПоШаблону+"
			//|	Номенклатура." + ЭлементыФормы.СписокВидовПоиска.Значение + " ПОДОБНО &ШаблонПоиска СПЕЦСИМВОЛ ""~""
			|	И Номенклатура.ЭтоГруппа = Ложь
			|	" + ?(ЕстьНоменклатурнаяГруппа, "И Номенклатура.НоменклатурнаяГруппа В (&НоменклатурнаяГруппа)", "") + "
			|";

		Иначе
Показать
3. orfos 215 17.07.15 12:56 Сейчас в теме
Спасибо. Очень помогло.
5. user1583870 15.04.21 12:11 Сейчас в теме
Подскажите, а при поиске "ламп 40 вт" будет найдена запись, в которой "40 вт", "ламп 40", "ламп 40 вт желтый свет"? то есть записи, в которых совпал контекст совпал максимально?
Оставьте свое сообщение