![]() |
![]() |
![]() |
|
ПОДОБНО списку значений? | ☑ | ||
---|---|---|---|---|
0
Ayvengo
23.09.10
✎
11:32
|
Хм, интересно, как такое осуществить?
К примеру запрос: ВЫБРАТЬ Контрагенты.Ссылка ИЗ Справочник.Контрагенты КАК Контрагенты ГДЕ Контрагенты.ИНН ПОДОБНО &ИНН &ИНН - это у нас список значений ... как бы такое осуществить :) |
|||
1
Ненавижу 1С
гуру
23.09.10
✎
11:33
|
ВЫБРАТЬ
Контрагенты.Ссылка ИЗ Справочник.Контрагенты КАК Контрагенты ГДЕ Контрагенты.ИНН ПОДОБНО &ИНН1 или Контрагенты.ИНН ПОДОБНО &ИНН2 ... или Контрагенты.ИНН ПОДОБНО &ИННN |
|||
2
shuhard
23.09.10
✎
11:34
|
(0) что-то не так
зачем подобно, если ИНН имеет фиксированную длину ВЫБРАТЬ Контрагенты.Ссылка ИЗ Справочник.Контрагенты КАК Контрагенты ГДЕ Контрагенты.ИНН В(&ИНН) |
|||
3
Ayvengo
23.09.10
✎
11:34
|
(2) не прокатит, нужно условие ПОДОБНО
|
|||
4
shuhard
23.09.10
✎
11:35
|
(3) приведи пример подобно для ИНН,
очень интересно |
|||
5
Ayvengo
23.09.10
✎
11:35
|
(1) можно конечно и так, но если этих условий будет N .. ой запросище страшный будет.
ВЫБРАТЬ Контрагенты.Ссылка ИЗ Справочник.Контрагенты КАК Контрагенты ГДЕ Контрагенты.ИНН ПОДОБНО "772%" |
|||
6
Ayvengo
23.09.10
✎
11:36
|
(4) если что, ИНН - это строка ;)
|
|||
7
Mitriy
23.09.10
✎
11:36
|
(5) формируй текст запроса в цикле...
|
|||
8
Ayvengo
23.09.10
✎
11:37
|
(7) т.е. опять по условию ИЛИ .. других вариантов нету?
|
|||
9
Kondarat
23.09.10
✎
11:39
|
(6) Ну и... Чем (2) не устраивает при условии, что >>&ИНН - это у нас список значений
|
|||
10
shuhard
23.09.10
✎
11:40
|
(8) используй % и *
хотя для меня поиск контрагента по ЧАСТИ ИНН тёмен |
|||
11
Ayvengo
23.09.10
✎
11:42
|
(9) банально тем, что это не работает :)
|
|||
12
Ayvengo
23.09.10
✎
11:42
|
(9) а не работает потому что у меня кусочки ИНН ;) а не точные значения
|
|||
13
Mitriy
23.09.10
✎
11:43
|
(12) чем тебе (7) не нравится? ты же текст запроса не на печать выводить будешь?
|
|||
14
Ksandr
23.09.10
✎
11:44
|
в твоем нике ошибка в т.ч.
Ivanhoe |
|||
15
Amiralnar
23.09.10
✎
11:45
|
У контрагента есть реквизит - регион. Регион имеет какое-то отношение к инн. Но это только слухи. Вам необходимо установить контрагентам правильный регион, и делать запрос, применяя в условии простые конструкции.
|
|||
16
shuhard
23.09.10
✎
11:46
|
(12) для кусочков кроме склейки запроса и % решений нет
|
|||
17
Ayvengo
23.09.10
✎
11:47
|
(16) жалко .. теперь будем думать как в шаблонах ограничений эту запросину воять ..
|
|||
18
Mitriy
23.09.10
✎
11:49
|
(17) вот это ни хрена себе...
|
|||
19
Amiralnar
23.09.10
✎
11:51
|
Одумайтесь. Сравнение строк по шаблону - это не сравнение ссылок. Это плохое решение. Я бы даже сказал - не совсем хорошее.
|
|||
20
shuhard
23.09.10
✎
11:53
|
(17) ошибка в постановке задачи,
возможно она(задача) имеет не неожиданные решения, но ты о них не узнаешь, поскольку упёрся в конкретный запрос |
|||
21
Ayvengo
23.09.10
✎
11:53
|
(19) согласен, может быть вместо справочника кусочков ИНН заполнять его по кусочкам ИНН и тогда можно использовать в(&ИНН)
|
|||
22
Ayvengo
23.09.10
✎
11:54
|
(20) ктож сказал, что я уперся
|
|||
23
shuhard
23.09.10
✎
11:55
|
(22) тогда начни от печки,
каков источник кусков ИНН |
|||
24
Amiralnar
23.09.10
✎
11:55
|
Чем вам регион не нравится? Штатно же, даже правила ограничений уже настроены.
|
|||
25
Ayvengo
23.09.10
✎
11:57
|
(24) в УТ нет такой связи, регион не обязательное для заполнения поле
|
|||
26
Ненавижу 1С
гуру
23.09.10
✎
12:01
|
Можно так:
ПОДСТРОКА(ИНН,1,2) В (&СписокСтрок) |
|||
27
Ayvengo
23.09.10
✎
12:01
|
Во... придумал как осуществить:
ВЫБРАТЬ Контрагенты.Ссылка ИЗ Справочник.ДоступныеИНН КАК ДоступныеИНН ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты ПО (Контрагенты.ИНН ПОДОБНО ДоступныеИНН.Наименование) где наименование будет кусочек ИНН% |
|||
28
Amiralnar
23.09.10
✎
12:01
|
Вы отказываетесь от штатного, логичного, и быстрого решения. Мне не за себя, мне за державу обидно.
|
|||
29
Ненавижу 1С
гуру
23.09.10
✎
12:02
|
регион от ИНН отличается, если филиал в другом регионе, то ИНН у них вроде как с головным офисом общий
|
|||
30
Ayvengo
23.09.10
✎
12:02
|
(28) скажем так, не удобно это использовать ;)
|
|||
31
Ненавижу 1С
гуру
23.09.10
✎
12:03
|
(30) см (26)
|
|||
32
Mitriy
23.09.10
✎
12:04
|
(26) прикольно...
|
|||
33
luns
23.09.10
✎
12:04
|
(31) вон в (23) правильный вопрос задают. ты бы ответил.
|
|||
34
Ayvengo
23.09.10
✎
12:06
|
(31) немного не подходит, точное количество символом мне никто не сказал, по-этому :)
|
|||
35
Ayvengo
23.09.10
✎
12:07
|
Всем спасибо, я забыл Вам написать, что кусочки ИНН - это справочник, с которым можно устроить связь, так что решение очень простое :) в (27) описал его
|
|||
36
Ненавижу 1С
гуру
23.09.10
✎
12:09
|
"кусочки ИНН - это справочник" о как
|
|||
37
Ayvengo
23.09.10
✎
12:18
|
(36) угу .. с самого начала не правильно задачу поставил :(
|
|||
38
Amiralnar
23.09.10
✎
12:30
|
Вопрос о совпадении инн у филиала в другом регионе очень правильный. Но еще не ясно, недостаток это или фича. Может они из-за этого потом будут еще и кпп сравнивать :)
А самое главное, этот медленный запрос будет внедряться везде, где будет происходить контроль доступа. |
|||
39
Ayvengo
23.09.10
✎
12:32
|
Собственно говоря в этом и есть задача, контроль доступа на уровне регионов ;) Но, к сожалению, регионы в базе в унынии :)
|
|||
40
Amiralnar
23.09.10
✎
12:41
|
Задача ваша в том, чтобы регионы привести в порядок. Перестаньте программировать, пользуйтесь программой, которую вы программируете, и будет вам счастье.
|
|||
41
Amiralnar
23.09.10
✎
12:55
|
Регионы, к стати, можно загрузить с ИТС. У них коды, даже, имеют связь с инн, если память мне не изменяет.
|
|||
42
Ayvengo
23.09.10
✎
13:02
|
(40) эх, я только посоветовать могу, а захотят они или нет - уже другой вопрос.
|
|||
43
МихаилМ
23.09.10
✎
14:43
|
решение в (27) пратформо-зависимое
(читайте доки по like) предлагаю заменить его на такое: в таблицу(справочник ) "ДоступныеИНН" добавить еще одно поле (допустим "Наименование_MAX") в нем будет содеожаться копия поля "Наименование" + символс максимальным кодом (1с8 юникодовая); потом отбор строить соединением с этой таблицей по условию (Справочник.Контрагенты.ИНН >= ДоступныеИНН.Наименование) AND (Справочник.Контрагенты.ИНН < ДоступныеИНН.Наименование_MAX) именно так и сделает MS SQL в случае если Контрагенты.ИНН - индексированно. поэтому предлагаю ему помочь :). в случае если структуру справочника изменять нельзя - можно попробовать сгенерить данную структуру во временной таблице. сответственно получим плаатформо-независимое решение - универсальность штука дорогая -------------- к томуже замечу, что 1с8 конструкцию "В" В НЕКОТОРЫХ случаях реализует через EXIST для MS SQL serv что весма не производительно. |
|||
44
Ayvengo
24.09.10
✎
15:35
|
(43) только надо еще в число преобразовать :) Тогда будет работать, а так там строка и вести себя она будет не как число :)
|
|||
45
МихаилМ
24.09.10
✎
17:58
|
(44)
ерунда полная. 1c8 прекрасно сравнивает строки. строка и не должна вести себя как число. читайте что такое colation |
|||
46
Ayvengo
27.09.10
✎
10:42
|
(45) ерунда когда клиент укажет минимальное значение 1, максимальное значение 2 .. в итоге попадут ИНН начинающиеся на 10 ... это к примеру о сравнении строк .
|
|||
47
Sammo
27.09.10
✎
10:44
|
Все не читал. Но 0 можно сделать - преобразовать список значений в строку с разделителями. Тогда подобно будет работать.
|
|||
48
Dolter
27.09.10
✎
10:48
|
можно список во временную таблицу и связка <по ... подобно ...>, ИМХО
|
|||
49
Ayvengo
27.09.10
✎
11:37
|
(45) в общем МихаилМ Вы правы только в том случае, если указывать ИНН полностью все 12 знаков, хотя .. почему-то кажется, что все-равно проверять надо ... не верю я в это сравнение строк ...
|
|||
50
МихаилМ
27.09.10
✎
11:42
|
то (49)
как проверяли ? неужели строка "223" < "2223" |
|||
51
Dolter
27.09.10
✎
11:43
|
см (48)
пример: select t1.f1, t2.f2 from (select 'as' as f1 union all select 'ds') t1 inner join (select 'asff' f2 union all select 'sdff' union all select 'ffds') t2 on t2.f2 like '%' + t1.f1 + '%' |
|||
52
МихаилМ
27.09.10
✎
11:56
|
то (51) на DB2 работать не будет
к тому же если по инн есть индекс - все равно будет фул скан |
|||
53
Ayvengo
27.09.10
✎
12:03
|
(50) проверял на банальном варианте сравнения 10 с 1 и 2 .. 10 >= 1 и 10 < 2 результат = Истина.
|
|||
54
МихаилМ
27.09.10
✎
12:08
|
(52)
так что непонятно ? так и должно быть. |
|||
55
Ayvengo
27.09.10
✎
12:11
|
(54) проснулся я , в общем :D А-то начинается на 1 и начинается на 10 для меня разное было :D
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |