|
Подсчет времени в минутах | ☑ | ||
---|---|---|---|---|
0
user4fun
04.11.21
✎
13:10
|
Всем привет! подскажите пожалуйста как реализовать такое, есть две даты, необходимо посчитать разницу между двумя датами, исходя из того, что нужно брать только рабочее время (09:00 - 21:00) в минутах, желательно в запросе. Например 04.11.2021 08:00 - 05.11.2021 10:00 (13ч = 780 минут). Всем спасибо за ответы.
|
|||
1
Asmody
04.11.21
✎
13:12
|
(0) в типовых делают через регистр сведений
|
|||
2
Ненавижу 1С
гуру
04.11.21
✎
13:12
|
(0) без учёта праздников и выходных?
|
|||
3
user4fun
04.11.21
✎
13:14
|
(2) да, без учета.
|
|||
4
mistеr
04.11.21
✎
13:22
|
(3) Конфа какая? Производственный календарь есть?
|
|||
5
user4fun
04.11.21
✎
13:24
|
(4) Альфа авто 5
|
|||
6
PuhUfa
04.11.21
✎
13:31
|
(0) для каких целей?
|
|||
7
user4fun
04.11.21
✎
13:33
|
(6) Вывести в отчет эти данные.
|
|||
8
PuhUfa
04.11.21
✎
13:37
|
(7) информативно... -)
Тогда предположу что это связано с работами в ЗаказНарядах, а если так, то могу предложить РС "ГрафикРаботыРесурсов" где все это "посчитано"... а если еще и все правильно настроено и корректно ведется, то там может считать даже с учетом праздников и выходных. |
|||
9
mistеr
04.11.21
✎
13:42
|
(5) Из календаря нужно выбрать интервалы рабочего времени Начало-Конец. Затем считаем их пересечения с входным интервалом. Затем считаем минуты через РазностьДат и суммируем.
|
|||
10
Ненавижу 1С
гуру
04.11.21
✎
13:49
|
не надо тут календарей:
ВЫБРАТЬ РАЗНОСТЬДАТ(&НачалоРВ, &КонецРВ, МИНУТА) * ВЫБОР КОГДА РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, 1), ДЕНЬ), КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(&КонецПериода, ДЕНЬ, -1), ДЕНЬ), ДЕНЬ) + 1 > 0 ТОГДА РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, 1), ДЕНЬ), КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(&КонецПериода, ДЕНЬ, -1), ДЕНЬ), ДЕНЬ) + 1 ИНАЧЕ 0 КОНЕЦ + ВЫБОР КОГДА РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), &НачалоПериода, МИНУТА) < РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачалоРВ, ДЕНЬ), &НачалоРВ, МИНУТА) ТОГДА РАЗНОСТЬДАТ(&НачалоРВ, &КонецРВ, МИНУТА) КОГДА РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), &НачалоПериода, МИНУТА) < РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&КонецРВ, ДЕНЬ), &КонецРВ, МИНУТА) ТОГДА РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&КонецРВ, ДЕНЬ), &КонецРВ, МИНУТА) - РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), &НачалоПериода, МИНУТА) ИНАЧЕ 0 КОНЕЦ + ВЫБОР КОГДА РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&КонецПериода, ДЕНЬ), &КонецПериода, МИНУТА) > РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&КонецРВ, ДЕНЬ), &КонецРВ, МИНУТА) ТОГДА РАЗНОСТЬДАТ(&НачалоРВ, &КонецРВ, МИНУТА) КОГДА РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&КонецПериода, ДЕНЬ), &КонецПериода, МИНУТА) > РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачалоРВ, ДЕНЬ), &НачалоРВ, МИНУТА) ТОГДА РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&КонецПериода, ДЕНЬ), &КонецПериода, МИНУТА) - РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(&НачалоРВ, ДЕНЬ), &НачалоРВ, МИНУТА) ИНАЧЕ 0 КОНЕЦ КАК Минуты (НачалоПериода,КонецПериода) - проверяемый период (НачалоРВ, КонецРВ) - период рабочего времени (должны быть в одной дате, т.е. отличаться только временем) |
|||
11
mistеr
04.11.21
✎
13:57
|
Блин, а я понял "без учета" как "с учетом" :)
|
|||
12
user4fun
04.11.21
✎
14:24
|
(10) извините не совсем понял есть два реквизита ДатаСоздания 04.11.2021 09:00 и ДатаЗакрытия 05.11.2021 10:00, но есть документы созданные и до 09:00 и их нужно считать только 09:00.
|
|||
13
Garykom
гуру
04.11.21
✎
14:27
|
(12) >есть документы созданные и до 09:00 и их нужно считать только 09:00
что значит "считать" ? |
|||
14
user4fun
04.11.21
✎
14:32
|
(13) время фиксировать только с 09:00, а не с даты созадния.
|
|||
15
Garykom
гуру
04.11.21
✎
14:35
|
(14) отлично а что значит "фиксировать"?
|
|||
16
Garykom
гуру
04.11.21
✎
14:36
|
(15)+ вы поймите что телепаты на локдауне все
|
|||
17
pechkin
04.11.21
✎
14:39
|
(10) зачем так сложно?
почему не достаточно просто РАЗНОСТЬДАТ(&НачалоРВ, &КонецРВ, МИНУТА) |
|||
18
Garykom
гуру
04.11.21
✎
14:42
|
(17) с учетом дат а не только времени
т.е. передается 4 параметра дата-время начала, дата-время окончания всего периода и время начала и окончания (с начала дня) рабочего времени но я хз правильно ли там в запросе и явно как то сложновато |
|||
19
pechkin
04.11.21
✎
14:44
|
(18) верные параметры проще вычислить ВНЕ запроса
|
|||
20
Garykom
гуру
04.11.21
✎
14:48
|
(19) угу я тоже так подумал
но может получиться слишком большая ТЗ начала и окончания интервалов по дням |
|||
21
mistеr
04.11.21
✎
14:59
|
А почему "желательно в запросе", если из входных данных только две даты и два времени, а из базы никакая информация не нужна?
Или все-таки нужна? |
|||
22
Ненавижу 1С
гуру
04.11.21
✎
15:03
|
(21) думается что период берётся из базы
|
|||
23
серый КТУЛХУ
04.11.21
✎
15:11
|
Макс(0, Окр((НачалоДня(ДатаНач) - НачалоДня(ДатаКон))/(24*60*60),0)-2) * ((21-9)*60) + Макс(0, (КонецДня(ДатаНач) - (24-21)*60*60) - ДатаНач) / 60 + Макс(0, ДатаКон - (НачалоДня(ДатаКон) + 9*60*60)) / 60
|
|||
24
серый КТУЛХУ
04.11.21
✎
15:30
|
ну или так понятнее:
ДельтаМинутЦелыхСуток = Макс(0, Окр((НачалоДня(ДатаНач) - НачалоДня(ДатаКон))/(24*60*60),0)-2) * ((21-9)*60); МинутНачДатыДоКонСуток = Макс(0, (КонецДня(ДатаНач) - (24-21)*60*60) - ДатаНач) / 60; МинутКонДатыОнНачСуток = Макс(0, ДатаКон - (НачалоДня(ДатаКон) + 9*60*60)) / 60; ДельтаРабМинут = ДельтаМинутЦелыхСуток + МинутНачДатыДоКонСуток + МинутКонДатыОнНачСуток; |
|||
25
PuhUfa
04.11.21
✎
15:38
|
(20)(21) Объясню за ТС. Есть документ ЗаказНаряд в котором идет учет работ и материалов по обслуживанию авто. У документа есть реквизит ДатаСоздания - когда был фактически создан документ. Есть реквизит ДатаЗакрытия - дата когда документ перевели в состояние закрыт. Работы по ЗаказНаряду могут растянуться на несколько дней... Но физически мастера работают с 9 до 21... Вот ТС и извращается... Еще у документа есть реквизит ДатаНачала - это дата начала работ по ЗаказНаряду... еще есть РС "ГрафикРаботыРесурсов" в котором отображаются все интервалы времени работ по ЗаказНаряду уже с учетом начала рабочего дня и его окончания... но ТС видимо не умеет в этот РС или просто хочет свой велосипед.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |