Имя: Пароль:
1C
 
Как в запросе проверить строку на спецсимволы
,
0 Asest
 
22.09.14
17:31
Есть запрос

ВЫБРАТЬ
                    |    Номенклатура.Ссылка
                    |ИЗ
                    |    Справочник.Номенклатура КАК Номенклатура
                    |ГДЕ

Как поставить условие на Номенклатура.Артикул, чтобы следующее условие оказалось верным. Есть переменная &Артикул.

Номенклатура.Артикул = &Артикул

Если
Номенклатура.Артикул = //*- 1234 421312*2/\
&Артикул = 12344213122, т. е.

если они равны без учета спецсимволов и пробелов, тоусловие должно считаться верным
1 Asest
 
22.09.14
17:34
Я понимаю что можно просто отобрать всю номенклатуру а потом проверять отдельно. но у меня 10 000 артикулов, и столько же номенклатуры, то есть для каждого артикула нужно проверить 10 000 номенклатур и так 10 000 раз. Получается примерно 10 минут на каждые 10 артикулов, нереальное время
2 Apokalipsec
 
22.09.14
17:34
То есть выпилить спецсимволы из артикулов не предлагать?)
Подобно мучай.
3 Ёпрст
 
22.09.14
17:37
обойти весь справочник и регуляркой проверить нужное разве что.
4 Asest
 
22.09.14
17:39
Спец символы есть и в артикулах и в номенклатуре, можно разве что создать 2 временные таблицы в которых убрать спецсимволы, а после их сравнивать, но не думаю что это сильно ускорит
5 Asest
 
22.09.14
17:40
То есть вопрос стоит так: можно ли как то поставить условие прямо в запросе? как то заранее обработать строку прямо в запросе или наложить маску?
6 Kamas
 
22.09.14
17:44
(5) ради интереса предлагаю найти всю номенклатуру которя в наименовании содержит _ или %
7 Asest
 
22.09.14
17:45
Ну скажите что это невозможно и я пойду развлекаться с таблицами
8 Kamas
 
22.09.14
17:46
(6) с остальными символами вроде ка проблем не должно быть
9 Defender aka LINN
 
22.09.14
17:46
(5) Представил себе такое "ПОДОБНО"
http://screencast.com/t/zixiVabY3jG
10 Kamas
 
22.09.14
17:51
(9) ну например<> спокойно берутся
11 Asest
 
22.09.14
17:54
Можно наверно сделать так
Номенклатура.ВнутрНомер ПОДОБНО" + " строка"
а строку собирать по символьно из артикула вставляя маску, предварительно удалив спецсимволы
и полчится так
артикул = 123/
строка  = [0-9]+&символ1+[/\-*. ]+&символ2+[/\-*. ]+&символ3+[/\-*. ]
12 Asest
 
22.09.14
17:54
Мне нужны конкретно символы /\-*. и пробел
Это достаточно извращенно или есть и другие варианты?
Закон Брукера: Даже маленькая практика стоит большой теории.