Выдержка из справки:
Компонента Календари рабочего времени представляет собой справочник, каждая запись которого содержит данные о распределении рабочего времени для определенного года.
Данные этого справочника используются при обработке маршрутов задач для вычисления сроков выполнения заданий и сроков последующего выполнения блоков «Ожидание» и «Мониторинг» с относительными сроками выполнения. Также может использоваться для расчета относительных сроков в прикладной разработке.
Чтобы заполнить календарь, требуется ввести время начала рабочего дня, и время окончания.
После автоматического заполнения календарь выглядит вот так:
С понедельника по пятницу мы работаем 9 часов (не учитывая времени обеденного перерыва), суббота и воскресенье - выходные дни.
После автоматического заполнения секретарю или администратору системы еще предстоит кропотливая работа по корректировке календаря с учетом нерабочих праздничных дней и переносов рабочих дней на другие дни недели. Данная операция хотя и занимает несколько часов
драгоценного рабочего времени, но она обязательна, как-то автоматизировать этот процесс очень сложно.
Однако, следует обратить внимание на то, что на многих предприятиях пятница является сокращенным рабочим днем. Если не учитывать этот момент, то логика работы бизнес-процессов, жестко регламентированных по срокам исполнения заданий, может быть нарушена.
Таким образом, требуется учитывать в календарях рабочего времени график работы предприятия по пятницам. "Стоковая" разработка этого не позволяет, календарь приходится корректировать вручную.
С помощью несложной доработки можно расширить функциональность механизма заполнения календаря рабочего времени, предусмотрев индивидуальную продолжительность рабочего дня по пятницам.
Немного допилим действие "Заполнить дни" в типе справочника "КРВ" и вуаля:
Получаем заполненный календарь с учетом сокращенных пятниц:
Также обратите внимание, цитирую справку:
Начало дня. Время начала рабочего дня, задается в часах. Например, если рабочий день начинается в 10 часов 30 минут, то в поле нужно ввести 10.5;
Окончание дня. Время окончания рабочего дня, задается в часах. Например, если рабочий день заканчивается в 19 часов 15 минут, то в поле нужно ввести 19.25;
Модификация справочника для версии 4.7, но думаю что он не менялся с 4.5 до 4.9
Код действия "FillAllDays", измененные участки выделены полужирным шрифтом
!DataSet = !Sender.Form.View.Component.DataSet
!YearRequisite = !DataSet.Requisites('ISBIntNumber')
if !YearRequisite.IsNull
Exit(LoadString("ISB_CWT_ERROR_MSG_10"; "ISBSYSDEV"))
endif
!Year = !YearRequisite.AsInteger
if (!Year < 1753) or (!Year > 9999)
Exit(LoadString("ISB_CWT_ERROR_MSG_1"; "ISBSYSDEV"))
endif
!InputDialogResult = InputDialog(LoadString("ISB_CWT_STRING_1"; "ISBSYSDEV")&'|Окончание по пятницам*';
'9.00|18.00|18.00'; "Число:2|Число:2|Число:2";
LoadString("ISB_CWT_STRING_2"; "ISBSYSDEV");;)
!StartTime = SubString(!InputDialogResult; '|'; 1)
!FinishTime = SubString(!InputDialogResult; '|'; 2)
!FinishTimeFriday = SubString(!InputDialogResult; '|'; 3)
!FirstDay = '01.01.' & !Year
!LastDay = '31.12.' & !Year
!DayCount = DateDiff('D'; !FirstDay; !LastDay) + 1
!CurrentDay = !FirstDay
!I = 0
!DetailDataSet = !DataSet.DetailDataSet(1)
!DayReq = !DetailDataSet.Requisites('ISBDate')
!StartTimeReq = !DetailDataSet.Requisites('ISBFloatNumber')
!FinishTimeReq = !DetailDataSet.Requisites('ISBFloatNumber2')
!DurationDayReq = !DetailDataSet.Requisites('ISBFloatNumber3')
!DetailDataSet.DisableControls
!DetailDataSet.First
while not !DetailDataSet.Eof
!DetailDataSet.Delete
endwhile
while !I < !DayCount
!Day = DayOfWeek(!CurrentDay)
!DetailDataSet.Append
!DayReq.Value = !CurrentDay
if !Day < 5
!StartTimeReq.AsString = !StartTime
!FinishTimeReq.AsString = !FinishTime
else
if !Day == 5
!StartTimeReq.AsString = !StartTime
!FinishTimeReq.AsString = !FinishTimeFriday
else
!DurationDayReq.AsNumeric = 0
endif
endif
!CurrentDay = ChangeDate('D'; !CurrentDay; 1)
!I = !I + 1
endwhile
!DetailDataSet.First
!DetailDataSet.EnableControls
Всех коллег с наступающим Новым Годом и Рождеством!
Актуальная проблема :) Только я ручками прошелся по календарю на 2013 и 2014 год, все равно из-за праздничных дней приходится руками редактировать его
спасибо большое! очень полезное нововведение! теперь осталось только добавить возможность настройки календаря рабочего времени для многих госучреждений, где обед длится не час, а 48 минут, благодаря чему в пятницу они и уходят на час раньше)))
Евгения, так ведь эта доработка и позволяет автоматически установить по пятнам сокращенный рабочий день, прямо в примере - на час меньше. Открою секрет - и во многих коммерческих компаниях, за счет укороченного обеденного перерыва, по пятницам так же сокращенный день. Где на час, у нас, например, на 50 минут.
Спасибо за отзыв!
Везде по разному, мы подстраиваемся под администрацию и работаем в таком режиме:
пн-чт 8:45-13:00 14:00-18:00
пт 9:00-13:00 14:00-17:00
Авторизуйтесь, чтобы написать комментарий