|
v7: Сделать поиск, имея в распоряжении только часть слова | ☑ | ||
---|---|---|---|---|
0
Double_Medved
05.11.13
✎
11:51
|
Добрый день! Такая штука: в справочнике есть реквизит "серийный номер". Иногда приходится искать в этом справочнике, имея лишь кусок серийного номера. То есть например серийный номер 1234567, а известны только 2 последние цифры, 67. Ну это грубо говоря. Как осуществить такой поиск? и надо чтобы он не находил ничего типа 267, 673, и т.д., а нахожил только то, где в конце 67. Для этого есть типа "маска". знак # заменяет любое количество символов, а * один символ. То есть вводят #67 или *****67. Я так понимаю что стандартный поиск с этим не справится? Получается все перебирать и сравнивать посимвольно?
|
|||
1
dk
05.11.13
✎
11:54
|
черный запрос справится через
Где (Найти(ТвоеПоле, "67") > 0) 1c+++ через like |
|||
2
КонецЦикла
05.11.13
✎
11:59
|
like '%67%'
|
|||
3
КонецЦикла
05.11.13
✎
12:00
|
А штатно давно есть, см. ТиС поиск в номенклатуре
|
|||
4
Double_Medved
05.11.13
✎
12:17
|
(3) поиск по номенклатуре это что именно в конфигурации? Форма поиска в справочнике номенклатура? Я глянул эту форму, если ввести"67" она найдет все, где есть"67", и в начале, и в середине, и в конце. А мне надо это как-то контролировать.
|
|||
5
Мимохожий Однако
05.11.13
✎
12:19
|
+(3)F7
|
|||
6
mikecool
05.11.13
✎
12:19
|
(4) в смысле? что тебе надо контролировать? если надо контролировать - пусть пользователь вводит маску поиска
|
|||
7
Simod
05.11.13
✎
12:20
|
(4) Помимо Найти() еще есть Лев() и Прав().
|
|||
8
dk
05.11.13
✎
12:22
|
Где (Найти(ТвоеПоле, "67") = (СтрДлина(СокрП(ТвоеПоле)) - 1))
|
|||
9
dk
05.11.13
✎
12:24
|
хотя если 2 раза встречается, то (8) не спасет
тогда лучше (7) |
|||
10
sda553
05.11.13
✎
12:24
|
(0) Это очень просто - переводишь хранимый в этом поле текст по алгоритму МакКрейта в линейное суффиксное дерево и сохраняешь в таком виде.
|
|||
11
Double_Medved
05.11.13
✎
12:24
|
(6) да, пользователь должен будет вводить маску поиска. А в стандартном поиске я так понимаю нет маски? Придется это самому писать или не надо изобретать велосипед?
|
|||
12
Double_Medved
05.11.13
✎
12:25
|
(9) в том то и дело, если типа #67, то до "67" может быть сколько угодно символов
|
|||
13
dk
05.11.13
✎
12:27
|
ГДЕ ПРАВ(СОКРП(ТвоеПоле), 2) = ""67""
|
|||
14
Vol71
05.11.13
✎
12:30
|
(0)Есть обработка поиска по вхождению.
|
|||
15
mikecool
05.11.13
✎
12:32
|
(11) если пользователь введет "%67" и ты это подсунешь параметром в like прямого запроса, то будет работать как ты хочешь
|
|||
16
mikecool
05.11.13
✎
12:32
|
+15 почитай описание функции like, там все понятно
|
|||
17
КонецЦикла
05.11.13
✎
12:33
|
(10) :)
|
|||
18
КонецЦикла
05.11.13
✎
12:34
|
(11) ты бы лучше написал что надо а не про какие-то маски
|
|||
19
Double_Medved
05.11.13
✎
12:42
|
(18) так как раз и хотят поиск по маске. Например номер "1234567", а цифры 2 и 6 не видно. Введут "1*345*7"
|
|||
20
mikecool
05.11.13
✎
12:42
|
(19) см (16)
|
|||
21
sda553
05.11.13
✎
12:49
|
(15) Кроме случаев когда в тексте есть одинарная кавычка
|
|||
22
Simod
05.11.13
✎
12:50
|
(19) В 7.7 нет поиска по маске штатными средствами. Можешь покурить: http://1c.mazzy.ru/articles/grep/1cgrep02.html
|
|||
23
mikecool
05.11.13
✎
12:53
|
(21) о ужас! тогда надо предусмотреть обработку таких символов!
|
|||
24
Double_Medved
05.11.13
✎
12:59
|
(22) спасибо, это похоже то что надо, ищет так как мне надо
|
|||
25
Double_Medved
05.11.13
✎
13:02
|
Вот как приятно когда не троллят типа "да это каждый школьник знает"
|
|||
26
Simod
05.11.13
✎
13:32
|
(24) Это для понимания проблемы и ее решения. Для частных случаев решения могут быть попроще и быстрее.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |