Имя: Пароль:
1C
1С v8
Подскажите по алгоритму LIKE
,
0 AntiBuh
 
25.06.14
10:32
Задача следующая
имеется некий код справочника, нужно выбрать все коды не похожие на 1 цифру
например код = 123, получить 723, 103, 125 и тп.
просится LIKE, но никак не соображу как правильно шаблон поиска построить
1 Wobland
 
25.06.14
10:35
выбрать код из справочник где код<>"123"
2 f_vadim
 
25.06.14
10:36
(1) :)

чот мне кажется в запросе по-другому никак
"_23" или
"1_3" или
"12_"
3 Chikko
 
25.06.14
10:37
1) Запрос в цикле собирать, через "выбор когда х подобно у".
2) В обработке "поиск и замена дублей" есть нужный алгоритм.
Думаю, так.
4 mistеr
 
25.06.14
10:38
(0) Сколько цифр в реальности?
5 AntiBuh
 
25.06.14
10:39
(2) думал может как короче можно, если длина хотяб 10симв портянка получится
6 AntiBuh
 
25.06.14
10:40
(4) ну вообще актуально 5
7 Wobland
 
25.06.14
10:40
почему 103 не похож на 123?
8 Рэйв
 
25.06.14
10:40
НЕ ПОДОБНО ?
9 Maxus43
 
25.06.14
10:40
(5) для тупой задачи возможно только тупое решение. Смысл этого какой хоть? портянки пиши...
10 Рэйв
 
25.06.14
10:41
НЕ Подобно "123%"
11 Maxus43
 
25.06.14
10:41
(10) одна цифра чтоб не совпадала, а не все
12 mistеr
 
25.06.14
10:42
(0) Это расстояние Хэмминга. В одном запросе не закодить.
13 Maxus43
 
25.06.14
10:43
(12)>(2) что не нравится?
14 Maxus43
 
25.06.14
10:45
правда немного не так надо будет,
("_23" или
"1_3" или
"12_") И НЕ ПОДОБНО "%123%"
15 Aleks73
 
25.06.14
10:45
Я бы не заморачивался а по каждому коду вызывал бы функцию, формирующую список и бросал бы её в запрос.
16 AntiBuh
 
25.06.14
10:45
(13) наверное так и придется сделать
17 AntiBuh
 
25.06.14
11:08
ура
получилось :))))))))))))
18 mistеr
 
25.06.14
11:17
(13) Это кодогенерация, а не универсальный запрос.

При 5 символах будет еще приемлемо, а больше - уже медленно.
19 Maxus43
 
25.06.14
11:18
(18)>(9)
20 mistеr
 
25.06.14
11:24
(19) Смысл - ввод по строке наверное. В 8.3 это встроили в платформу, это как бы намекает, что смысл есть.
21 AntiBuh
 
25.06.14
11:29
(9) (20) смысл - найти тот элемент, который должен быть на месте лажового искомого и выдать мирных дюлей на сумму разницы в цене
22 f_vadim
 
25.06.14
11:32
выношу на суд альтернативное решение


ВЫБРАТЬ Код, Ссылка
ИЗ Справочник.спр КАК Спр
ГДЕ
ВЫБОР КОГДА
ВЫРАЗИТЬ( Код / 100 - 0.5 КАК ЧИСЛО(3,0)) = &Цифра1
ТОГДА 1 ИНАЧЕ 0 КОНЕЦ +
ВЫБОР КОГДА
ВЫРАЗИТЬ((Код - ВЫРАЗИТЬ(Код / 100 - 0.5 КАК ЧИСЛО(3,0)) * 100) / 10 - 0.5 КАК ЧИСЛО(3,0)) = &Цифра2
ТОГДА 1 ИНАЧЕ 0 КОНЕЦ +
ВЫБОР КОГДА ВЫРАЗИТЬ((Код - ВЫРАЗИТЬ(Код / 10  - 0.5 КАК ЧИСЛО(3,0)) * 10) - 0.5 КАК ЧИСЛО(3,0)) = &Цифра3
ТОГДА 1 ИНАЧЕ 0 КОНЕЦ = 2
23 f_vadim
 
25.06.14
11:38
на 3-х цифирях работает :)
должно работать быстрее чем на лайках
если присутствуют лидирующие нули, то надо добавить проверку
24 catena
 
25.06.14
12:34
(22)А если код - строка?
25 f_vadim
 
25.06.14
12:53
(24) тогда ещё проще

заменить формулы ВЫРАЗИТЬ(Код... ) = &Цифра1
на
ПОДСТРОКА(код, 1, 1) = &Цифра1
Основная теорема систематики: Новые системы плодят новые проблемы.