Имя: Пароль:
1C
1С v8
Запрос с ПОДОБНО
,
0 tolok_d
 
10.10.12
14:12
Стоит задача выбрать запросом подобные артикулы, тоесть если пользователь пишет 111, то нужно тащить артикулы: 111 | 1.11 | 11.1 | 1.1.1 | 1,11 | 11,1 | 1,1,1 | 1.1,1 | 1,1,1 | 1-11 | 11-1 | и тд, думаю смысл понятен. В запросе использую ПОДОБНО, и записываю искомый артикул как 1[.*,-]1[.*,-]1. И все бы замечательно, но Запрос тащит те артикулы, где между символами есть символ который в [.*,-]. Но такие артикулы как 11,1 или 1.11 или 111 он не тащит. Вопрос для тех кто разбирается, как можно показать запросу что там может и не быть знака?
1 Живой Ископаемый
 
10.10.12
14:14
ИЛИ
2 tolok_d
 
10.10.12
14:16
(1) не подходит, на сколько понимаю, это надо писать 1[.*,-]1[.*,-]1 ИЛИ 11[.*,-]1 ИЛИ 1[.*,-]11 ИЛИ 111. Ну это если три цифры в артикуле, а если 10?
3 Живой Ископаемый
 
10.10.12
14:17
да
4 Галахад
 
гуру
10.10.12
14:20
О, а что это значит? [.*,-]
5 aleks-id
 
10.10.12
14:20
%1%1%1%
6 aleks-id
 
10.10.12
14:20
(4) стыдоба. любой символ который внутри скобок
7 goleaff2006
 
10.10.12
14:23
а не проще 1_1_1
8 Живой Ископаемый
 
10.10.12
14:23
но можно применить "если проблема не решается на каком-то уровне, попробовать решить на другом". Например завести реквизит для артикулов, назвать его "ВесПодобности", туда писать сумму 1*4+1*2+1*1 = 7 для всех у кого 111 | 1.11 | 11.1 | 1.1.1 | 1,11 | 11,1 | 1,1,1 | 1.1,1 | 1,1,1 | 1-11 | 11-1 | и т.д.

Для тех, у кого 5 цифр значением для этого реквизита будет  1*16+1*8+1*4+1*2+1


В твоей обработке пользователь пишет 111 - находятся все, у кого значение равно 7, пользователи пишут 11111 - найдутся все у кого 31

Если пользователь напишет 10111, найдутся все у кого 23
9 Живой Ископаемый
 
10.10.12
14:24
2(7) найдет 11111, а это по идее другой артикул... Но можно конечно
1[^0-9]1[^0-9]1
10 tolok_d
 
10.10.12
14:25
(5) не правильно. это же он вытащит , например 1211, 1а11, 11бугага1
11 kosts
 
10.10.12
14:26
А может наоборот искать
[1].[1].[1] или [1],[1],[1] и тд
12 tolok_d
 
10.10.12
14:26
(7) то же что и (5) только по одному любому символу будет находить, а надо именно [.*,-]
13 Живой Ископаемый
 
10.10.12
14:27
2(10)
1[^0-9,^a-z,^а-я]1[^0-9,^a-z,^а-я]1
14 tolok_d
 
10.10.12
14:27
(11) нет, значение имеют цифры, а не символы
15 tolok_d
 
10.10.12
14:28
(13) а отсутсвие симовла он не включает? сейчас попробую
16 Живой Ископаемый
 
10.10.12
14:28
2(15) включает, не подойдет... смотри лучше (8)
17 Галахад
 
гуру
10.10.12
14:31
(6) Ага, спасибо. Но чо-та не стыдно.
18 kosts
 
10.10.12
14:32
Можно попробовать так :-)

"%" + Искомое + "%" подобно
выбор когда Не (Подстрока(с,1,1) подобно [,.*-]) тогда Подстрока(с,1,1) Иначе "" Конец +
выбор когда Не (Подстрока(с,2,1) подобно [,.*-]) тогда Подстрока(с,2,1) Иначе "" Конец +
выбор когда Не (Подстрока(с,3,1) подобно [,.*-]) тогда Подстрока(с,3,1) Иначе "" Конец и т.д.
19 tolok_d
 
10.10.12
14:43
(18) просто не известно сколько символов в артикуле
20 kosts
 
10.10.12
14:45
(19) Да хоть 50.
21 tolok_d
 
10.10.12
14:49
(20) сейчас попробую, потом отпишусь о результате
пока самый толковый вариант у (8)
22 НЕА123
 
10.10.12
14:53
(8)
а не проще просто записывать в ВесПодобности без [,.*-]?
23 kosts
 
10.10.12
14:54
(21) Если делать с отдельным реквизитом, тог да уж записывать в доп реквизит артикул без лишних символов
"1.1.1.111" => "111111"
24 НЕА123
 
10.10.12
14:54
+(22)
к тому же и буквички может есть в артикулах.
25 tolok_d
 
10.10.12
14:57
(18) что то не работает. Может я не так понял...
26 tolok_d
 
10.10.12
15:00
(24) да, есть
пока решения значит нет(
27 kosts
 
10.10.12
15:04
(26)
Вот готовое решение, или уговаривать нужно


Выбрать "1.1.2" как с Поместить ВТТаблица1 объединить все
Выбрать "1,1.2" объединить все
Выбрать "11.2" объединить все
Выбрать "1.1.1" объединить все
Выбрать "1,1,2" объединить все
Выбрать "2.12" объединить все
Выбрать "21.2" ;
Выбрать * из ВТТаблица1 где
выбор когда Не (Подстрока(с,1,1) подобно "[,.*-]") тогда Подстрока(с,1,1) Иначе "" Конец +
выбор когда Не (Подстрока(с,2,1) подобно "[,.*-]" ) тогда Подстрока(с,2,1) Иначе "" Конец +
выбор когда Не (Подстрока(с,3,1) подобно "[,.*-]") тогда Подстрока(с,3,1) Иначе "" Конец +
выбор когда Не (Подстрока(с,4,1) подобно "[,.*-]") тогда Подстрока(с,4,1) Иначе "" Конец +
выбор когда Не (Подстрока(с,5,1) подобно "[,.*-]") тогда Подстрока(с,5,1) Иначе "" Конец
подобно "%" + "12" + "%"
28 tolok_d
 
10.10.12
15:10
(27) уговаривать не надо, но как мне все возможные варианты символов перебрать в артикуле? алфавит + цифры
29 kosts
 
10.10.12
15:12
(28) Зачем тебе перебирать цифры и алфавит?
Добавь количество условий до длины артикула и больше ничего не нужно...
30 airyashov
 
10.10.12
15:20
Если вы маску формируете динамически, то почему бы не сделать список значений или несколько масок.
31 GANR
 
10.10.12
15:24
ВЫРАЗИТЬ(Аритикул КАК СТРОКА(5)) ПОДОБНО "%1%1%1%"
AdBlock убивает бесплатный контент. 1Сергей