|
получить количество часов и минут из начальной даты и конечной бухгалтерия 3.0 | ☑ | ||
---|---|---|---|---|
0
Новый1сник2
05.12.22
✎
14:29
|
Добрый день!
использую функцию Функция РазностьВремени(Время1, Время2); Разность = Время1 - Время2; Если Разность > 0 Тогда Часов = Цел(Разность / 3600); Минут = Цел((Разность - Часов * 3600) / 60); Возврат Дата(1, 1, 1, Часов, Минут, 0); Иначе Возврат Дата(1,1,1,0,0,0); КонецЕсли; КонецФункции пишет ошибку Преобразование значения к типу Дата не может быть выполнено Возврат Дата(1, 1, 1, Часов, Минут, 0);, хотя в отладчике часы и минуты показывает правильно. подскажите в чем причина, нужно заполнять отработанное время в отдельный реквизит и потом суммировать его по документам. |
|||
1
mikecool
05.12.22
✎
14:30
|
Возврат Дата(1, 1, 1) + Часов * 3600 + Минут * 60;
|
|||
2
mikecool
05.12.22
✎
14:31
|
а вообще
Возврат Дата(1, 1, 1) + Разность |
|||
3
Волшебник
модератор
05.12.22
✎
14:42
|
Возврат Новый Структура("Часы, Минуты", Часы, Минуты);
|
|||
4
Новый1сник2
05.12.22
✎
14:43
|
немного не правильно считает
например дата начала 19.12.2022 0:00:00 дата окончания 31.12.2022 0:00:00 количество часов 288 а (1) возвращает 13.01.0001 0:00:00 |
|||
5
Волшебник
модератор
05.12.22
✎
14:46
|
(4) Функция РазностьВремени должна возвращать не дату.
|
|||
6
1Сергей
05.12.22
✎
14:46
|
(4) Если Вам нужно в часах измерять, то просто умножьте общее количество секунд на 3600
|
|||
7
1Сергей
05.12.22
✎
14:47
|
(6) *разделите, конечно
|
|||
8
Новый1сник2
05.12.22
✎
14:51
|
(5) я так понял количество дней возвращает а не дату
|
|||
9
Ryzeman
05.12.22
✎
14:52
|
(4) Ты хочешь из 31.12.2022 вычесть 19.12.2022 и получить что? Результат какой должен быть?)
|
|||
10
Kassern
05.12.22
✎
14:53
|
(0) Сделайте уже через запрос и РазностьДат
|
|||
11
Ryzeman
05.12.22
✎
14:53
|
(8) Количество дней
|
|||
12
Ryzeman
05.12.22
✎
14:53
|
Это
Дней= Цел(Разность / 60 * 60 * 24); |
|||
13
Ryzeman
05.12.22
✎
14:54
|
(10) Тоже хотел написать что я бы через запрос сделал, тем более там бухия, по-любому ещё производственные календарь потом прикручивать и учитывать нерабочие дни) Но тут какая то мутная тема с переводом разницы в дату)
|
|||
14
Новый1сник2
05.12.22
✎
14:55
|
(8) нужен реквизит в котором будут сохраняться количество часов и минут. в результате нужно будет суммировать затраченное время по документам.
|
|||
15
Новый1сник2
05.12.22
✎
14:56
|
(13) не производственных и прочее не нужно. только итог по месяцу посчитать, сколько часов и минут сотрудник отработал
|
|||
16
Ryzeman
05.12.22
✎
14:57
|
(14) Ты уже получил часы и минуты. Зачем это
Возврат Дата(1, 1, 1, Часов, Минут, 0); ?? |
|||
17
1Сергей
05.12.22
✎
14:58
|
(16) ему разницу надо
|
|||
18
Волшебник
модератор
05.12.22
✎
14:59
|
(17) Если надо разницу, то надо возвращать разницу, а не дату.
|
|||
19
Ryzeman
05.12.22
✎
15:00
|
(17) Ага, он уже получил часы и минуты. Пусть возвращает структуру, либо возвращает секунды, суммирует (если он это в цикле всё делает), а потом уже переводит в минуты и часы
|
|||
20
Новый1сник2
05.12.22
✎
15:01
|
(19) цикла нету
|
|||
21
Новый1сник2
05.12.22
✎
15:02
|
а разницу я могу потом сложить и разделить, чтобы получить количество часов, минут?
|
|||
22
Ryzeman
05.12.22
✎
15:03
|
(21) Конечно, кто тебе мешает? Это же, блин, просто числа, переменные.
|
|||
23
Kassern
05.12.22
✎
15:03
|
(15) А сотрудник у вас 24/7 работает? Если нет, то нужно учитывать выходные, праздники, рабочее время, обед и т.д.
|
|||
24
Волшебник
модератор
05.12.22
✎
15:04
|
(23) Ну начинается...
|
|||
25
Новый1сник2
05.12.22
✎
15:05
|
(23) это для управленческого учета, праздники и прочее по договоренности с сотрудником
|
|||
26
Kassern
05.12.22
✎
15:07
|
(25) Так я про управленческий учет и говорю. Или вы в цикле только рабочие дни обходите, а в Время1, Время2 - у вас рабочее время сотрудника? Он у вас без обеда?(
|
|||
27
Новый1сник2
05.12.22
✎
15:07
|
(22) т.е просто храню в числовом реквизите разницу, на конец месяца суммирую, а дальше
Часов = Цел(Разница/ 3600); Минут = Цел((Разница- Часов * 3600) / 60); |
|||
28
Новый1сник2
05.12.22
✎
15:09
|
(26) да что вы за сотрудников беспокоитесь, все норм. часы за сделанную работу проставляются
|
|||
29
Kassern
05.12.22
✎
15:09
|
(27) Жестоко...
А почему не - Минут = Цел(Разница/60); ?) |
|||
30
Ryzeman
05.12.22
✎
15:10
|
(27) Не обижайся, но даже одной лишь формулировкой постановки вопроса кажется что там какая-то адская дичь, одобрять которую ни в коем случае нельзя) Но в целом да - если тебе так будет проще чем с той же структурой - вне этой функции запоминай секунды, а перед выводом вычисляй минуты и часы.
|
|||
31
Kassern
05.12.22
✎
15:12
|
(28) У вас может быть в параметрах Время1, Время2 - например 1 день разницы? Если да, тогда сотрудник 86400сек отработал? Или все же за этот день от отработал 8часов=28800сек?
|
|||
32
Новый1сник2
05.12.22
✎
15:12
|
(30) в печатную форму вывожу просто числовой реквизит (количество часов + "0.КоличествоМинут)
|
|||
33
Kassern
05.12.22
✎
15:13
|
(32) Вот будет весело, если часов 10 получится))
|
|||
34
Ryzeman
05.12.22
✎
15:13
|
(31) Я так подозреваю что там что там внутри документов реквизиты даты начала и окончания смены.
|
|||
35
Новый1сник2
05.12.22
✎
15:14
|
(31) если заказ делается более чем один день, то и в т.ч несколько строк с датой начала и датой окончания. по ночам не работают))
|
|||
36
Новый1сник2
05.12.22
✎
15:15
|
(34) нет там просто почасовая оплата + может оклад и премия
|
|||
37
Новый1сник2
05.12.22
✎
15:15
|
табель рабочего времени не ведется, если Вы об этом
|
|||
38
Новый1сник2
05.12.22
✎
15:16
|
(33) может и получится, лишь бы правильно считало
|
|||
39
Kassern
05.12.22
✎
15:18
|
(35) (35) Тогда -
Разница = Время2-Время1; Часы=Цел(Разница/3600); Минуты=Цел(Разница/60); |
|||
40
Kassern
05.12.22
✎
15:21
|
(35) (35) Тогда -
Разница = Время2-Время1; Часы=Цел(Разница/3600); Минуты=Цел((Разница-Часы*3600)/60); |
|||
41
Новый1сник2
05.12.22
✎
15:23
|
благодарю за подсказки, вроде разобрался
|
|||
42
Новый1сник2
06.12.22
✎
10:54
|
вывожу отчет на скд в кросс таблицу , пишет не верные параметры "+"
в вычисляемых полях Цел(ЗатраченоВремени/3600) + "0." + Цел((ЗатраченоВремени-Цел(ЗатраченоВремени/3600) *3600)/60) если просто Цел(ЗатраченоВремени/3600) тогда считает в часах, как добавить минуты ? |
|||
43
Kassern
06.12.22
✎
10:55
|
(42) А кто вам в СКД разрешил числа со строками складывать?
|
|||
44
Kassern
06.12.22
✎
10:56
|
Вот это зачем "0." ?
|
|||
45
Kassern
06.12.22
✎
10:56
|
Создайте 2 поля на скд, одно минуты, другое часы. А дальше через макет СКД выведите, как вам нужно красиво.
|
|||
46
mikecool
06.12.22
✎
10:59
|
как все запущено оказалось...
|
|||
47
Новый1сник2
06.12.22
✎
11:09
|
(44) потому что если сложить 2 часа +30 мин, получится 32
|
|||
48
Волшебник
модератор
06.12.22
✎
11:12
|
(47) дели на 100
|
|||
49
Kassern
06.12.22
✎
11:12
|
(47) бред, даже в вашем случае будет 20.30 вместо 2 часа+30мин. Это при учете работы не в СКД.
|
|||
50
Kassern
06.12.22
✎
11:14
|
(48) плохая идея)) А если будет 2часа 40мин? вы получите 2.4 часа <> 2часа 40мин.
|
|||
51
Волшебник
модератор
06.12.22
✎
11:14
|
(50) ему надо в его дикую формулу ещё добавить деление на 100
|
|||
52
Новый1сник2
06.12.22
✎
11:15
|
(51) пробую уже
|
|||
53
Kassern
06.12.22
✎
11:15
|
(51) Все что ему надо, это просто получить 2 поля в СКД. В первом часы, во втором минуты. А дальше уже выводить их на макет с блек джеком и бантиками.
|
|||
54
Волшебник
модератор
06.12.22
✎
11:16
|
(53) Вы не понимаете вкус жизни. Ему надо повеселее
|
|||
55
Новый1сник2
06.12.22
✎
11:17
|
(51) все норм, только итог получается
264,30 288,30 552,60 |
|||
56
Kassern
06.12.22
✎
11:19
|
(54) ну если со вкусом жизни, то пускай с побитовыми операциями любится)
|
|||
57
Новый1сник2
06.12.22
✎
11:23
|
если мин отдельно выводить, в итогах также часов 552 минут 60 ))
|
|||
58
KJlag
06.12.22
✎
11:25
|
(0) но ведь он действительно должен жаловаться на Дата(1,1,1,288,0,0)
|
|||
59
Новый1сник2
06.12.22
✎
11:30
|
как с итогами то быть? 120 мин округляет как 1ч 20 мин
|
|||
60
Kassern
06.12.22
✎
11:31
|
(59) ахах, классно вы работу людям насчитаете)) Работодатель будет рад, а вот сотрудники...
|
|||
61
Волшебник
модератор
06.12.22
✎
11:33
|
(59) Поделить на 60, потом умножить на 100, вычесть 3600. Должно помочь
|
|||
62
Новый1сник2
06.12.22
✎
11:37
|
а если в запросе разность дат в минутах / 60 ?
|
|||
63
Kassern
06.12.22
✎
11:38
|
(61) Это вы так тонко троллите ТС?)) 120/60*100-3600=-3400. Что дальше ему делать с этим числом?) За такое время в табелях сотрудники его же побьют...
|
|||
64
Kassern
06.12.22
✎
11:39
|
(62) Зачем?
|
|||
65
Новый1сник2
06.12.22
✎
11:51
|
да весело с датами работать, в таблице нормальное время показывает, в итогах нет. как итоги подравнять то ?
|
|||
66
saasa
06.12.22
✎
11:54
|
(0) график работы почему для расчета не используете ?
|
|||
67
Новый1сник2
06.12.22
✎
11:55
|
(66) там свой управленческий учет, часы работы сотрудника проставляются в заказе
|
|||
68
Kassern
06.12.22
✎
11:57
|
ДобавитьКДате(ДатаВремя(1, 1, 1), Секунда, РАЗНОСТЬДАТ(<Дата1>, <Дата2>, Секунда)) формат вывода значения в ячейке "Ч:мм".
|
|||
69
Kassern
06.12.22
✎
11:57
|
Так пробовали?
|
|||
70
Новый1сник2
06.12.22
✎
12:01
|
(68) это в запросе ?
|
|||
71
Kassern
06.12.22
✎
12:02
|
(70) А где по вашему еще есть метода ДобавитьКДате и РАЗНОСТЬДАТ?)
|
|||
72
Kassern
06.12.22
✎
12:02
|
*методы
|
|||
73
Kassern
06.12.22
✎
12:03
|
У вас стаж почти 7 лет на форуме, ни разу с этими методами в запросе не встречались?)
|
|||
74
Ryzeman
06.12.22
✎
12:04
|
(42) если в итоге всё свелось к СКД, то почему это всё запросом не сделать?
Если так уж сильно ненавидишь запросы, что кушать не можешь - сделай через ресурсы. Там есть все формулы для этого и по итогам считать как хочешь можно. |
|||
75
Новый1сник2
06.12.22
✎
12:06
|
(73) да просто раньше не было таких задач
|
|||
76
Новый1сник2
06.12.22
✎
12:48
|
вот нашел https://forum.infostart.ru/forum9/topic227457/
есть формула Строка(Сумма(ЧАС(ЗатраченоВремени)) + (Сумма(Минута(ЗатраченоВремени)) - Сумма(Минута(ЗатраченоВремени)) % 60) / 60) +":"+ Строка( Сумма(Минута(ЗатраченоВремени)) % 60) только почему то часы не видит только минуты |
|||
77
Новый1сник2
06.12.22
✎
13:24
|
благодарю, все получилось
|
|||
78
Новый1сник2
06.12.22
✎
13:25
|
вот такая формула
Строка(Сумма(ЗатраченоВремениВчасах) + (Сумма(ЗатраченоВремениВминутах) - Сумма(ЗатраченоВремениВминутах) % 60) / 60) +":"+ Строка( Сумма(ЗатраченоВремениВминутах) % 60) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |