&НаКлиенте
Процедура Команда6(Команда)
Перем ДатаНачала, КоличествоРабочихДней;
ОчиститьСообщения();
ВвестиДату(ДатаНачала, "Введите дату начала", ЧастиДаты.Дата);
Если ДеньНедели(ДатаНачала) = 6 или ДеньНедели(ДатаНачала) = 7 тогда
Сообщить("Ошибка. Ваша дата не в рабочий день");
Иначе
ВвестиЧисло(КоличествоРабочихДней, "Введите количество рабочих дней");
Если КоличествоРабочихДней < 0 тогда
Сообщить("Ошибка. Количество дней не может быть отрицательным");
Иначе
Результат = ДобавитьРабочийДень(ДатаНачала,КоличествоРабочихДней);
Сообщить("Последний рабочий день: " + Формат(Результат, "ДФ = ""дд.ММ.гггг"" "));
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Функция ДобавитьРабочийДень(ДатаНачала,КоличествоРабочихДней)
День = 24*3600;
Для i = 1 по КоличествоРабочихДней Цикл
Если ДеньНедели(ДатаНачала) <> 6 и ДеньНедели(ДатаНачала) <> 7 тогда
ДатаНачала = ДатаНачала + День;
Иначе
i = i-1;
ДатаНачала = ДатаНачала + День;
КонецЕсли;
КонецЦикла;
Возврат ДатаНачала;
КонецФункции
&НаКлиенте
Процедура Команда7(Команда)
Перем Дата, Часы;
ОчиститьСообщения();
ВвестиДату(Дата, "Введите дату начала", ЧастиДаты.ДатаВремя);
Если ДеньНедели(Дата) = 6 или ДеньНедели(Дата) = 7 тогда
Сообщить("Ошибка, ваша дата не в рабочий день");
ИначеЕсли Час(Дата) < 8 или Час(Дата) > 17 тогда
сообщить("Ошибка, ваше время не в рабочее время");
Иначе
ВвестиЧисло(Часы, "Введите количество рабочих часов");
Если Часы < 0 тогда
Сообщить("Ошибка, часы не должны быть отрицательные");
Иначе
Результат = ДобавитьКоличествоРабочихЧасов(дата,часы);
Сообщить("Конец работы: "+ Результат);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
функция ДобавитьКоличествоРабочихЧасов(ДатаНачала, КоличествоЧасов)
ЧислоДней = Цел(КоличествоЧасов / 9);
День = 24*3600;
Для i=1 по ЧислоДней Цикл
Если ДеньНедели(ДатаНачала) <> 6 и ДеньНедели(ДатаНачала) <> 7 тогда
КоличествоЧасов = КоличествоЧасов - 9;
ДатаНачала = ДатаНачала + День;
Иначе
i = i-1;
ДатаНачала = ДатаНачала + День;
КонецЕсли;
КонецЦикла;
ДатаНачала = ДатаНачала + КоличествоЧасов * 3600;
Возврат ДатаНачала;
конецфункции