Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Re: Нечеткий поиск по наименованию товаров в номенклатуре (1с.7.7) (число прочтений - 3836 )
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Нечеткий поиск по наименованию товаров в номенклатуре (1с.7.7)
08. Февраля 2014 :: 14:36
Печать  
Например так (ниже приведен не конечный код, а набросок реализации идеи)
Требуются 1c++, formex, база sql

Код
Выбрать все
Перем мСтрПоиска;

Процедура ПриОткрытии()
	мСтрПоиска="";
КонецПроцедуры

Процедура ПриНажатииКнопкиКлавиатуры(кодКл,альт,шифт,ктрл,символ,ФСО)
	Если Форма.АктивныйЭлемент()="Наименование" Тогда
		Если (альт=0)И(ктрл=0)И(символ>"") Тогда
			ФСО=0;
			Если кодКл=8 Тогда
				Если мСтрПоиска>"" Тогда
					мСтрПоиска=Лев(мСтрПоиска,СтрДлина(мСтрПоиска)-1);
				КонецЕсли;
			ИначеЕсли кодКл=27 Тогда
				мСтрПоиска="";
			Иначе
				мСтрПоиска=мСтрПоиска+символ;
			КонецЕсли;

			Если мСтрПоиска>"" Тогда
				рсПоиск=СоздатьОбъект("ODBCRecordset");
				рсПоиск.УстановитьТекстовыйПараметр("СтрПоиска","%"+мСтрПоиска+"%");
				ТекстЗапроса="
				|select top 1
				|	Спр.id [Ссылка $Справочник.Номенклатура]
				|from $Справочник.Номенклатура Спр (nolock)
				|where Спр.descr like :СтрПоиска
				|/*УслГруппа*/
				|order by /*isfolder*/ /*order*/ Спр.row_id
				|";
				Если ИерархическийСписок()=1 Тогда
					ТекстЗапроса=СтрЗаменить(ТекстЗапроса,"/*isfolder*/","Спр.isfolder,");

					//если количество уровней справочника> 1
					рсПоиск.УстановитьТекстовыйПараметр("Группа",ИспользоватьРодителя());
					ТекстЗапроса=СтрЗаменить(ТекстЗапроса,"/*УслГруппа*/","and Спр.parentid = :Группа");

					//если подчиненный справочник
					//рсПоиск.УстановитьТекстовыйПараметр("Владелец",ИспользоватьВладельца());
					//ТекстЗапроса=СтрЗаменить(ТекстЗапроса,"/*УслГруппа*/","and Спр.parentext = :Владелец");
				КонецЕсли;

				Сортировка=Сортировка();
				Если Сортировка="Код" Тогда
					ТекстЗапроса=СтрЗаменить(ТекстЗапроса,"/*order*/","Спр.code,");
				ИначеЕсли Сортировка="Наименование" Тогда
					ТекстЗапроса=СтрЗаменить(ТекстЗапроса,"/*order*/","Спр.descr,");
				Иначе
					ТекстЗапроса=СтрЗаменить(ТекстЗапроса,"/*order*/","$Спр."+Сортировка+",");
				КонецЕсли;

				Ссылка=рсПоиск.ВыполнитьСкалярный(ТекстЗапроса);
				Если ПустоеЗначение(Ссылка)=0 Тогда
					АктивизироватьОбъект(Ссылка);
				КонецЕсли;
			КонецЕсли;
		КонецЕсли;
		Форма.подпСтрПоиска.Заголовок(мСтрПоиска);
	КонецЕсли;
КонецПроцедуры
 

  

1&&2&&3
Наверх
 
IP записан
 
Александр129
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 9
Зарегистрирован: 08. Февраля 2014
Re: Нечеткий поиск по наименованию товаров в номенклатуре (1с.7.7)
Ответ #1 - 08. Февраля 2014 :: 15:05
Печать  
зайдите в скайп, опишу ситуацию, оплату гарантирую.
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Нечеткий поиск по наименованию товаров в номенклатуре (1с.7.7)
Ответ #2 - 08. Февраля 2014 :: 16:32
Печать  
Опиши лучше здесь, т.к. кроме меня найдутся и другие помогающие.
Я же, скорее всего, подряжаться на разработку не стану. Могу только, по возможности, подсказать что-то, посоветовать.
  

1&&2&&3
Наверх
 
IP записан
 
Александр129
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 9
Зарегистрирован: 08. Февраля 2014
Re: Нечеткий поиск по наименованию товаров в номенклатуре (1с.7.7)
Ответ #3 - 08. Февраля 2014 :: 17:07
Печать  
Не актуально
это актуально http://www.1cpp.ru/forum/YaBB.pl?num=1391933116/0#0
« Последняя редакция: 10. Февраля 2014 :: 05:45 - Александр129 »  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Нечеткий поиск по наименованию товаров в номенклатуре (1с.7.7)
Ответ #4 - 10. Февраля 2014 :: 04:56
Печать  
а куда заглавный пост делся?
  

1&&2&&3
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Нечеткий поиск по наименованию товаров в номенклатуре (1с.7.7)
Ответ #5 - 10. Февраля 2014 :: 05:06
Печать  
можно взять за основу готовое решение, например это:
http://www.1cpp.ru/forum/YaBB.pl?num=1211491690

слепив из него поиск по or или and .. + можно ввести собственный индекс "похожести" строк.. тупо считать количество совпадений отдельных слов.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Нечеткий поиск по наименованию товаров в номенклатуре (1с.7.7)
Ответ #6 - 10. Февраля 2014 :: 05:06
Печать  
trad писал(а) 10. Февраля 2014 :: 04:56:
а куда заглавный пост делся?


его поди сам аутор прибил Улыбка
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать