Имя: Пароль:
1C
1C 7.7
v7: Преобразование типа в прямом запросе 77
0 Лиза777
 
18.05.18
08:00
У меня условие, что код товара больше тысячи, а код это текстовое поле, как перевести в integer - помогите!

CASE WHEN (Convert(integer,КодТовара) >1000) THEN СуммаПокупки ELSE 0 END)
1 Лиза777
 
18.05.18
08:00
так не работает
2 фросия
 
18.05.18
08:09
ВЫРАЗИТЬ(что-то КАК ЧИСЛО(формат))
3 MakaMaka
 
18.05.18
08:10
(0)

If 1С Then
Выразить( Строка КАК Число(15,2))
Else
Нужен другой форум
END
4 catena
 
18.05.18
08:11
Преобразовать код товара в число до запроса....
5 Лиза777
 
18.05.18
08:15
(4) как вы себе это представляете интересно?
6 Лиза777
 
18.05.18
08:15
(3) а в прямом запросе так разве работает? сейчас попробую
7 Лиза777
 
18.05.18
08:17
(3) Пишет- Выразить не является известным имя встроенной функции.
8 Лиза777
 
18.05.18
08:24
это в простом запросе работает, а мне на 1с++ надо
9 Йохохо
 
18.05.18
08:37
если последнюю скобку убрать вполне работает
10 Лиза777
 
18.05.18
08:41
| SUM (CASE WHEN (Выразить(КодТовара) КАК Число(15,2)) >1000) THEN 1 ELSE 0 END) as тест

не работает так
11 фросия
 
18.05.18
08:45
со скобками разберитесь
12 Йохохо
 
18.05.18
08:46
но почему строки не сравнивать? райт("000000000" + КодТовара, 8) больше "00001000"
(10) я про код в (0), 1с++ на чем? тскл? какой там Выразить?
SELECT SUM(CASE WHEN (RIGHT('0000001000',8)>= '00001000') THEN 1 ELSE 0 END)
с конверт тоже работает
13 catena
 
18.05.18
08:48
Видимо, нужно в теме-то указывать, что 77
14 Лиза777
 
18.05.18
08:49
convert не получалось - видиом тоже не знаю как правильно написать.
а right 8 как брать может там у меня код будет "12"
15 Лиза777
 
18.05.18
08:49
(13) аааа!! точно, вот я лопух!
16 Йохохо
 
18.05.18
08:58
(14)RIGHT('00000000' + КодТовара,8)
с конверт все верно, смотрите скобки и любые символы кроме цифр в коде
17 ADirks
 
18.05.18
09:33
(14)
select convert(int, '1000')
18 Лиза777
 
18.05.18
10:36
написала
| SUM (CASE WHEN convert(int, КодТовара)>1000 THEN 1 ELSE 0 END) as тест

пишет ошибку

Ошибка преобразования значения varchar "   1EC1  " в тип данных int.
19 Йохохо
 
18.05.18
10:37
(18) что там с любыми символами кроме цифр?
20 Лиза777
 
18.05.18
10:37
не поняла вопрос
21 Йохохо
 
18.05.18
10:44
делайте через строки
22 Cool_Profi
 
18.05.18
10:49
(18) "Ошибка преобразования значения varchar "   1EC1  " в тип данных int."
Я бы на месте базы данных вылез из сервера и набил бы лицо такому программисту...
23 Лиза777
 
18.05.18
11:04
(22) вот что вы ругаетесь, не понимаю я если? вы сразу когда родились всё знали и понимали видимо?
24 фросия
 
18.05.18
11:08
(23) там же по русски написано что не может преобразовать значиение в число
25 Лиза777
 
18.05.18
11:09
(24) я поняла что не может так как я неправильно пишу, что в синтаксисе ошибка
26 trad
 
18.05.18
11:11
(18) вероятнее всего в КодТовара у вас не код товара, а идентификатор элемента справочника.
наверно надо использовать поле code, а не id
27 Лиза777
 
18.05.18
11:13
(26) поняла, спасибо, попробую
28 trad
 
18.05.18
11:15
(27) но преобразование в int будет работать только, если в коде действительно только цифры (ну и допускаются пробелы в начале/конце)
29 Лиза777
 
18.05.18
11:17
Так у меня и есть code. Вот так в выборе полей стоит:

SELECT
.......
    |        ОЦТовары.Code as КодТовара,
.....
30 Лиза777
 
18.05.18
11:17
(28) ладно, спасибо.

Данные посмотрю какие там
31 Лиза777
 
18.05.18
12:28
это я в запросе ошиблась - там два запроса объединяю. Хорошо вы тут обратили внимание на CODE и ID. В одном подзапросе было CODE,  а в другом ID. Чёт я....
Спасибо ребята всем!!!
32 Злопчинский
 
18.05.18
12:34
кстати, в клюшках в чорном запросе в ДБФ версии можно совершенно спокойно просуммировать коды товаров (которые в базе объявлены как текстовые, но забиты цифры). Но этот же чорный запрос на скуле - свалится...