|
Как в запросе написать условие gr&(1<<4)? | ☑ | ||
---|---|---|---|---|
0
AnisaL
13.03.14
✎
10:02
|
Доброе утро!
Как в запросе написать условие gr&(1<<4) ? |
|||
1
Мутабор
13.03.14
✎
10:03
|
gr%26(1%3C%3C4)
|
|||
2
Мутабор
13.03.14
✎
10:04
|
Вот полностью в запросе:
http://yandex.ru/yandsearch?text=gr%26(1%3C%3C4)&from=os&lr=197 или мы про гугл? |
|||
3
Мутабор
13.03.14
✎
10:05
|
||||
4
m-serg74
13.03.14
✎
10:06
|
(2) +100 :)
|
|||
5
AnisaL
13.03.14
✎
10:06
|
(0) точнее условие вот: gr&(1<<4)>0
|
|||
6
AnisaL
13.03.14
✎
10:08
|
(1) непонятно
|
|||
7
m-serg74
13.03.14
✎
10:08
|
(5) а 1<<4 это не 10000
|
|||
8
bolobol
13.03.14
✎
10:10
|
Взять в кавычки, не?
|
|||
9
ДенисЧ
13.03.14
✎
10:11
|
в 1с нет оператора << ...
|
|||
10
1dvd
13.03.14
✎
10:11
|
Это С++ чтоли?
|
|||
11
bolobol
13.03.14
✎
10:11
|
И где здесь условие, простите, 1 много меньше четырёх это, условно, можно принять за истину сразу, или за ложь, в зависимости от системы, наверное
|
|||
12
AnisaL
13.03.14
✎
10:11
|
(8) запрос я делаю в конструкторе к внешнему источнику данных, там в условии написать в кавычках?
|
|||
13
AnisaL
13.03.14
✎
10:12
|
(11) условие здесь (5) что результат выражения больше 0
|
|||
14
AnisaL
13.03.14
✎
10:13
|
(11) это не много меньше 4, а побитовый левый сдвиг
|
|||
15
AnisaL
13.03.14
✎
10:13
|
(10) да, в с++ есть такая операция, запрос к базе данных биллинга
|
|||
16
AnisaL
13.03.14
✎
10:14
|
Вопрос как это выражение написать в 1с
|
|||
17
m-serg74
13.03.14
✎
10:17
|
(16) разделить на 100000 с коруглением до целого и до одного десятичного и сравнить не подходит?
|
|||
18
m-serg74
13.03.14
✎
10:18
|
(17) извиняюсь... отставить
|
|||
19
1dvd
13.03.14
✎
10:21
|
1<<4
это можно представить как 1*16 |
|||
20
bolobol
13.03.14
✎
10:22
|
Побитовый сдвиг это возведение двойки в степень и умножение на результат. А вот побитовое И...
|
|||
21
vqwy
13.03.14
✎
10:22
|
угадал автора по теме
|
|||
22
vqwy
13.03.14
✎
10:23
|
в ветку реквестируется Wobland
|
|||
23
1dvd
13.03.14
✎
10:24
|
(22) позвал
|
|||
24
le_
13.03.14
✎
10:25
|
(0) Предлагаю сформулировать это условие на русском языке и решение тут же найдется.
|
|||
25
AnisaL
13.03.14
✎
10:25
|
(20) ну сначала же делается сдвиг а потом операция &, т.е. побитовое И
|
|||
26
AnisaL
13.03.14
✎
10:25
|
(21) интересно как?
|
|||
27
1dvd
13.03.14
✎
10:28
|
(26) не понятно для чего такую экзотику делать в 1С, тем более в запросе
|
|||
28
AnisaL
13.03.14
✎
10:28
|
(23) без него не обойдемся никак))
|
|||
29
1dvd
13.03.14
✎
10:29
|
Wobland пока занят. подойдёт попозже
|
|||
30
AnisaL
13.03.14
✎
10:29
|
(27) мне нужно загрузить данные из базы биллинга, а это условие определяет договор физика или юрика:
SELECT * from Contract WHERE gr&(1<<4)>0 - юрики SELECT * from Contract WHERE gr&(1<<0)>0 - физики |
|||
31
1dvd
13.03.14
✎
10:30
|
(30) gr - это число?
|
|||
32
vqwy
13.03.14
✎
10:31
|
(30) что такое "gr", уже спрашивали, я так понимаю?
|
|||
33
le_
13.03.14
✎
10:32
|
И причем тут с++?
|
|||
34
AnisaL
13.03.14
✎
10:32
|
(32) (31) да число - целое, например 35184372121605
|
|||
35
AnisaL
13.03.14
✎
10:33
|
(33) ни причем, это запрос на sql (30)
|
|||
36
le_
13.03.14
✎
10:34
|
(35) А в (15) что?
|
|||
37
le_
13.03.14
✎
10:35
|
В общем, нужно сделать незнамо что и незнамо как. Желающие помочь, присоединяйтесь!
|
|||
38
Wobland
13.03.14
✎
10:36
|
(30) 4я цифра не ноль - юрик, 1я цифра не ноль - физик. что за бред?
|
|||
39
bolobol
13.03.14
✎
10:36
|
Так вот, И побитовое с одним битом - это деление на возведённую в степень двойку и проверка на чётность. Осталось понять, как проверить чётность...
|
|||
40
ДенисЧ
13.03.14
✎
10:37
|
(38) кто ты такой, чтобы критиковать структуру бд биллинга?
ДАли условие - пляши. |
|||
41
bolobol
13.03.14
✎
10:37
|
Кроме как делить на два без остатка - ничего в голову не приходит
|
|||
42
bolobol
13.03.14
✎
10:38
|
Итого, получаем целое(гр / (1*2^4))%2 = 0 или 1
|
|||
43
Wobland
13.03.14
✎
10:39
|
вот тебе 4я цифра строкой: select substring(cast(22220222 as varchar(8)), 8-4+1, 1)
или тут вообще о чём речь? |
|||
44
Йохохо
13.03.14
✎
10:40
|
(30) Цел(гр, 32) > 8
|
|||
45
vqwy
13.03.14
✎
10:41
|
был бы это ИНН - просто определили бы юрик или физик
|
|||
46
Зойч
13.03.14
✎
10:46
|
делай через адо, там все есть
|
|||
47
Ненавижу 1С
гуру
13.03.14
✎
10:51
|
что все таки означает 1<<4 ?
|
|||
48
z80a
13.03.14
✎
10:53
|
(47) один гораздо меньше чем 4
|
|||
49
Ненавижу 1С
гуру
13.03.14
✎
10:54
|
(48) логично, но тогда почему 1<<0
|
|||
50
z80a
13.03.14
✎
10:55
|
(49) хз
|
|||
51
Speshuric
13.03.14
✎
10:55
|
(47) 1<<4 = 16
https://www.wolframalpha.com/input/?i=1%3C%3C4&dataset= |
|||
52
Ненавижу 1С
гуру
13.03.14
✎
10:56
|
(51) если бы смысл был таким, то наверное написали бы просто 16
|
|||
53
Speshuric
13.03.14
✎
10:58
|
(52)см. 30, просто походу кто-то в запросе решил указать явно какой бит должен быть установлен для юриков и физиков.
|
|||
54
le_
13.03.14
✎
11:00
|
||||
55
Starhan
13.03.14
✎
11:01
|
(52) возможно AnisaL не знает истиннго ссмысла 1<<4 и пишет как дали.
|
|||
56
Йохохо
13.03.14
✎
11:01
|
(49) просто для единообразия записи, наверняка там еще куча гадости понапихана, 1<<1 самозанятый, 1<<2 иностранный
|
|||
57
Speshuric
13.03.14
✎
11:08
|
(49) 1<<0 = 1, проверяем 0-й бит, 1<<4 = 16 - проверяем 4-й бит, всё логично и просто было для автора запроса в SQL.
Битовую арифметику в 1С-ном запросе сделать легко и просто, но выражения получаются неситаемые. |
|||
58
Speshuric
13.03.14
✎
11:14
|
(57)
В запросе придется делать примерно так: ВЫБРАТЬ ВЫБОР КОГДА Т.Ч / 2 = (ВЫРАЗИТЬ(Т.Ч / 2 КАК ЧИСЛО(15, 0))) ТОГДА ЛОЖЬ ИНАЧЕ ИСТИНА КОНЕЦ КАК ПроверкаБита0, ВЫБОР КОГДА (ВЫРАЗИТЬ(Т.Ч / 16 КАК ЧИСЛО(15, 0))) / 2 = (ВЫРАЗИТЬ((ВЫРАЗИТЬ(Т.Ч / 16 КАК ЧИСЛО(15, 0))) / 2 КАК ЧИСЛО(15, 0))) ТОГДА ЛОЖЬ ИНАЧЕ ИСТИНА КОНЕЦ КАК ПроверкаБита4 ИЗ (ВЫБРАТЬ &Параметр КАК Ч) КАК Т |
|||
59
Ненавижу 1С
гуру
13.03.14
✎
11:22
|
(58) ВЫРАЗИТЬ(Т.Ч / 16 КАК ЧИСЛО(15, 0)) работает как округление а не целая часть, надо
ВЫРАЗИТЬ(Т.Ч / 16 -0.5 КАК ЧИСЛО(15, 0)) |
|||
60
Speshuric
13.03.14
✎
11:39
|
(59) Спасибо за ценное уточнение, писал "на коленке". Один фиг делать так в запросе я бы не стал. Уж проще промежуточную вьюху с вычисляемыми полями (или сразу с условиями) впендюрить и оттуда брать данные.
|
|||
61
Wobland
13.03.14
✎
12:03
|
всё ещё занимаетесь этим битоверчением? интересно..
|
|||
62
AnisaL
13.03.14
✎
12:55
|
(61) я только пришла с обеда
|
|||
63
Wobland
13.03.14
✎
12:59
|
(62) самое время пояснить тому, кто всё прогулял, содержательный смысл конструкции
|
|||
64
AnisaL
13.03.14
✎
13:03
|
(63) слушаю внимательно ))
|
|||
65
Wobland
13.03.14
✎
13:05
|
хорошо, переформулируем запрос. что за gr&(1<<4) ?
|
|||
66
AnisaL
13.03.14
✎
13:05
|
(65) это условие для юриков
|
|||
67
Wobland
13.03.14
✎
13:06
|
хорошо, переформулируем ещё раз. что означают операции (это же операции?) & и <<?
|
|||
68
AnisaL
13.03.14
✎
13:07
|
(65) точнее gr&(1<<4)>0, gr - группа, типа bigint(20) в базе данных биллинга
|
|||
69
Ненавижу 1С
гуру
13.03.14
✎
13:08
|
(68) а дальше?
|
|||
70
Wobland
13.03.14
✎
13:08
|
всё-таки битовые сложения и сдвиг?
|
|||
71
Wobland
13.03.14
✎
13:08
|
(70) 1С так не умеет. за SQLем что-то тоже не заметил
|
|||
72
AnisaL
13.03.14
✎
13:09
|
(67) & - Bitwise AND, << - Left shift - взято отсюда https://dev.mysql.com/doc/refman/5.0/en/bit-functions.html
|
|||
73
Ненавижу 1С
гуру
13.03.14
✎
13:09
|
(71) битовый сдвиг влево на 1С? да запросто!
|
|||
74
Wobland
13.03.14
✎
13:09
|
(73) в запросе?
|
|||
75
AnisaL
13.03.14
✎
13:09
|
(70) да
|
|||
76
AnisaL
13.03.14
✎
13:09
|
(74) да
|
|||
77
Wobland
13.03.14
✎
13:10
|
(76) <<4 - умножение на 16
|
|||
78
AnisaL
13.03.14
✎
13:10
|
(74) в смысле что это условие надо в запросе реализовать к внешнему источнику
|
|||
79
AnisaL
13.03.14
✎
13:11
|
(77) 1<<4 - 1*16 ?
|
|||
80
Ненавижу 1С
гуру
13.03.14
✎
13:12
|
(79) 1<<4 = 1*2^4 = 1*16
|
|||
81
Wobland
13.03.14
✎
13:14
|
(77) а в паре с умножением - выделение 4го бита
|
|||
82
Зойч
13.03.14
✎
13:14
|
нужно проверить что 4 бит - это единичка. На 1с это нельзя
|
|||
83
Wobland
13.03.14
✎
13:15
|
а что, если взять и перечислить все числа, имеющие 4й бит в 1? бредово, но технически осуществимо
|
|||
84
Ненавижу 1С
гуру
13.03.14
✎
13:17
|
вот твоё условие:
gr - (ВЫРАЗИТЬ(gr / 32 - 0.5 КАК ЧИСЛО(10, 0))) * 32 >= 16 |
|||
85
AnisaL
13.03.14
✎
13:23
|
(84) спасибо! а вот такое выражение: gr&(1<<0)>0
|
|||
86
Wobland
13.03.14
✎
13:24
|
(84) у меня 233 (11101001) через это не пролезло. не так считал?
|
|||
87
skunk
13.03.14
✎
13:25
|
(77)как бы не совсем так
|
|||
88
Wobland
13.03.14
✎
13:26
|
(87) как бы - это как?
|
|||
89
Ненавижу 1С
гуру
13.03.14
✎
13:27
|
(86) для 233 условие = ложь
|
|||
90
skunk
13.03.14
✎
13:28
|
но просто не всегда а<<4 будет равно а*16
|
|||
91
inspam
13.03.14
✎
13:28
|
(82) чой то?
|
|||
92
Ненавижу 1С
гуру
13.03.14
✎
13:28
|
(86) считая слева 4-й бит равен 0 (нумерация от 0), так что все ОК
|
|||
93
Wobland
13.03.14
✎
13:30
|
(92) ага, понял уже
|
|||
94
Wobland
13.03.14
✎
13:31
|
(90) ты про переполнение штоль? чудная, давно забытая вселенная с ноликами и единичками ;)
|
|||
95
skunk
13.03.14
✎
13:31
|
(94)но его пока не кто не отменял
|
|||
96
Ненавижу 1С
гуру
13.03.14
✎
13:32
|
(85) а подумать самой?
16 замени на 1 32=2*16 замени на 2 |
|||
97
Serginio1
13.03.14
✎
13:33
|
(52) Это битовая маска. Сдвиг удобен теч, что зная в какой позиции должен быть флаг начиная с нуля.
|
|||
98
AnisaL
13.03.14
✎
14:01
|
(84) так не получается - и физики и юрики выбираются
|
|||
99
Wobland
13.03.14
✎
14:02
|
(98) по твоей схеме гр может содержать признаки физлица и юрлица одновременно
|
|||
100
vqwy
13.03.14
✎
14:03
|
100
|
|||
101
Wobland
13.03.14
✎
14:06
|
(98) тебя научить быстро смотреть глазами в 4й или 0й байт десятичного числа?
|
|||
102
AnisaL
13.03.14
✎
14:08
|
(101) ага
|
|||
103
Мутабор
13.03.14
✎
14:10
|
16
48 112 240 у них байт установлен |
|||
104
Wobland
13.03.14
✎
14:10
|
||||
105
Мутабор
13.03.14
✎
14:11
|
||||
106
AnisaL
13.03.14
✎
14:16
|
(104) это поняла
|
|||
107
le_
13.03.14
✎
14:20
|
(103) Байт или бит?
|
|||
108
Мутабор
13.03.14
✎
14:21
|
У этих чисел бит. Но решение выше уже написали думаю, там что поздно баржоми пить
|
|||
109
AnisaL
13.03.14
✎
14:33
|
(108) ты про (84) ? у меня по нему не удалось получить юриков
|
|||
110
Ненавижу 1С
гуру
13.03.14
✎
14:41
|
(109) накидай нам несколько примеров gr для юриков
|
|||
111
le_
13.03.14
✎
14:44
|
(0) А почему бы не использовать ADO для доступа к этим данным? Можно было бы использовать готовые запросы, как, как есть...
|
|||
112
AnisaL
13.03.14
✎
14:51
|
(110) 1099511726101
1099511726100 4398046609428 4398046609429 4398046543892 |
|||
113
AnisaL
13.03.14
✎
14:52
|
(111) да, но столько уже работы проделано со внешними источниками, переписывать много
|
|||
114
AnisaL
13.03.14
✎
14:54
|
(112) еще 1125899906908180, 72057594037993492
|
|||
115
Ненавижу 1С
гуру
13.03.14
✎
14:55
|
пробовала разрядность в (84) повысить?
КАК ЧИСЛО(15, 0) |
|||
116
Ненавижу 1С
гуру
13.03.14
✎
14:58
|
(114) проверил все, всё проходит
повысь разрядность КАК ЧИСЛО(18, 0) |
|||
117
Ненавижу 1С
гуру
13.03.14
✎
15:00
|
если не поможет, то дело в движке, точнее ретрансляторе запроса, придется переходить на ADO
|
|||
118
AnisaL
13.03.14
✎
15:00
|
(116) ок, щас попробую
|
|||
119
AnisaL
13.03.14
✎
15:04
|
(116) ура! получилось! спасибо большое!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |