Имя: Пароль:
1C
1С v8
Преобразовать секунды в часы с минутами
,
0 IT_PROGRAMMIST
 
23.01.13
12:33
Добрый день. пл.8.2.16.368.
Такая задача: Есть документ, в котором пользователь вводит время работы станка(т.е Время начала и время окончания(с типом Дата, состав даты время)). Документ ложит это время в секундах в добавленный под документ регистр. Расчет времени в секундах выполняю так:
   
&НаКлиенте
Функция ПолучитьРазницуВоВремениВСекундах(ВремяНачалаРаботы,ВремяОкончанияРаботы)
   
   РазностьВСекундах = ВремяОкончанияРаботы - ВремяНачалаРаботы;
   Если РазностьВСекундах >= 0 Тогда
       Возврат РазностьВСекундах;
   ИначеЕсли РазностьВСекундах < 0 Тогда
       Время3 = ВремяОкончанияРаботы + 86400;
       пРазностьВСекундах = Время3 - ВремяНачалаРаботы;
       Возврат пРазностьВСекундах;
   КонецЕсли;  
   
КонецФункции

Делаю отчет, который будет показывать картину сколько по времени работал(или простаивал) станок. В отчете преобразовываю секунды во время с часами минутами. Преобразовываю так:

Выражение представления для вычисляемого поля в отчете:
Функция ПредставлениеВремени(Время) Экспорт

 Предс = Дата(1,1,1)+Время;
 Возврат Формат(Предс,"ДФ=HH:mm");

КонецФункции

Но есть проблема, если общее время превышает в секундах 24 часа, то система выводить время заново:
т.е     85 800 сек = 23 час 50 минут
       36 000 сек = 10 час 00 минут
Итого   121 800 сек = 09 час 50 минут, а должно 33 часа 50 минут.

Подскажите как выкрутиться из сутуации??? Понимаю, что дело в  Дата(1,1,1).не знаю как сделать....
1 GLazNik
 
23.01.13
12:35
И?
2 IT_PROGRAMMIST
 
23.01.13
12:35
(1) ?
3 GLazNik
 
23.01.13
12:35
Проблема не в Дата(1,1,1), а в Формат(Предс,"ДФ=HH:mm")
4 Defender aka LINN
 
23.01.13
12:38
(0) Я так понимаю, батюшка предаст анафеме, если при времени больше 86400, автор будет использовать другую форматную строку... Да, беда прямо...
5 IT_PROGRAMMIST
 
23.01.13
12:39
(3) не помогло.
(4) да в этом проблема
6 IT_PROGRAMMIST
 
23.01.13
12:56
блин, как же выкрутиться?
7 IT_PROGRAMMIST
 
23.01.13
13:00
думал уже может хранить информацию не в секундах,а в числах. Но тогда будет ситуация 1,30(предположим, что это 1 час 30)+2,40( 2 часа 40 минут) = 3,70(3 часа 70 минут)(((((
8 cw014
 
23.01.13
13:02
Отбрось предрассудки в виде формата, считай математикой, будь мужиком, блеать...
9 IT_PROGRAMMIST
 
23.01.13
13:03
(8) подскажи как?
10 DrShad
 
23.01.13
13:03
(7) секунды раздели на 60 и получишь минуты
минуты раздели на 60 и получишь часы
часы на 24 и получишь сутки
сутки на 7 и получишь недели
....
11 DrShad
 
23.01.13
13:04
+(10) учу математике, дорого!
12 cw014
 
23.01.13
13:07
(10),(11) +100500
(9) Учи матчасть!!!
13 DrShad
 
23.01.13
13:08
(12) у меня сын во втором классе уже знает, правда без калькулятора еще не умеет делить
14 IT_PROGRAMMIST
 
23.01.13
13:09
сейчас попробую.
Т.е 121 800 сек это
121 800/60 = 2030 минут
2030/60 = 33,83

а как получить 33 часа 50 минут
15 Мыш
 
23.01.13
13:09
Часы = Цел(ВсегоСекунды/3600);
Минуты = Цел((ВсегоСекунды-Часы*3600)/60);
Секунды = ВсегоСекунды-Часы*3600-Минуты*60;
16 Nzn
 
23.01.13
13:10
33,83-Цел(33,83)/100*60
17 cw014
 
23.01.13
13:11
Друзья, а долго вы ит_программиста будете вычислению времени обучать? Если да, то будут ли ему домашние задания? :)
18 DrShad
 
23.01.13
13:12
мдя... как все запущенно...
19 Мыш
 
23.01.13
13:13
Секунды = ВсегоСекунды%3600;
Минуты = ((ВсегоСекунды-Секунды)/60)%60;
Часы = (ВсегоСекунды-Секунды-Минуты*60)/3600;
20 drcrasher
 
23.01.13
13:14
(17) поржал от души ))))
21 cw014
 
