Имя: Пароль:
1C
1С v8
Получить время в часах минутах секундах из разности дат?
,
0 pvase
 
18.07.19
10:51
Здравствуйте. Суть задачи в 1С 8.3, получить в виде строки время в формате Часов, Минут, Секунд. Вот пример:

ВремяСек = '02.01.2019 09:03:47' - '01.01.2019 12:24:31'
ВремяФормат = ""+Цел(ВремяСек/3600)+" час. "
    +Цел((ВремяСек-(Цел(ВремяСек/3600)*3600))/60)+" мин. "
    +Число(ВремяСек-Цел(ВремяСек/60)*60)+" сек.";

Может в 1С есть встроенная функция, какая-то чтобы не писать эти математические операции?
1 Aleksey
 
18.07.19
10:57
Добавь 1 января 2019 года и типовой функцией получи нужные числа
2 vfire1000
 
18.07.19
11:01
ВремяСек = (ТекущаяДата() + 879445) - ТекущаяДата();

_Дата = Дата(1,1,1) + ВремяСек;

ВремяФормат = "" + Час(_Дата) + " час. " + Минута(_Дата) + " мин. " + Секунда(_Дата) + " сек."
3 artdev
 
18.07.19
11:03
(1) А если больше 24 часов?
4 artdev
 
18.07.19
11:04
(2) А 26 часов как отразить?
5 Aleksey
 
18.07.19
11:05
(4)
Функция РазностьВремени(Время1, Время2);
    
    Разность = Время1 - Время2;
    
    Если Разность > 0 Тогда
        Часов = Цел(Разность / 3600);
        Минут = Цел((Разность - Часов * 3600) / 60);
        
        Возврат Дата(1, 1, 1, Часов, Минут, 0);
        
    Иначе
        Возврат Дата(1,1,1,0,0,0);
    КонецЕсли;
    
КонецФункции


//Пример использования    
Опоздание= РазностьВремени(ВремяПриезда, ВремяПодачи);
6 Garykom
 
гуру
18.07.19
11:07
Нахрена так сложно? Разность дат = дата от начала времен же.
Просто Формат используй и получится разница в годах, месяцах, днях, часах, минутах, секундах.
Лишнее откинуть и все.
7 pvase
 
18.07.19
11:12
(3,4) Как раз надо больше. Это время потраченных работ, поэтому, если будет 49 часов 23 минуты, 12 секунд - это то что нужно.
8 hhhh
 
18.07.19
11:12
(6) ну если разность дат брать, то она выдаст 2019 - 1 = 2018? так? что сейчас 2018й год.
9 hhhh
 
18.07.19
11:13
(7) они круглосуточно работают? это нарушение трудового кодекса, должен быть 8-часовой рабочий день.
10 vfire1000
 
18.07.19
11:15
(7) никогда мне так не надо было

Сделайте так:
ВремяФормат = "" + ((День(_Дата)-1) * 24 + Час(_Дата)) + " час. " + Минута(_Дата) + " мин. " + Секунда(_Дата) + " сек.";
11 pvase
 
18.07.19
11:20
(8) Нет конечно, это учет потраченного времени для расчета стоимости выставления услуг и оплаты программистам. Осталось туда прикрутить еще график работ и работы не по графику. Пока еще думаю как это сделать, если будут варианты - буду рад за помощь.

Т.е. суть задачи. Программист берется за работу, фиксируется дата+Время начала работ. Потом он работает, отвлекается на другие задачи, это все фиксируется, а в конце, когда программист ставит отметку о выполнении задачи - фиксируется конечное время. По этому времени потом выставляется счет предприятию. Это у нас так пытаются обеспечить оплату услуг программистов в центральном офисе всех предприятий холдинга.
12 pvase
 
18.07.19
11:22
Реально, фактически для расчета надо вот такое значение: Окр(ВремяСек/3600,3)
Но для наглядности надо выводить в часах, минутах, секундах.
13 Lama12
 
18.07.19
11:29
(11) А то, что программист отвлекается, и чем больше он отвлекается тем больше нужно время на возврат к задачи, это учитывается?
14 Garykom
 
гуру
18.07.19
11:50
(8) Все правильно между 2019 и 1 годом аж 2018 лет прошло, не понял в чем проблема?
15 ink-nsk
 
18.07.19
12:20
(11) Т.е. если программист взялся за задачу компании А, но его в рабочее время отвлекли наглые сотрудники компании В. То компании В уйдет счет из расчета основного времени, а в копанию В с коэффициентом переработки?
А как отпуск и три дня больничного выставляются предприятиям холдинга?

Зы: так просто из любопытства.
16 ink-nsk
 
18.07.19
12:20
"а в копанию В с коэффициентом переработки"
опечатка
а в копанию А с коэффициентом переработки