Имя: Пароль:
1C
 
Как преобразовать два числа во время?
0 anivaler
 
09.09.09
16:20
Есть функция, которая считает разность Время1 и Время2. Выделяю из полученных секунд Часы и Минуты. Как преобразовать эти два числа во время???

Функция РазностьВремени (Время1, Время2) Экспорт
   РазностьВСекундах = Время1 - Время2;
   Часы = Цел(РазностьВСекундах/3600);
   Минуты = (РазностьВСекундах/60) - (Часы * 60);    
КонецФункции
1 Mort
 
09.09.09
16:21
Что это за такой тип "Время" ?
2 anivaler
 
09.09.09
16:25
Время1 и Время2 - это два значения типа Дата с составом даты: Время
3 Альберт_Уфа
 
09.09.09
16:27
(2) нет такого типа как Время. Есть тип Дата.
4 Mort
 
09.09.09
16:28
(2) Да и разница между ними, это время с Даты1 по Дата2 в секундах. Что ещё надо?
5 anivaler
 
09.09.09
16:30
Т.е. единственный выход это Дата(1,1,1, Часы, Минуты, 1)  Так?
6 Альберт_Уфа
 
09.09.09
16:32
(5) а если Дата1-Дата2 больше 24 часов? тогда что?
7 Mort
 
09.09.09
16:42
(5) Не понятно.
Тебе нужно получить дату равной (Время1 - Время2) секунд с рождества Христова?

Нафига, интересно..
8 anivaler
 
09.09.09
16:44
У меня есть справочник в котором два реквизита типа Дата с составом даты Время.
Это реквизиты Время1 и Время2. Так вот мне нужно по задаче получать разность между ними...Вот...
9 Альберт_Уфа
 
09.09.09
16:44
(0) добавь в своей функции строчку типа:
Сообщить("Разность дат = " + Часы + ":" + Минуты);
10 anivaler
 
09.09.09
16:46
(9) Нет. Так не пойдет, потому что эту разность мне потом ещё нужно использовать и использовать как Дата.
11 Альберт_Уфа
 
09.09.09
16:48
(10) каким образом ты собираешься использовать как дата?
12 anivaler
 
09.09.09
16:53
Ну я имею ввиду тип "Дата". Вот скажем у меня Время1 = 23:05, а Время2 = 19:45.
Разность это 3:20

И потом от этой разности нужно отнимать другое время... День, месяц и год меня не интересуют. Вот в чём моя задача... Как лучше быть?
13 73
 
09.09.09
16:54
Дата(1,1,1) + (Время1 - Время2)
?
14 anivaler
 
09.09.09
16:55
(13) Для чего добавлять Дата(1,1,1)
???
15 73
 
09.09.09
16:56
(14) Чтобы дату получить, а не число.
16 anivaler
 
09.09.09
16:58
А (5) не то же самое? ;-)
17 73
 
09.09.09
17:00
(16) Секунда там лишняя. И зачем еще что-то делить и умножать, чтобы найти часы и минуты?
18 73
 
09.09.09
17:02
(17)+ С секундами там вообще что-то не то.
19 Odin1C
 
09.09.09
17:07
(0) Решаешь плохую задачку. В 1с единица времени это секунды. Соответственно тебе оперировать нужно только ими. Их можно добавлять к дате и вычитать из даты и получишь дату. Не извращайся.
20 Mort
 
09.09.09
17:07
Разницу между датами храни числом секунд и будет тебе щастье. А при выводе преобразуй в строку уже как хочешь, по часам разбивай и т.п. Тип дата тебе здесь НЕ НУЖЕН.
21 anivaler
 
09.09.09
17:12
Понял. Только действительно, непонятно, что делать, если Дата1 < Дата2
???
22 anivaler
 
09.09.09
17:23
Помогите пожалуйста, ведь у меня и такая ситуация присутствует...
23 Ненавижу 1С
 
гуру
09.09.09
17:31
(21) и что тогда? будет отрицательное число
24 Альберт_Уфа
 
09.09.09
17:34
(21) прибавь к Дате1 60*60*24
25 Фокусник
 
09.09.09
17:41
(6) Ну и в чем проблема? Разница будет, например, 5 дней 10 часов 15 секунд  ;)
26 anivaler
 
09.09.09
17:46
Спасибо...Чёт я переработал сёдня... Пипец это же так просто всё... )
27 anivaler
 
09.09.09
17:46
Работает:

Функция РазностьВремени (Время1, Время2) Экспорт
   РазностьВСекундах = Время1 - Время2;
   Если РазностьВСекундах >= 0 Тогда
       Возврат Дата(1,1,1) + РазностьВСекундах;
   ИначеЕсли РазностьВСекундах < 0 Тогда
       Время3 = Время1 + 86400;
       РазностьВСекундах = Время3 - Время2;
       Возврат Дата(1,1,1) + РазностьВСекундах;                
   КонецЕсли;    
КонецФункции
28 anivaler
 
11.09.09
16:40
У меня опять вопрос. А как сделать сумму времени?
29 Ненавижу 1С
 
гуру
11.09.09
16:41
также как и разность
30 b4rs30
 
11.09.09
16:48
(29) ))
31 anivaler
 
11.09.09
16:55
Неа... Выскакивает ошибка:

{ОбщийМодуль.ПутевойЛист(437)}: Преобразование значения к типу Число не может быть выполнено
   СуммаВСекундах = Время1 + Время2;
32 anivaler
 
11.09.09
16:57
А вот моя функция:


Функция СуммаВремени (Время1, Время2) Экспорт
   СуммаВСекундах = Время1 + Время2;
   Возврат Дата(1,1,1) + СуммаВСекундах;
КонецФункции
33 73
 
11.09.09
17:03
11:00 + 15:00     -- даты.
-что хочешь получить?

Если правильно понял:

ДобавитьСекунд = Время2 - Дата(1,1,1);
Возврат Время1 + ДобавитьСекунд;

ЗЫ. Непонятно зачем это нужно.
34 anivaler
 
11.09.09
17:28
Объясню.

Время3 = Время1 - Время2;
Время4 = Время5 - Время6;

Время3 получилось к примеру 3 часа, а Время4 получилось 4 часа. Мне нужно получить сумму Время3 и ВРемя4, т.е. сумма должна быть 7 часов. Вот.
35 hhhh
 
11.09.09
17:29
(33) ну, допустим, задача. Из пункта А в пункт Б пешеход шел 11 часов, а обратно 15 часов. Спрашивается, сколько времени он потратил всего. Ответ

11:00 + 15:00 = 26:00
36 anivaler
 
11.09.09
17:29
(33)

11:00 + 15:00

Хочу получить 26 часов, но таких больших сумм у меня не будет. Максимальная сумма часов у меня будет где-то 10.
37 anivaler
 
11.09.09
17:31
Хорошо, тогда где в функции ошибка?
38 73
 
11.09.09
17:32
(34)(35)(36) Согласитесь 15 <> 15:00. То число, а то дата, точнее датавремя.
(37) Даты не складываются - вот ошибка.
Проверь (33).
39 73
 
11.09.09
17:34
(38)+ На всякий, озвучь типы Время1 и Время2.
40 anivaler
 
11.09.09
17:35
(39) Дата и то и другое
41 anivaler
 
11.09.09
17:36
to 73:

Получилось: (33). Спасибо.
42 hhhh
 
11.09.09
17:43
(38) он работает с числами, но представленными в формате:   часы:минуты
43 73
 
11.09.09
17:44
(42) Судя по (31) и (40) - с датами.