Расчёт продолжительности рабочего дня

Runa

Администратор
#1
Предполагается, что продолжительность рабочего дня не может быть более 23 часов 59 минут. Если больше, то надо оперировать понятием длительности рабочего процесса и использовать другой алгоритм.
Рабочий день может начаться и закончиться в один день, а может начаться в один, а закончиться на следующий. В представленном ниже примере обрабатываются оба варианта.
Исходные данные, поля времени:
- [Приход] - время начала рабочего дня (значение без ограничений)
- [Уход] - время окончания (значение без ограничений)
- [Обед] - продолжительность обеденного перерыва (список: 0:30, 1:00, 1:30, 2:00)
Добавляем расчётные поля:
- [1 сутки] с формулой: [Уход]-[Приход]
- [2 суток] с формулой: 1440-[Приход]+[Уход]
В случае, если уход был меньше прихода, первое поле будет отрицательным. Проверяем этот результат в составном поле:
- [вариант] с формулой: [String(1 сутки<0?2 суток:1 сутки)]
Если результат отрицательный, то [вариант] примет значение поля [2 суток], а если положительный, то значение поля [1 сутки].
Добавляем числовое поле [результат], в которое копируется результат поля [вариант].
Сейчас получена продолжительность рабочего дня без обеда в минутах. Вычтем из него продолжительность обеда в расчётном поле [всего] по формуле: [результат]-[Обед]
Получим представления часов и минут в расчётных полях:
- [часов] с формулой: INT([всего]/60)
- [минут] с формулой: FRAC([всего]/60;2)/100*60
Соберём результат в составном поле:
- [Факт] при помощи формулы: [часов]:[Fill(минут,2)]
Если продолжительность рабочего дня надо использовать, к примеру, для расчёта начисленной заработной платы, то добавляем расчётное поле:
- [отработано] с формулой: [часов]*100+[минут]/60*100
Которое с числовым полем [Ставка] может быть использовано для вычисления премии:
- [К выплате], формула: ([отработано]*[Ставка])/100

См. также: Как обрабатываются поля времени в расчётах
 
#2
Что то у меня не проходит такой вариант. В поле на форме выводит не значение, а саму формулу. А есть ли где рабочий проект? что бы его поковырять.
 

Vladimir

Администратор
Команда форума
#3
Если выводится формула, значит какое-то поле или функция прописана некорректно - программа считает, что это просто текст.
В приложении - проект с описанным расчётом.
 

Вложения

#4
Если выводится формула, значит какое-то поле или функция прописана некорректно - программа считает, что это просто текст.
В приложении - проект с описанным расчётом.
Спасибо за выкладку. Буду у себя косяки искать.