Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Очень популярная тема (более 25 ответов) Как сделать быстрый поиск части строки? (число прочтений - 7714 )
Sergey
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 135
Зарегистрирован: 18. Октября 2006
Пол: Мужской
Как сделать быстрый поиск части строки?
22. Мая 2008 :: 11:28
Печать  
Есть например несколько тысяч документов. В них есть строковый реквизит. Нужно отобрать все документы в которых в этом реквизите есть определенная подстрока(слово). Как это сделать быстро? Кто что может посоветовать.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Как сделать быстрый поиск части строки?
Ответ #1 - 22. Мая 2008 :: 11:32
Печать  
База dbf или sql ?
По первым символам или произвольным из реквизита ?
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Как сделать быстрый поиск части строки?
Ответ #2 - 22. Мая 2008 :: 11:36
Печать  
LIKE
  
Наверх
ICQ  
IP записан
 
Sergey
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 135
Зарегистрирован: 18. Октября 2006
Пол: Мужской
Re: Как сделать быстрый поиск части строки?
Ответ #3 - 22. Мая 2008 :: 11:40
Печать  
база dbf. Но желательно не прямыми запросами а как то иначе. В прямые еще не вникал((
  
Наверх
 
IP записан
 
Sergey
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 135
Зарегистрирован: 18. Октября 2006
Пол: Мужской
Re: Как сделать быстрый поиск части строки?
Ответ #4 - 22. Мая 2008 :: 11:41
Печать  
Не по первым символам. Просто все слово целиком
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Как сделать быстрый поиск части строки?
Ответ #5 - 22. Мая 2008 :: 12:01
Печать  
Цитата:
Не по первым символам. Просто все слово целиком

1. А LIKE вовсе не по первым символам, а по любым.
2. А так можешь тупо перебирать доки и искать вхождение твоего слова в реквизит.
Найти(ТвойРеквизит,"ТвоеСлово")
  
Наверх
ICQ  
IP записан
 
Sergey
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 135
Зарегистрирован: 18. Октября 2006
Пол: Мужской
Re: Как сделать быстрый поиск части строки?
Ответ #6 - 22. Мая 2008 :: 12:09
Печать  
vip писал(а) 22. Мая 2008 :: 12:01:
Цитата:
Не по первым символам. Просто все слово целиком

1. А LIKE вовсе не по первым символам, а по любым.
2. А так можешь тупо перебирать доки и искать вхождение твоего слова в реквизит.
Найти(ТвойРеквизит,"ТвоеСлово")

Могу а если нужно это все дело в цикле сделать и искать разные слова(дата номер документа) это мне эти тысячи прийдется не один раз прокрутить.
  
Наверх
 
IP записан
 
Sergey
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 135
Зарегистрирован: 18. Октября 2006
Пол: Мужской
Re: Как сделать быстрый поиск части строки?
Ответ #7 - 22. Мая 2008 :: 12:13
Печать  
Есть мысль загнать эти строки списком или тз в ЗначениеВСтрокуВнутр только после нахождения строки нужно быстро Документ вытянуть которому принадлежит данная строка. Других мыслей пока нет
  
Наверх
 
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: Как сделать быстрый поиск части строки?
Ответ #8 - 22. Мая 2008 :: 12:22
Печать  
С прямыми запросами быстрее разобраться, чем такое изобретать  Улыбка
  
Наверх
 
IP записан
 
Sergey
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 135
Зарегистрирован: 18. Октября 2006
Пол: Мужской
Re: Как сделать быстрый поиск части строки?
Ответ #9 - 22. Мая 2008 :: 12:29
Печать  
Может быть. А в прямые запросы интересно можно воткнуть поиск по регулярному выражению?
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Как сделать быстрый поиск части строки?
Ответ #10 - 22. Мая 2008 :: 12:36
Печать  
select IdDoc [$Документ.ТвойДокумент as Док] From $Документ.ТвойДокумент where $Документ.ТвойДокумент.СтроковыйРеквизит Like '%ПодстрокаПоиска%'
  
Наверх
ICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Как сделать быстрый поиск части строки?
Ответ #11 - 22. Мая 2008 :: 12:41
Печать  
Вообще-то, можно так (поиск по подстроке из ТиС):
Цитата:
     ТекстЗапроса ="
     |ТекущийЭлемент = Справочник.*.ТекущийЭлемент;" +
     РеквизитПоиска + " = Справочник.*." + РеквизитПоиска + ";
     |Группировка ТекущийЭлемент Без Упорядочивания Без Групп;
     |Условие(Найти(ВРег(" + РеквизитПоиска + "),ВРег(ПодСтрокаПоиска))>0);
     |Без итогов;";          

и т.д.
скорость, конечно, - это другой вопрос.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Sergey
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 135
Зарегистрирован: 18. Октября 2006
Пол: Мужской
Re: Как сделать быстрый поиск части строки?
Ответ #12 - 22. Мая 2008 :: 12:44
Печать  
Salimbek писал(а) 22. Мая 2008 :: 12:36:
select IdDoc [$Документ.ТвойДокумент as Док] From $Документ.ТвойДокумент where $Документ.ТвойДокумент.СтроковыйРеквизит Like '%ПодстрокаПоиска%'

Спасибо попробую. И что если этот запрос выполнять в цикле например 3000 раз будет быстро это все дело. Намного быстрее чем просто перебор документов?
  
Наверх
 
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: Как сделать быстрый поиск части строки?
Ответ #13 - 22. Мая 2008 :: 12:47
Печать  
Цитата:
Salimbek писал(а) 22. Мая 2008 :: 12:36:
select IdDoc [$Документ.ТвойДокумент as Док] From $Документ.ТвойДокумент where $Документ.ТвойДокумент.СтроковыйРеквизит Like '%ПодстрокаПоиска%'

Спасибо попробую. И что если этот запрос выполнять в цикле например 3000 раз будет быстро это все дело. Намного быстрее чем просто перебор документов?


А зачем цикл 3000 раз, у тебя сразу за 1 запрос все будет  Улыбка
  
Наверх
 
IP записан
 
Sergey
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 135
Зарегистрирован: 18. Октября 2006
Пол: Мужской
Re: Как сделать быстрый поиск части строки?
Ответ #14 - 22. Мая 2008 :: 12:52
Печать  
PVR писал(а) 22. Мая 2008 :: 12:47:
Цитата:
Salimbek писал(а) 22. Мая 2008 :: 12:36:
select IdDoc [$Документ.ТвойДокумент as Док] From $Документ.ТвойДокумент where $Документ.ТвойДокумент.СтроковыйРеквизит Like '%ПодстрокаПоиска%'

Спасибо попробую. И что если этот запрос выполнять в цикле например 3000 раз будет быстро это все дело. Намного быстрее чем просто перебор документов?


А зачем цикл 3000 раз, у тебя сразу за 1 запрос все будет  Улыбка

Мне нужно искать (Дата номер документа) одних видов документов в строковых реквизитах других видов документов. 3000 тысячи я пример привел. Вообще конечно лучше составить один раз выборку всех строковых реквизитов(с привязкой к документу) а а потом в ней искать.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать