Дано: сотрудники работают с плавающим графиком, есть ночные/дневные, плавающее время обеда у каждого. Необходимо в часах посчитать выработку сотрудников. Сейчас (не до конца допиленный и не тестил еще) алгоритм вырисовывается такой, но как-то он мне не нравится. Подскажите есть ли более красивое решение разобрать работу по часам?
ВремяДневное = 0;
ВремяНочное = 0;
Если ЕстьНочные Тогда
Если ЕстьОбед Тогда
ВремяДневное = НачалоНочных - НачалоСмены;
Если КонецСмены > КонецНочных Тогда
ВремяДневное = ВремяДневное + (КонецСмены - КонецНочных);
КонецЕсли;
Если НачалоНочных > КонецНочных Тогда
ВремяНочное = (Дата("01.01.0001 23:59:59") - НачалоНочных) + (КонецНочных - Дата("01.01.0001 00:00:00"));
Иначе
ВремяНочное = КонецНочных - НачалоНочных;
КонецЕсли;
ОбедДневной = 0;
ОбедНочной = 0;
Иначе
ВремяДневное = НачалоНочных - НачалоСмены;
Если КонецСмены > КонецНочных Тогда
ВремяДневное = ВремяДневное + (КонецСмены - КонецНочных);
КонецЕсли;
Если НачалоНочных > КонецНочных Тогда
ВремяНочное = (Дата("01.01.0001 23:59:59") - НачалоНочных) + (КонецНочных - Дата("01.01.0001 00:00:00"));
Иначе
ВремяНочное = КонецНочных - НачалоНочных;
КонецЕсли;
КонецЕсли;
Иначе
Если ЕстьОбед Тогда
ВремяДневное = (КонецСмены - КонецОбеда) + (НачалоОбеда - НачалоСмены);
Иначе
ВремяДневное = КонецСмены - НачалоСмены;
КонецЕсли;
КонецЕсли;