23.01.13
13:15
(20) По моему пора бежать за попкорном
22 Мыш
 
23.01.13
13:15
(0) С честью неси гордое звание программиста! Не позорь его! Прочти уже что-нибудь по алгоритмам! )
23 IT_PROGRAMMIST
 
23.01.13
13:15
(15),(10)спасибо за помощь. Если задал глупый вопрос, то сор. Я думаю каждый из здесь присутствующих программирует по ночам, а днем.......
24 Nzn
 
23.01.13
13:15
(17) Ну ... он же программист, а не математик)))
25 DrShad
 
23.01.13
13:16
(23) плохо ты о нас думаешь
по ночам мы спим, а днем на мисте сидим
26 1Сергей
 
23.01.13
13:16
Минут = ВсегоСекунд % 60;
Часов = Цел(ВсегоСекунд / 60);
27 DrShad
 
23.01.13
13:17
(26) облажался
28 Мыш
 
23.01.13
13:17
(23) Что скрывается за столь многозначительным многоточием? Открой страшную Правду! )
29 IT_PROGRAMMIST
 
23.01.13
13:19
(28) спать хочется)))
30 DrShad
 
23.01.13
13:19
(29) спать нужно ночью
31 cw014
 
23.01.13
13:19
(28) Есть вампиры, они спят днем и пьют кровь по ночам. А есть программиры - они спят днем и программируют 1С по ночам
32 1Сергей
 
23.01.13
13:20
(27) чего это?
33 1Сергей
 
23.01.13
13:20
(32)+ а, да. он секунды и минуты получит
34 AndyD
 
23.01.13
13:21
охренеть программисты пошли. уж лучше бы поваром пошел, или водителем каким-нибудь
35 AndyD
 
23.01.13
13:22
зато интересы: 1с,ajax,php,C++,delphi
36 IT_PROGRAMMIST
 
23.01.13
13:23
(35) поэтому и сплю днем, потому что такие интерсы)
37 Мыш
 
23.01.13
13:23
(34) Нормальный программист. Хотя бы не поленился вопрос внятно сформулировать )
38 AndyD
 
23.01.13
13:29
(37) у нормального программиста в голову не придет вопросы задавать как в (14). программисту даже думать не надо, чтобы задачу такую решить, ответ должен прийти в голову так же как 2+2=4
39 IT_PROGRAMMIST
 
23.01.13
13:30
(38)вот он и пришел)
40 DrShad
 
23.01.13
13:31
(38) открою тебе великую тайну - 2+2 не всегда равно 4, иногда оно равно 3.9999999
41 Мыш
 
23.01.13
13:33
(38) Да вы, батенька, максималист! )
42 Vladal
 
23.01.13
14:39
ВремяВыполнения = ТекущаяДата() - НачалоПроцесса;
Часов = Цел(ВремяВыполнения/3600);
Минут = Цел((ВремяВыполнения-Часов*3600)/60);
Секунд = ВремяВыполнения - Часов*3600 - Минут*60;
СтрокаВремениВыполнения = "" + Часов + ":" + ?(Минут = 0, "00", Формат(Минут, "ЧЦ=2; ЧДЦ=0; ЧВН=")) + ":" + ?(Секунд = 0, "00", Формат(Секунд, "ЧЦ=2; ЧВН="));
Независимо от того, куда вы едете — это в гору и против ветра!