Имя: Пароль:
1C
1С v8
Подсчет количества часов
0 LivingStar
 
08.11.13
11:57
Если у вас есть переменная, содержащая количество часов, и переменная содержащая количество минут. Как можно их правильно суммировать? Часы понятно как, просто суммирую их, а как быть с минутами? Например 24, 49, 37, 38, 5 минут. Как их суммировать переведя в часы что бы после суммировать с часами?
1 Wobland
 
08.11.13
11:58
оператор сложения: +
2 almar
 
08.11.13
11:58
(0) в одном часе примерно 60 минут
3 Wobland
 
08.11.13
11:58
деления: /
4 1dvd
 
08.11.13
11:59
Остаток от деления: %
5 1dvd
 
08.11.13
11:59
(2) а в високосном?
6 Wobland
 
08.11.13
11:59
(1) (3) (4) только не влзетит
7 Wobland
 
08.11.13
12:00
(5) так же примерно
8 1dvd
 
08.11.13
12:00
(6) Поркуа?
9 Artful Den
 
08.11.13
12:01
(6) Ты не веришь в ТС?
10 Sabbath
 
08.11.13
12:01
(0) Переводи наоборот часы в минуты, суммируй, а потом получай часы
11 Wobland
 
08.11.13
12:01
(8) автору код нужен, а не эти туманные намёки
12 Tatitutu
 
08.11.13
12:01
(0) смотря какую конечную цель преследуюешь
(ты не поверишь еще есть сутки, месяц, год...)
13 LivingStar
 
08.11.13
12:02
(1) сложением можно сложить, как потом разложить на часы и минуты в сумме учитывая что в часе 60 минут

(3)(4) что даст деление и остаток от деления?
14 scanduta
 
08.11.13
12:02
Зачем вся эта муть. Делай одну переменную с секундами. А потом просто дорабатывай вывод на форму
15 BuHu
 
08.11.13
12:02
в начальных классах и то сложней задачи
16 LivingStar
 
08.11.13
12:02
(12) есть часы есть минуты отделенные от часов, хочу это все сложить и получить количество часов в итоге
17 Wobland
 
08.11.13
12:03
v8: Подсчет количества часов между двумя значениями времени - 50 постов. посмотрим, что здесь выйдет

(13) а даст как раз "разложить на часы и минуты"
18 BuHu
 
08.11.13
12:03
(16) в чем сложность?
19 Галахад
 
гуру
08.11.13
12:03
(13) Начать надо с простого. Сколько часов в 61 минуте?
20 Ненавижу 1С
 
гуру
08.11.13
12:05
МинутВсего = 60*Часов+Минут;
ЦелыхЧасов = Цел(МинутВсего/60);
ОстатокМинут = МинутВсего-ЦелыхЧасов*60;
21 Wobland
 
08.11.13
12:05
(19) не так. Маша отработала 8 часов, Петя отработал 480 минут. сколько часов отработали Маша и Петя вместе?
22 dmpl
 
08.11.13
12:05
(0) Зачем 2 переменные, когда есть тип дата, к тому же поддерживающий сложение?
23 Wobland
 
08.11.13
12:05
(22) сегодня плюс вчера = ?
24 Alex11
 
08.11.13
12:07
по моему вот так проще всего:
Итог = (Часы * 60) + Минут;
25 Галахад
 
гуру
08.11.13
12:11
(21) А они поженились?
26 hhhh
 
08.11.13
12:13
(21) не так там было. Из пункта А в пункт В вылетели два самолета. Один самолет был в пути 100 минут, а второй 1 час и 40 минут. Какой самолет летел быстрее?
27 Wobland
 
08.11.13
12:15
(25) а этот вопрос изучают в старших классах

что больше: е в степени пи или пи в степени е?
28 1dvd
 
08.11.13
12:16
(21) Вместе Маша и Петя работать не будут
29 dmpl
 
08.11.13
12:17
(23) = далекое-далекое будущее :)

(26) Задача некорректна - не указано что самолеты прибыли в пункт B и летели по одинаковой траектории. Может один разбился или налево сходил ;)
30 Wobland
 
08.11.13
12:17
(28) это от их профессии зависит
31 Wobland
 
08.11.13
12:17
(29) тебе так интересно, чем они в пути занимались?
32 LivingStar
 
08.11.13
12:18
(22) потому что есть таблица в которой есть часы и минуты, они уже вычесленные для каждой строки, думаю как получить их в сумме вместе
33 dmpl
 
08.11.13
12:18
(31) Дык скорость-то зависит от этого ;)
34 Wobland
 
08.11.13
12:18
(32) всё ещё думаешь? мы болеем за тебя
35 Wobland
 
08.11.13
12:19
(33) начхать на скорость
36 dmpl
 
08.11.13
12:20
(32) Ну и замечательно - переводи в секунды и прибавляй к пустой дате ;)

(35) Может тогда и на задачку начхать, раз уж на ответ мы уже прибор положили?
37 hhhh
 
08.11.13
12:21
(30) это что за профессия такая?
38 Wobland
 
08.11.13
12:21
(36) нене. hhhh, что такое "летел быстрее"?
39 Wobland
 
08.11.13
12:22
(37) бухгалтер и консультант 1С. а ты что подумал?
40 dmpl
 
08.11.13
12:22
(38) Летел быстрее - это про скорость самолета. Долетел быстрее - это про время в пути ;)
41 hhhh
 
08.11.13
12:23
(36) интересует ведь средняя скорость. Понятно, что если самолет сходил налево, скорость на маршруте у него уменьшилась.
42 catena
 
08.11.13
12:24
(21)Неее.
Ученый заметил, что если он проводит некоторый опыт в пиджаке, то тратит 1 час 20 минут, а без пиджака 80 минут. Как так?
43 1dvd
 
08.11.13
12:24
Функция СложитьВремя(Часы1 = 0, Минуты1 = 0, Секунды1 = 0, Часы2 = 0, Минуты2 = 0, Секунды2 = 0, РезультатЧасы = 0, РезультатМинуты = 0, РезультатСекунды = 0) Экспорт
    
    ВсегоСекунд1 = (Часы1 * 60 + Минуты1) * 60 + Секунды1;
    ВсегоСекунд2 = (Часы2 * 60 + Минуты2) * 60 + Секунды2;
    РезультатВсегоСекунд = ВсегоСекунд1 + ВсегоСекунд2;
    
    РезультатЧасы = Цел(РезультатВсегоСекунд / 3600);
    РезультатМинуты = Цел(РезультатВсегоСекунд % 3600 / 60);
    РезультатСекунды = РезультатВсегоСекунд % 60;
    
    Возврат РезультатВсегоСекунд;
    
КонецФункции
44 hhhh
 
08.11.13
12:24
(40) то есть считаем, что скорость это путь разделить на время
45 dmpl
 
08.11.13
12:25
(41) Средняя скорость полета у того, кто сходил налево выше будет ;)
46 Wobland
 
08.11.13
12:28
(43) >Возврат РезультатВсегоСекунд
ну и зачем ты фигню написал, когда автор просил в часах?
47 1dvd
 
08.11.13
12:29
(46) Часы оно тоже развращает. Только в переменную
48 Ненавижу 1С
 
гуру
08.11.13
12:29
(46) там всё есть в out-параметрах
49 Wobland
 
08.11.13
12:30
(47) (48) от оно чо.. ну что ж, не дотянули до (50)
50 hhhh
 
08.11.13
12:34
(45) ну значит второй сломался. После того как отремонтировали, на новых запчастях, скорость тоже повыше.
51 Sabbath
 
08.11.13
12:36
(16) Я тебе уже написал в (10) переведи часы в минуты, сложи все и переводи обратно в часы (и минуты, если надо)
52 dmpl
 
08.11.13
12:38
(47) Структуру надо было возращать.
53 LivingStar
 
08.11.13
12:38
(43) А почему возвращается РезультатВсегоСекунд ?
54 Галахад
 
гуру
08.11.13
12:38
(43) Слишком сложная функция. Теперь ее еще нужно освоить. :-)
55 LivingStar
 
08.11.13
12:38
(51) так понимать бы формулу
56 Wobland
 
08.11.13
12:39
(53) это техническое любопытство или ты негодуешь?
57 dmpl
 
08.11.13
12:39
(50) Угу, сломался и вырабатывал топливо, после чего сел в пункте A. Средняя скорость у него 0 ;)
58 Ненавижу 1С
 
гуру
08.11.13
12:40
(55) тебе бы арифметику и простейшие алгоритмы сначала научиться понимать

остаток от деления, сортировка пузырьком
59 LivingStar
 
08.11.13
12:41
(56) это вопрос, не догнал пока что мне нелять конкретно, я на другой терминал постоянно митаюсь ~( проведение исправляю по партиям ~~~(
60 hhhh
 
08.11.13
12:41
(43) автор ведь хочет наоборот, перевести в часы всё

Функция СложитьВремя(Часы1 = 0, Минуты1 = 0, Часы2 = 0, Минуты2 = 0) Экспорт
    
    ВсегоЧасов1 = Часы1 + Минуты1 / 60;
    ВсегоЧасов2 = Часы2  + Минуты2 / 60;
    РезультатВсегоЧасов = ВсегоЧасов1 + ВсегоЧасов2;
    
    
    Возврат РезультатВсегоЧасов;
    
КонецФункции
61 LivingStar
 
08.11.13
12:41
спасибо этой ветке!!! уже вижу что смогу с её помощьяю и часы эти решить!!!
62 hhhh
 
08.11.13
12:42
(59) ты подключайся к другому терминалу в режиме удаленного рабочего стола, чтобы не бегать.
63 Ненавижу 1С
 
гуру
08.11.13
12:43
(62) он еще не освоил RDP
64 LivingStar
 
08.11.13
12:53
(62) так я так и делаю, верчу окна убунты постоянно, на виртуал бокс нет даже времени зайти
65 Ненавижу 1С
 
гуру
08.11.13
12:54
(64) ты типа мегакулхацкер? но ноль в программировании?
66 LivingStar
 
08.11.13
12:58
Подскачите пожалуйста КолЧасов, КолМинут, КолСекунд - это значения полученного в итоге пересчета по формуле значения?

ЧЧ:ММ:СС ?

Или это результат переведенный в часы, минуты или секунды?


Разность = Макс(Дата2, Дата1)
- Мин(Дата2, Дата1);

КолЧасов  = Цел(Разность / 3600);

КолМинут  = Цел((Разность % 3600) / 60);

КолСекунд = Разность % 60;
67 LivingStar
 
08.11.13
12:58
(65) утомился....
68 LivingStar
 
08.11.13
12:59
(65) часть из того что делаю не идет или идет но медленно с торможением.... отдых нужен здоровый
69 el7cartel
 
08.11.13
13:00
(67) отдохни...
70 Starhan
 
08.11.13
13:02
(58) в его случае, сначала надо научится лепить отмазы.
71 Wobland
 
08.11.13
13:04
кстати, да. человек учится врать раньше, чем читать и считать
72 Starhan
 
08.11.13
13:04
(0) хотя, даже я не могу придумать нормальный отмаз, что бы так объяснить, что я не понимаю что нужно сделать в (0),что бы никто не догадался что я тупой
73 Starhan
 
08.11.13
13:04
(72) к (70) :)
74 LivingStar
 
08.11.13
13:06
Часы допустим просчитаю целые, есть минуты!!! Что делать с ними пока не решил. Понятно что можно пересчитывать как угодно!!!
75 el7cartel
 
08.11.13
13:07
(70) в его случае вряд ли что поможет...
76 hhhh
 
08.11.13
13:07
(72) а зачем объяснять? Надо молчать. Молча записал пожелание юзара в блокнотик, сказал, подумаю, на днях отвечу.
77 Starhan
 
08.11.13
13:10
(0)>>Например 24, 49, 37, 38, 5 минут. Как их суммировать переведя в часы что бы после суммировать с часами?

Полученную сумму минут разделить на 60, получим значение в часах.


(74) порвало.

п.с. еще раз спрашиваю как тут подписываться на темы ТС?
78 Ненавижу 1С
 
гуру
08.11.13
13:11
(77) хз, но есть это http://www.forum.mista.ru/index.php?user_id=6293
79 Wobland
 
08.11.13
13:13
(77) Орефков вот узнаёт, когда его поминают всуе через какую-то гугломагию..
80 el7cartel
 
08.11.13
13:13
(78) интересно...за сегодняшний день это какая по счету тема у ТС?
81 Wobland
 
08.11.13
13:15
не оскудеет талантами земля сибирская
82 Никола_
Питерский
 
08.11.13
13:20
Блин это супер ТС ))))

В одной биржевой конторе давали задание типа на логику:
Сколько раз, стрелки часов(часовая и минутная) будут находиться под углом 90 градусов за 24 часа ?

Представляю ТС-а решающего такую задачу, хотя я сам не осилил с первого раза ))))
83 Ненавижу 1С
 
гуру
08.11.13
13:22
(82) часы идут?
84 Wobland
 
08.11.13
13:24
усложним вопрос. сколько существует на циферблате таких положений стрелок в состоянии1?
определим состояние1: если поменять стрелки местами, то часы всё равно будут показывать корректное время
85 Starhan
 
08.11.13
13:24
(82) 48 раз, по два раза за каждый час
86 1dvd
 
08.11.13
13:24
(83) сферические часы в вакууме
87 Ненавижу 1С
 
гуру
08.11.13
13:25
(85) а вот и нет, 44
(84) корректное, но не тоже самое?
88 orefkov
 
08.11.13
13:25
(79)
Это не гугломагия, это магический скрипт на моем сервере...
89 Никола_
Питерский
 
08.11.13
13:25
(85) чуток мимо ))) я то же так ответил с дуру
(83) Ну типа да )))
90 Wobland
 
08.11.13
13:26
(87) равенство времён не учитывать
91 Starhan
 
08.11.13
13:26
(87) что я упустил? )
92 hhhh
 
08.11.13
13:28
(68) не, я ведь вам говорил уже, вам реально надо взять в помощь какого-нибудь падавана. Вы будете носиться между терминалами, а он будет потихоньку эти задачки про часы и минуты прорешивать.
93 Ненавижу 1С
 
гуру
08.11.13
13:28
(90) не понял фразы, а вообще таких положений 11 (с учетом "полдня")
94 Ненавижу 1С
 
гуру
08.11.13
13:29
(91) минутная за сутки обгоняет часовую 22 раза, каждый раз до и после обгона образуются прямые углы, итого 44
95 Никола_
Питерский
 
08.11.13
13:30
(91) Да потому что они два раза за сутки встретятся на 12 часах.
96 1dvd
 
08.11.13
13:31
(94) а не 23?
97 1dvd
 
08.11.13
13:32
а... стоп. часы же 12 часов
98 el7cartel
 
08.11.13
13:32
(95) начало и конец
99 Серго62
 
08.11.13
13:32
(0) Для чего это вообще нужно-то ?
100 Ненавижу 1С
 
гуру
08.11.13
13:33
(96) нет, ибо можно разбить первую часть суток с 0 до 12 и вторую с 12 до 24, ход часов между ними не отличается
101 Серго62
 
08.11.13
13:33
(97) Бывают и 24 часа
102 Ненавижу 1С
 
гуру
08.11.13
13:34
(101) бывают, но наверное подразумевается "классика"
103 1dvd
 
08.11.13
13:34
(101) звращенцев в расчет не берем
104 Wobland
 
08.11.13
13:34
(93) перевожу фразу: "да пофих, то же самое или нет". с ответом 11 не согласен
105 dmpl
 
08.11.13
13:35
(97) Вообще, часы разные бывают. Я видел не с круглым циферблатом, а с сектором где-то 120 градусов.
106 dmpl
 
08.11.13
13:36
(102) А часы кварцевые или механические?
107 dmpl
 
08.11.13
13:37
(106) + если кварцевые - то у них шаг хода минутной стрелки 20, 30 или 60 секунд?
108 1dvd
 
08.11.13
13:37
(105) а я видел часы как бы жидкие, стекающие со стола
109 Wobland
 
08.11.13
13:38
(108) стекающие с как бы стола ;)
110 1dvd
 
08.11.13
13:39
(109) Ага. Сальвадор Дали аутор
111 Ненавижу 1С
 
гуру
08.11.13
13:40
(104) чёй-то?
112 Wobland
 
08.11.13
13:43
(111) насчитал больше. открыл классический циферблат и пересчитал по пальцам ;)
113 Ненавижу 1С
 
гуру
08.11.13
13:52
(112) походу я не ту задачу решал ))
114 Котокот
 
08.11.13
13:56
(0) Считать все в минутах, а при выводе в отчеты и формы переводить в часы и минуты
115 Ненавижу 1С
 
гуру
08.11.13
13:57
(112) ответ 143
116 alexiv79
 
08.11.13
13:58
(0) Чета мне кажется что уже стебешься. В любом слуае сначала переводишь в наименьшее - в твоем случае в минуты. Допустим 2 час 10 минут и 4 часа 30 минут. Их нужно сложить.
первое 130 минут, второе 270 минут - получаем 400 минут Получаем Цел(400/60) = 6 часов, потом 400 - Цел(400/60) = 40 минут. Итого 6 часов 40 минут
117 alexiv79
 
08.11.13
14:00
+(116)  Вот что тут непонятного? Когда разницу между датами ищем там все дата 2 - дата 1 = разница в секундах. И потом по похожей схеме. Цел(Разница/3600) = КолЧасов,Цел(Разница - Цел(Разница/3600))/60 - количество минут и секунды находим аналогично
118 Wobland
 
08.11.13
14:01
(115) мда.. чё-та я объясняю не так. или правда 143?..

состояние1 достигнуто в полдень, не достигнуто в час. в полдень - очевидно, почему. в час - потому что при минутной стрелке на единице часовая не может быть ровно на 12
119 alexiv79
 
08.11.13
14:04
(117) Вот насчет минут немного наипался - Цел(Разница - Цел(Разница/3600)*3600)/60 - кажись так минуты считаются-чета уже сам парюсь
120 User_Agronom
 
08.11.13
14:07
Уже 119 постов.
ИМХО
Сумма = Часы + Минуты/60;
Это правильное сложение переменной, содержащей часы с переменной содержащей минуты.
121 User_Agronom
 
08.11.13
14:09
(120) + Если результат нужен в часах, конечно
122 1dvd
 
08.11.13
14:12
(119) открой для себя (4)
123 Sorm
 
08.11.13
14:19
(0) Пятница, что ли...?
124 Ненавижу 1С
 
гуру
08.11.13
15:12
(118) каждому положению часов сопоставим точку в координатном квадрате: по одной оси - угол часовой стрелки от 0 положения, а по другой - минутной.
Синим обозначено множество положений правильных часов
https://docs.google.com/file/d/0B19WBINYOdkuOEwyb0tqN1FIX28
Теперь рассмотрим часы в котором стрелки поменяли местами, очевидно, что это множество в котором координаты поменялись местами, геометрически - это отражение относительно диагонали. Это красное множество. Так вот мы ищем их пересечение, таких точек ровно 12*12-1=143 (самая верхняя правая недостижима, это нижняя левая).
125 LehhaK
 
08.11.13
15:16
126 hhhh
 
08.11.13
15:39
(118) там фишка в том, что для часовой стрелки на 8 получается значение прямого угла в 9-00. То есть она зараза через час перепрыгивает. Поэтому 11 вариантов.
127 Ненавижу 1С
 
гуру
08.11.13
15:41
(126) вообще то обсуждение уже другой задачи в (84)
128 hhhh
 
08.11.13
15:45
и чего есть варианты? кроме 12-00?
129 hhhh
 
08.11.13
15:52
(128) а, понял, стрелки движутся, разность между некорректными значениями постоянно уменьшается, и в какой-то момент становится равной 0.
130 Wobland
 
08.11.13
16:49
(124) плин, с первого взгляда не подкопаешься. но где там положения, в которых стрелки совпадают? вроде как баг рисунка в том, что он не учитывает то, что одна стрелка движется быстрее другой

П.С. у нас время к восьми вечера пятницы, я немного занят, буду перечитывать завтра.
131 Ненавижу 1С
 
гуру
08.11.13
16:51
(130) стрелки совпадают очевидно на диагонали y=х
132 Wobland
 
08.11.13
16:52
(131) 143+12?
133 Wobland
 
08.11.13
16:52
(132) если чо, я обоснование ответа не знаю
134 Ненавижу 1С
 
гуру
08.11.13
16:53
(132) нет, там и так 12 этих точек уже на диагонали стоят
135 Wobland
 
08.11.13
16:54
(134) ты умножаешь количество квадратов на количество квадратов (минус один). но в некоторых квадратах кроме пересечения синей и красной линий есть ещё и угловая точка...
136 Wobland
 
08.11.13
16:58
картинка нарисована для двух стрелок, движущихся с одинаковой скоростью в противоположном направлении. поправьте меня
137 Ненавижу 1С
 
гуру
08.11.13
17:09
(136) нет, синии линии это движение нормальных часов, тангенс угла наклона равен 12, потому что минутная движется в 12 раз быстрее
красные линии - те же часы, только стрелки сняли и поставили поменяв местами
138 Wobland
 
08.11.13
17:30
(137) логично. но меня смущает непересечение линий в одинаковых углах (см. 132 и 135). правильно построенная модель должна это учиты^W показывать
139 smaharbA
 
08.11.13
17:36
складывать то ладно, а вот как отнимать ?
140 Wobland
 
08.11.13
17:51
ща картинка будет, я всё понял
141 Wobland
 
08.11.13
18:02
https://www.dropbox.com/s/1l2jxbt759hzzhk/clock.jpg

наверху - движение короткой стрелки, внизу - длинной. угол - отклонение от 12 (от 0 до 2пи, 360 градусов и т.д.)
приведя это дело к одному масштабу, мы увидим, что совпадение возможно только в местах пересечений.
как-то не доказал, да? прошу контрпример
142 Wobland
 
08.11.13
18:03
(141) П.С. правая рука не работает, пардоньте за графику
143 mistеr
 
08.11.13
18:50
Пятница удалась...
144 Ненавижу 1С
 
гуру
11.11.13
11:25
развернутое решение задачи из (84):

Введем на циферблате единицу измерения так, что часовая стрелка за час проходит дугу длины 1, а минутная - 12.
За начало отсчета выберем точку полуночи, направление - по движению стрелок.  

Утверждение: Для любых двух полуинтервалов [a;a+1) и [b;b+1) 0<=a,b<=11 (a,b целые) найдется "реальное" расположение часовой стрелки в [a;a+1) и минутной в [b;b+1) такое, что если стрелки поменять местами, то но расположение также будет "реальным". Исключение: a=b=11. Каждый интервал выбирается 12 способами минус исключение: 12*12-1=143.

Пусть координата часовой стрелки x. Через [x] обозначим целую часть координаты (целое число часов), через {x} - дробную часть. x=[x]+{x}.
Если координата при этом минутной стрелки y, то y=12*{x}.
Теперь стрелки поменяем местами и получим: x=12*{y}.
[y]+{y}=12*{x}
[x]+{x}=12*{y}
Решим эту систему относительно дробных частей и покажем, что решение есть для любых a=[x], b=[y], 0<=a,b<=11 кроме a=b=11.
суммируем и переносим:
{x}+{y}=([x]+[y])/11
из чего уже видно, что при [x]=[y]=11 справа будет 2, а сумма двух дробных частей ее не достигает.
вычитаем и переносим:
{x}-{y}=([y]-[x])/13
складываем и вычитаем получившиеся уравнения:
{x} = (12*[y]+[x])/143
{y} = (12*[x]+[y])/143
из чего видно, что решение есть и они удовлетворяют дробным частям (неотрицательны и меньше 1).
145 Wobland
 
11.11.13
11:35
(144) 10х
146 Ненавижу 1С
 
гуру
11.11.13
11:41
(145) чего?
147 Wobland
 
11.11.13
11:42
(146) tenx = thanks. спасибо, вникну на досуге ;)
148 Torquader
 
11.11.13
21:38
Вопрос достойный только семёрошника.
В восьмёрке же у вас всё время хранится в секундах - что мешает перевести в секунды, проделать все манипуляции и перевести обратно ?
2 + 2 = 3.9999999999999999999999999999999...