Имя: Пароль:
1C
 
как вычислить в запросе часы и минуты
0 ksergey
 
04.12.08
13:16
Привет
Есть значение КвоМинут.
Как в запросе можно корректно разобрать на Часы-Минуты ?
1 zbv
 
04.12.08
13:17
"*" "-"
2 ZanderZ
 
04.12.08
13:17
/60
3 ksergey
 
04.12.08
13:22
блин, умники...
как получить ЦЕЛУЮ часть и ОСТАТОК от деления для КвоМинут/60?
4 НЕА123
 
04.12.08
13:24
(3) не выражайся здесь. варажайся в запросе.
5 ksergey
 
04.12.08
13:24
(2) /60  -это мона получить просто КвоЧасов с выражением минут как десятичная часть часа, а мне нужно 320минут = 5часов 20минут
6 zag2art
 
04.12.08
13:24
ВЫРАЗИТЬ - обрати внимание на округление
7 ksergey
 
04.12.08
13:28
(6) делал так

 ВЫРАЗИТЬ (КвоМинут/60 КАК ЧИСЛО(8,0)) КАК Часы

возвращает для 3.5  как 4.0
8 ksergey
 
04.12.08
13:28
(6) покажи пример как сделать чтоб получить целую часть деления ?
9 zag2art
 
04.12.08
13:29
КвоМинут/60-0.5 - я же говорю обрати внимание на округление
10 ksergey
 
04.12.08
15:31
(9) кстати, твой вар-т кривой, т.к. из-за -0,5 возможны ситуации, когда не правильно высчитывается ...

непонятно, а где пропали все наши маститые коллеги ?
11 Широкий
 
04.12.08
15:34
(10) нормальный вариант .. надо просто смотреть число отрицательное или положительное
12 ksergey
 
04.12.08
15:36
нашел неуклюжее, но решение

ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1,1,1), МИНУТА, КвоМинут) КАК ЧасыМинуты,

но возвращает эта констр-ция  в виде 01.01.0001 3:20:00
и от далее - не могу придумать как срезать первую часть даты  01.01.0001
13 ksergey
 
04.12.08
15:38
пробовал

ПОДСТРОКА (ПРЕДСТАВЛЕНИЕ (ДОБАВИТЬКДАТЕ (

выводит ошибку - видать слишком мудрено для 8-ки  :(
14 Ц_У
 
04.12.08
15:42
(12)
Используй разность дат
15 ksergey
 
04.12.08
15:45
(12) не понял, что даст мне разность дат?

у меня КвоМинут всё равно не превышает 12часов * 60
16 НЕА123
 
04.12.08
15:52
ЧАС(<Дата>)  МИНУТА(<Дата>)
17 НЕА123
 
04.12.08
15:54
(10) в мсскул все правильно.
18 ksergey
 
04.12.08
16:11
(17) согласен. в  MSSQL всё правильно - там и отстаток от деления есть, и целая часть числа можно получить...
а в 8-ке приходится заниматься извращениями  :)
19 НЕА123
 
04.12.08
16:13
(18) и в 1С с округлением, если база мсскул тоже все нормально.
20 Ц_У
 
04.12.08
16:20
Функция ЧасовВМин(Минуты)
  Запрос = новый Запрос();
  Запрос.Текст = "ВЫБРАТЬ
                 |    ВложенныйЗапрос.Мин,
                 |    ВложенныйЗапрос.Час
                 |ИЗ
                 |    (ВЫБРАТЬ
                 |        ЧАС(ВложенныйЗапрос.Поле1) КАК Час,
                 |        МИНУТА(ВложенныйЗапрос.Поле1) КАК Мин
                 |    ИЗ
                 |        (ВЫБРАТЬ
                 |            ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), МИНУТА, &КвоМинут) КАК Поле1) КАК ВложенныйЗапрос) КАК ВложенныйЗапрос";
   Запрос.УстановитьПараметр("КвоМинут",Минуты);
   Результат = Запрос.Выполнить().Выгрузить();
   Возврат Строка(Результат[0].Час)+":"+Строка(Результат[0].Мин);
                 
КонецФункции
21 Ц_У
 
04.12.08
16:24
(20)ВложенныйЗапрос.Час + ВложенныйЗапрос.Мин/100
будет 2,05 = 2 часа 5 мин ))
22 Serg_1960
 
04.12.08
16:26
(0) Сорри, а зачем?
23 ksergey
 
04.12.08
16:27
(20)  -Садить,  ставлю "5"  

(в хозяйстве пригодится  :-) )
24 ksergey
 
04.12.08
16:28
(ТЕЗКЕ-60)  в регистре храню время в МИНУТАХ

в отчет хочу вывести как положено ЧЧ:ММ
а не породию КвоМинут/60
25 Ц_У
 
04.12.08
16:38
Если макет фиксированный тогда: шаблон [ВложенныйЗапрос.Час]:[ВложенныйЗапрос.Мин]
26 ksergey
 
04.12.08
16:40
(25) ...в макете можно просто указать  ФОРМАТ "ДТ"
27 ksergey
 
04.12.08
16:40
секунды клиенту сильно не мешают
28 ksergey
 
04.12.08
16:41
спасибо всем откликнувшися

как говрицца - в споре рождаеца ИСТИНА
29 Serg_1960
 
04.12.08
16:51
Угу. Истина "банальная": нет в SQL "от 1С" преобразование типов :(
30 Serg_1960
 
04.12.08
17:18
Интересно, что скажут коллеги, если увидят вот такое "преобразование" в строку времени из даты :))

   Запрос = Новый Запрос("ВЫБРАТЬ ПОДСТРОКА(""00010203040506070809101112131415161718192021222324"", ЧАС(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), МИНУТА, &КолМинут)) * 2 + 1, 2) + "":"" + ПОДСТРОКА(""00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960"", МИНУТА(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), МИНУТА, &КолМинут)) * 2 + 1, 2) КАК Время");
   Запрос.УстановитьПараметр("КолМинут", 320);
   Выборка = Запрос.Выполнить().Выбрать();
   Выборка.Следующий();
   Сообщить(Выборка.Время);
31 НЕА123
 
04.12.08
18:08
(30) красиво!
32 Serg_1960
 
04.12.08
18:11
(31) Спасибо. Да! Есть в этом алгоритме "своеобразная" красота :)