Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
Для каждого стр из Объект.УчётВремени цикл
НРВ = 0;
Если
НачалоДня(стр.ДатаНачала) <> НачалоДня(стр.ДатаОкончания)
Тогда
НРВ = НРВ + (стр.ДатаОкончания - Стр.ДатаНачала) /60 /60
ИначеЕсли //Начало и окончание задачи до начала рабочего дня
(Час(стр.ДатаНачала) < 10 или ( Час(стр.ДатаНачала) = 10 и Минута(стр.ДатаНачала) <=30)) и
(Час(стр.ДатаОкончания) < 10 или ( Час(стр.ДатаОкончания) = 10 и Минута(стр.ДатаОкончания) <=30))
Тогда
НРВ = НРВ + ((стр.ДатаОкончания - стр.ДатаНачала) /60 /60)
ИначеЕсли //Начало задачи до начала рабочего дня, окончание во время рабочего дня
(Час(стр.ДатаНачала) < 10 или ( Час(стр.ДатаНачала) = 10 и Минута(стр.ДатаНачала) <=30)) и
(Час(стр.ДатаОкончания) < 19 и (Час(стр.ДатаОкончания) > 11 или ( Час(стр.ДатаОкончания) = 10 и Минута(стр.ДатаОкончания) > 30)))
Тогда
НРВ = НРВ + ((НачалоДня(стр.ДатаОкончания) + ((10*60)*60) + 1800 - стр.ДатаНачала) /60 /60)
ИначеЕсли //Начало задачи в рабочее время и окончание задачи в нерабочее время
(Час(стр.ДатаНачала) < 19 и (Час(стр.ДатаНачала) > 11 или ( Час(стр.ДатаНачала) = 10 и Минута(стр.ДатаНачала) > 30))) и
Час(Стр.ДатаОкончания) >= 19
Тогда
НРВ = НРВ + (стр.ДатаНачала - (НачалоДня(стр.ДатаОкончания) + ((19*60)*60))) /60 /60
ИначеЕсли
Час(стр.ДатаНачала) >= 19 и Час(стр.ДатаОкончания) >= 19
Тогда
НРВ = (стр.ДатаОкончания - Стр.ДатаНачала) /60 /60
КонецЕсли;
стр.НРВ = НРВ;
Время = (стр.ДатаОкончания - стр.ДатаНачала) /60 /60;
РВ = Время - НРВ;
стр.РВ = РВ;
стр.Время = Время;
КонецЦикла;
Комментарии (0) RSS