|   |   | 
| 
 | Подсчет времени в минутах | ☑ | ||
|---|---|---|---|---|
| 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... Вот ТС и извращается... Еще у документа есть реквизит ДатаНачала - это дата начала работ по ЗаказНаряду... еще есть РС "ГрафикРаботыРесурсов" в котором отображаются все интервалы времени работ по ЗаказНаряду уже с учетом начала рабочего дня и его окончания... но ТС видимо не умеет в этот РС или просто хочет свой велосипед.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |