Имя: Пароль:
1C
 
как находить разность времени ?
0 Олеся999
 
13.05.15
13:36
Подскажите пожалуйста как находить разность времени ?
допустим автомобиль выехал 04:20:00 и приехал 06:30:00
должно получиться что он был в движении 02:10:00
как можно вычислить?
1 1Сергей
 
13.05.15
13:36
отнять
2 ДенисЧ
 
13.05.15
13:36
06:30:00 - 04:20:00
3 GROOVY
 
13.05.15
13:38
Еще запросом можно: РАЗНОСТЬДАТ
4 D_E_S_131
 
13.05.15
13:40
После (2) надо только из секунд в часы и минуты перевести, но это уже задача для начальной школы (если не ошибаюсь).
5 kortun
 
13.05.15
13:41
ВремяВПути = Формат(Дата(1, 1, 1) + (Приехал - Выехал), "ДФ=ЧЧ:мм:сс");

лови, но это если выехал и приехал в один день
6 Torquader
 
13.05.15
13:43
(5) В чём проблема в вычитании дат за разные дни, особенно, учитывая, что даты в 1С хранятся в секундах.
7 kortun
 
13.05.15
13:45
(6) в вычитании проблем нету, в отображении по моему примеру будет проблема, там показывает только время до 24 часов
8 kortun
 
13.05.15
13:46
+(7) просто надо будет формат отображения переделывать
9 Олеся999
 
13.05.15
15:11
(5) Да там в 1 день )
{Форма.Форма.Форма(173)}: Преобразование значения к типу Число не может быть выполнено
        Нс2.ПробегЗаДень                     = Формат(Дата(1, 1, 1) + (AG.TripEndRealTime - AG.TripStartRealTime), "ДФ=ЧЧ:мм:сс");
10 Олеся999
 
13.05.15
15:13
хотя ПробегЗаДень   тип число
11 ДенисЧ
 
13.05.15
15:14
(10) А зачем ты числу строку присваиваешь?
12 kortun
 
13.05.15
15:24
(9) формат возвращает строку
Если Нс2.ПробегЗаДень у тебя число, то тогда делай проще
Нс2.ПробегЗаДень = AG.TripEndRealTime - AG.TripStartRealTime;

Нс2.ПробегЗаДень у тебя будет хранить время в секундах
13 D_E_S_131
 
13.05.15
15:36
(10) "должно получиться что он был в движении 02:10:00" — таких чисел не бывает.
14 spectre1978
 
13.05.15
16:25
так в чем проблема время в секундах пересчитать в сутки, часы и минуты?
15 Cap_1977
 
13.05.15
16:26
Видимо как то связано с религией
16 spectre1978
 
13.05.15
16:28
делим на 24*60*60*60 - получаем сутки. Остаток от деления делим на 60*60*60 - получаем часы. Остаток от этого деления делим на 60*60 - получаем минуты. То что осталось - это будут секунды, если они нужны. Как-то так...
17 spectre1978
 
13.05.15
16:28
это навскидку, возможно где-то неточно написал
18 spectre1978
 
13.05.15
16:31
наверно, лишнее умножение на 60. Более правильно, видимо, вот так:
24*60*60
60*60
60
19 qeos
 
13.05.15
16:31
60*90*60
20 Бледно Золотистый
 
13.05.15
16:32
(16) Это через ж... Секунды прибавляем к пустой дате, далее уже из нее получаем что нам нужно, как выше писали.
21 qeos
 
13.05.15
16:32
оу.. наоборотже.. 90*60*90
22 spectre1978
 
13.05.15
16:35
(20) резонно, так еще проще
23 Олеся999
 
14.05.15
07:04
Делала так:                  
Нс2.ПробегЗаДень         = AG.TripEndRealTime - AG.TripStartRealTime;                                          //Преобразование значения к типу Число не может быть выполнено
Нс2.ПробегЗаДень     = Формат(Дата(1, 1, 1) + (AG.TripEndRealTime - AG.TripStartRealTime), "ДФ=ЧЧ:мм:сс"); //Преобразование значения к типу Число не может быть выполнено
Нс2.ВремяВПутиЗаДень     = (НачалоДня(AG.TripEndRealTime)-НачалоДня(AG.TripStartRealTime))   /(60*60*24);      //Работает только эта строка но она показывает в сутках

как можно еще попробовать?
24 ЧеловекДуши
 
14.05.15
07:18
(23) Начни пользоваться отладчиком.
Читай весь текст в сообщении об ошибке.
...голова не только что бы есть... :)
25 1Сергей
 
14.05.15
07:19
(23) откуда взялось AG.TripEndRealTime ? Вы уверены, что это дата?
26 ЧеловекДуши
 
14.05.15
07:20
+(23) Какого типа значения

TripEndRealTime
TripStartRealTime

Зачем ты все в формат суешь???!!!
Тебе по русски написали, что Формат возвращает строку. (если тебе нежна дата)


Используй функцию:   Дата(Год,месяц,день,Час,минута,сек)
27 kosts
 
14.05.15
07:21
(23) > AG.TripEndRealTime - AG.TripStartRealTime

что из этого явно не является типом датой.
Порылся в инете и вижу что TripEndRealTime и TripStartRealTime являются типами BSTR.

// TripEndRealTime | Время окончания фактическое | BSTR | только чтение
28 ЧеловекДуши
 
14.05.15
07:22
(23) >>>ПробегЗаДень    

Строка вида "01.01.0001 10:43:33"  никогда не сможет быть преобразовано в число!!! :)
29 Фокусник
 
14.05.15
07:29
(23) Покажи что находится в исходных данных:
Сообщить(AG.TripEndRealTime);
Сообщить(AG.TripStartRealTime);
30 Олеся999
 
14.05.15
07:33
(23)
AG.TripEndRealTime  это время начала фактическое
AG.TripStartRealTime  это время окончания фактическое
31 Олеся999
 
14.05.15
07:35
(29) 03.07.2009 19:03:45
03.07.2009 18:49:06
05.07.2009 13:27:13
05.07.2009 13:26:18
06.07.2009 23:59:29
06.07.2009 02:23:18
07.07.2009 22:28:53
07.07.2009 00:01:31
08.07.2009 23:59:57
08.07.2009 00:25:22
09.07.2009 19:50:34
09.07.2009 00:00:29
10.07.2009 15:29:39
10.07.2009 15:27:28
12.07.2009 11:56:18
12.07.2009 11:51:53
13.07.2009 23:59:00
13.07.2009 05:49:53
14.07.2009 23:59:50
14.07.2009 00:01:02
15.07.2009 23:59:32
15.07.2009 00:01:52
16.07.2009 23:58:19
16.07.2009 00:01:34
17.07.2009 22:29:04
17.07.2009 00:00:21
18.07.2009 23:59:53
18.07.2009 06:45:34
19.07.2009 23:59:04
19.07.2009 00:00:01
20.07.2009 23:59:12
20.07.2009 00:01:06
21.07.2009 23:20:11
21.07.2009 00:01:14
22.07.2009 23:59:56
22.07.2009 05:49:56
23.07.2009 18:35:22
23.07.2009 00:00:02
24.07.2009 23:28:28
24.07.2009 06:09:28
25.07.2009 21:12:33
25.07.2009 05:38:58
26.07.2009 21:50:48
26.07.2009 06:52:58
27.07.2009 21:50:00
27.07.2009 06:12:22
28.07.2009 16:39:50
28.07.2009 07:02:22
29.07.2009 23:59:42
29.07.2009 17:10:14
30.07.2009 18:24:46
30.07.2009 00:00:16
31.07.2009 23:59:22
31.07.2009 05:47:28
01.08.2009 09:15:39
01.08.2009 00:00:02
02.08.2009 22:20:32
02.08.2009 01:41:29
03.08.2009 21:25:22
03.08.2009 05:49:04
04.08.2009 09:20:58
04.08.2009 09:18:34
32 Фокусник
 
14.05.15
07:36
(30) Если в Нс2.ПробегЗаДень - находится строка:
То должно сработать:


Нс2.ПробегЗаДень = Формат(Дата(1,1,1) + (Дата(AG.TripEndRealTime) - Дата(AG.TripStartRealTime)), "ДФ=ЧЧ:мм:сс");


Если в Нс2.ПробегЗаДень находится "дата", попробуй так:

Нс2.ПробегЗаДень = Дата(1,1,1) + (Дата(AG.TripEndRealTime) - Дата(AG.TripStartRealTime));
33 Фокусник
 
14.05.15
07:46
(31) Еще вариант, если в AG.TripEndRealTime тип дата находится:

1.Если в Нс2.ПробегЗаДень - находится строка:

Нс2.ПробегЗаДень = Формат(Дата(1,1,1) + (AG.TripEndRealTime - AG.TripStartRealTime), "ДФ=ЧЧ:мм:сс");


2.Если в Нс2.ПробегЗаДень находится "дата":

Нс2.ПробегЗаДень = Дата(1,1,1) + (AG.TripEndRealTime - AG.TripStartRealTime);
34 kosts
 
14.05.15
07:49
(30)
> AG.TripEndRealTime  это время начала фактическое
> AG.TripStartRealTime  это время окончания фактическое

Тыж программист, и должна отличать дату от строки содержащей дату.
35 Олеся999
 
14.05.15
07:53
(33) Спасибо 2-ая рабочая :)
36 1Сергей
 
14.05.15
08:03
(35) значит в (10) ложь?
37 Фокусник
 
14.05.15
08:05
(36) методом "научного тыка" выяснили, что в AG.TripEndRealTime, AG.TripStartRealTime, а также в Нс2.ПробегЗаДень находятся "даты" :)