Имя: Пароль:
1C
1С v8
Как добавить в "поля" двоеточие?
0 Ayvengo
 
23.05.12
17:37
Суть в следующем. У меня с помощью запроса получены две колонки, в одной колонке я получаю числом количество часов, а во второй колонке я получаю количество минут. Я хочу создать третью колонку, что бы в ней было следующее 11:30 или 17:39 или что-то подобное, в общем добавить из двух колонок сделать одну и разделить значения двоеточием.
1 Buster007
 
23.05.12
17:38
желаю удачи :)
2 Ayvengo
 
23.05.12
17:39
(1) спасибо :D
3 Alex S D
 
23.05.12
17:40
лепи двоеточие в запросе
4 Жан Пердежон
 
23.05.12
17:40
НЕВОЗМОЖНО
5 Нуф-Нуф
 
23.05.12
17:40
Будь мужиком, блеать! Сделай!
6 Ayvengo
 
23.05.12
17:41
Почему же нельзя преобразовать число в строку в запросе :(
7 andrewks
 
23.05.12
17:42
(6) кто сказал, что нельзя?
8 Alex S D
 
23.05.12
17:42
9 Ayvengo
 
23.05.12
17:44
(8) - это извращение. проще в скд воспользоваться вычисляемыми полями
10 Ayvengo
 
23.05.12
17:45
(7) пробовал, пишет о несовместимости
11 andrewks
 
23.05.12
17:45
(9) тогда чего пришёл? пользуйся!
12 andrewks
 
23.05.12
17:46
(10) правильно пишет. нельзя же прямо так влоб
13 Ayvengo
 
23.05.12
17:46
(11) так что, можно преобразовать в запросе число в строку?
14 Ayvengo
 
23.05.12
17:46
(12) а как криво? пункт (8) не применять :)
15 andrewks
 
23.05.12
17:46
(13) можно!
16 andrewks
 
23.05.12
17:47
(14) ща, погодь
17 Ayvengo
 
23.05.12
17:47
(16) погождаю :)
18 shuhard
 
23.05.12
17:49
(14) что мешает сделать Рг сведений и соединить с ним по часам и минутам, а в ресурс записать 77:99 ?
19 Tatitutu
 
23.05.12
17:49
(0) а если с другого конца - получить одну колонку и потом сделать три разделив одну на две
20 Ayvengo
 
23.05.12
17:50
(18) добавление регистра сведений мешает ;)
(19) а у меня нету третьей колонки. у меня вообще есть дата начала и дата окончания. мне надо разницу между ними вычислить ;)
21 Eugene_life
 
23.05.12
17:52
(20) считай в секундах, при выводе - Формат
22 Ayvengo
 
23.05.12
17:53
(21) чет не уловил как это сделать. у меня 90 минут есть = 1:30 .. как форматом?
23 shuhard
 
23.05.12
17:53
(20) чё то тут не так,
ты куда дальше этот запрос засунешь ?
24 andrewks
 
23.05.12
17:55
на, лови:


select
17 as h
,15 as m
into InputTable
union select 20,07 union select 8,32 union select 23,59

;

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 minutes
from
digits as digits1
,digits as digits2
where (digits1.num+10*digits2.num between 0 and 59)
index by num

;

select
digits1.num+10*digits2.num as num
,digits2.numstr+digits1.numstr as numstr
into hours
from
digits as digits1
,digits as digits2
where (digits1.num+10*digits2.num between 0 and 23)
index by num

;

select
"время "+hours.numstr+":"+minutes.numstr as timestr
from
InputTable
inner join
hours
on (InputTable.h=hours.num)
inner join
minutes
on (InputTable.m=minutes.num)

25 andrewks
 
23.05.12
17:58
оптимизация:


select
17 as h
,15 as m
into InputTable
union select 20,07 union select 8,32 union select 23,59

;

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 minutes
from
digits as digits1
,digits as digits2
where (digits1.num+10*digits2.num between 0 and 59)
index by num

;

select
*
into hours
from
minutes
where (minutes.num between 0 and 23)
index by num

;

select
"время "+hours.numstr+":"+minutes.numstr as timestr
from
InputTable
inner join
hours
on (InputTable.h=hours.num)
inner join
minutes
on (InputTable.m=minutes.num)

26 Ayvengo
 
23.05.12
17:59
(23) а чего не так?
(24) идея ясна - но не покатит, т.к. у меня может быть больше 24 и хрен знает лимит... или с 10000 норм пойдет?:)
27 Buster007
 
23.05.12
18:00
(26) ты же про минуты говорил... )
28 Ayvengo
 
23.05.12
18:01
(25) как минимум не покатит из-за этого:

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"
29 shuhard
 
23.05.12
18:01
(26)[у меня может быть больше 24]
ненормированный рабочий день =)
30 andrewks
 
23.05.12
18:01
(26) 2. обманщик! давай нормальные входные условия
(28) а вот это ни при чём
31 Ayvengo
 
23.05.12
18:02
(27) да, про минуты и часы. часов может быть 100 затрачено на работу ;) а тут получается, что только 9 :)
32 andrewks
 
23.05.12
18:02
(31) не 9, а 24
33 andrewks
 
23.05.12
18:03
а если секунд окажется более 60?
34 Ayvengo
 
23.05.12
18:04
(33) не покатит по следующей причине. начало работ 20.05.2012 10:00 - окончание работ 23.05.2012 13:30
мне количество часов и минут, и что бы было приятно смотреть хочу их разделить двоеточием.
35 andrewks
 
23.05.12
18:05
+(33) т.е. минут
36 Ayvengo
 
23.05.12
18:06
(35) будет 1:01 к примеру
37 andrewks
 
23.05.12
18:06
(34) ну модифицируй слегонца (25), правда, это уже будет не так быстро, если верхнюю планку высоко задрать
38 Ayvengo
 
23.05.12
18:08
(37) ага, но метод интересный, если у тебя есть рамки. если я правильно понял, то ты просто сопоставляешь полученные числа и заменяешь их на строки ;)
39 shuhard
 
23.05.12
18:09
(34)[что бы было приятно смотреть хочу их разделить двоеточием.]
раз смотреть, значит либо отчёт,либо табличное поле,
что мешает склеить при выводе ?
40 Ayvengo
 
23.05.12
18:10
(39) склеить при выводе нет необходимости, я использую СКД. В принципе я нашел решение - вычисляемые поля. Но интересно было как можно сделать это без вычисляемых полей, а просто в тексте запроса.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn