Имя: Пароль:
1C
1С v8
Преобразование числа в строку в запросе
,
0 geka-geka
 
12.07.12
14:55
В запросе в таблице есть поле с типом Число(2,0). Нужно преобразоватьего в поле с типом Строка(2) при этом чтобы выводились лидирующие нули.
Например:
7 -> "07"
21 -> "21"

Реньше пользовался функцией Формат(Выборка.Поле1,"ЧЦ=2; ЧВН=") уже к выборке, а как это сделать в запросе?
1 Wobland
 
12.07.12
14:56
(0) сделать это в выборке
2 Wobland
 
12.07.12
14:56
вот на зачем?
3 geka-geka
 
12.07.12
14:57
(2) интересно
4 Reset
 
12.07.12
14:58
В запросе никак
5 Reset
 
12.07.12
15:02
хотя можно сделать 99-и строчный ВЫБОР (когда ч=1 тогда "01" и тд)
но это только в пятницу
Еще (тоже в пятницу) можно создать ТЗ из чисел и представлений и передать ее в запрос для соединения.
6 geka-geka
 
12.07.12
15:02
Странно, почему-то думал, что можно. Спасибо, тогда буду работать с выборкой.
7 geka-geka
 
12.07.12
15:03
(5) Нет уж! Лучше по-старому.
8 hhhh
 
12.07.12
15:04
(6) как-то так попробуй

ПОДСТРОКА("01020304....9899", ТвоеЧисло*2-1, 2)
9 andrewks
 
12.07.12
15:05
(4) можно
10 andrewks
 
12.07.12
15:05
(5) можно и без таких извратов
11 Reset
 
12.07.12
15:06
(8) Оригинально, +
12 geka-geka
 
12.07.12
15:08
Тогда уж так ПОДСТРОКА("0001020304....9899", ТвоеЧисло*2-1, 2)
13 Reset
 
12.07.12
15:08
(10) Давай свой вариант, любопытно
14 andrewks
 
12.07.12
15:08
(12) не угадал
15 szhukov
 
12.07.12
15:10
(5) не получится, выбор имеет ограничение на вложенность и до 100 точно не пустит сделать :)
16 Прохожий
 
12.07.12
15:11
(5) Начинать надо с 0...
17 Reset
 
12.07.12
15:11
(15) Вложенность не нужна, можно писать просто много "когда" (см синтаксис)
18 geka-geka
 
12.07.12
15:13
(8) (14) Как быть если мое число = 0?
19 andrewks
 
12.07.12
15:14
(13)


select
2 as val
into InputTable
union select 25 union select 4 union select 97

;

select
0 as num
,"0" as numstr
into digits
union select 1,"1" union select 2,"2" union select 3,"3" union select 4,"4" union select 5,"5"
union select 6,"6" union select 7,"7" union select 8,"8" union select 9,"9"

;

select
digits1.num+10*digits2.num as num
,digits2.numstr+digits1.numstr as numstr
into numbers
from
digits as digits1
,digits as digits2
index by num

;

select
numbers.numstr as OutText
from
InputTable
inner join
numbers
on (InputTable.val=numbers.num)

20 Reset
 
12.07.12
15:15
(18) например ПОДСТРОКА("0001020304....9899", (ТвоеЧисло+1)*2-1, 2)
21 geka-geka
 
12.07.12
15:18
(20) так меня вполне устроит
22 Reset
 
12.07.12
15:21
(19) Я не назвал бы это "без извратов", но понравилось :-) И легко дорабатываться для 3х или более чисел
23 Reset
 
12.07.12
15:22
"3х-значных и более"