Давайте рассмотрим задание расписания с недельной длительностью на достаточно простом и в то же время наглядном примере — зададим расписание работы служащих офиса (например, банковского отделения).
Пусть отделение работает с понедельника по субботу с девяти часов утра до восьми вечера, с перерывом на обед с двух часов дня до трех; воскресенье — нерабочий день.
Задайте расписание с недельной длительностью
- Перетащите элемент Расписание из палитры Агент на диаграмму типа агентов.
- Перейдите в панель Свойства.
- Задайте имя расписания в поле Имя. По этому имени вы будете ссылаться на это расписание в свойствах объекта(ов) или программно из кода вашей модели.
- Перейдите в секцию Данные и выберите тип значения, задаваемого этим расписанием: да/нет, целое или вещественное. Поскольку нам нужно задать лишь изменение статуса (доступен или недоступен) управляемого этим расписанием ресурса (банковские служащие), то оставьте в строке Тип значения выбранной опцию да/нет.
- Поскольку мы хотим задавать значения не для каких-то отдельно взятых моментов, а для интервалов времени, оставьте в секции Расписание задает выбранной опцию Интервалы (Начало, Конец).
- Выберите подходящий для вашей задачи режим задания расписания, основываясь на длительности этого расписания — Неделя, Дни/Недели или Другая (нет привязки к календарю) и задайте расписание в выбранном вами режиме. Поскольку наше расписание имеет недельную длительность, то и задавать его будет удобнее в режиме Неделя.
- В поле Значение по умолчанию вы можете задать значение, которое будет использоваться расписанием для тех интервалов времени, которые не будут покрыты этим расписанием. Оставьте в качестве значения по умолчанию значение нет:
- Задайте интервалы работы в расположенной ниже таблице. В нашем случае можно выделить два интервала — дообеденное время с девяти утра до двух часов дня и послеобеденное время работы — с трех до восьми. Каждый интервал задается в отдельной строке таблицы. Добавьте новую строку, щелкнув по кнопке справа от таблицы.
- Вы увидите, что по умолчанию в только что добавленной строке уже будут выбраны будние дни — в ячейках с понедельника по пятницу будут стоять галочки. Эти галочки означают, что заданный в этой строке интервал будет применен именно к этим, выбранным, дням. Поскольку мы задаем этот интервал для всех дней недели, кроме воскресенья, то нужно будет добавить в список дней еще и субботу. Чтобы поменять статус для какого-то дня недели, нужно сделать щелчок мышью в соответствующей ячейке строки (в нашем случае — в ячейке Сб).
-
Теперь нужно задать для этих дней интервал рабочего времени, соответствующий дообеденному времени работы. Выберите 09:00 в ячейке Начало и 14:00 в ячейке Конец этой строки. В качестве значения оставьте статус да, поскольку нам нужно, чтобы в заданный интервал времени управляемый этим расписанием ресурс был доступен.
Обратите внимание, что если вы не выберете в строке ни одного дня, то вы не сможете добавить в таблицу новую строку.
- Теперь давайте зададим послеобеденное время работы для этих же дней. Для этого мы добавим в таблицу еще одну строку (при этом вы увидите, что в новой строке будут выбраны те же дни, что и в предыдущей, то есть, снова добавлять к списку субботу уже не понадобится) и зададим в качестве начала и конца этого нового интервала значения 15:00 и 20:00.
Закончив задание расписания, вы можете использовать его в вашей модели, ссылаясь на него в нужных вам свойствах объектов и/или работая с ним программно с помощью соответствующих методов.
Обратите внимание, что здесь мы задали только те интервалы времени, в которые служащие будут работать. Необходимости отдельно задавать интервал, соответствующий обеденному перерыву, нет, поскольку мы выбрали значение нет в качестве значения по умолчанию, и именно это значение будет использоваться расписанием в интервале с двух часов дня до трех, поскольку это время явно не указано в таблице интервалов.
Обратите внимание, что если несколько интервалов относится к одному и тому же времени, то заданный ниже интервал будет переопределять интервалы, заданные в таблице выше.
- К примеру, мы могли бы задать расписание из приведенного примера по-другому — вначале задав весь интервал рабочего времени, а уже потом задав интервал, соответствующий уходу служащих на обеденный перерыв: Поскольку здесь интервал 14:00 - 15:00 задан после интервала 09:00 - 20:00, то он будет его переопределять, в итоге получится нужная нам картина (ее можно посмотреть на странице свойств расписания Предв. просмотр):
- А вот если бы интервалы были заданы в следующем порядке (см. рисунок ниже), то они бы задавали совершенно другое расписание:
При необходимости вы можете удалять заданные интервалы и перемещать их по таблице вверх и вниз (при этом вы должны будете сами следить за тем, чтобы заданное в таблице расписание было целостным). Это можно сделать, предварительно выделив нужную вам строку в таблице и затем воспользовавшись расположенными справа от таблицы кнопками соответственно.
Если ваше расписание имеет привязку к календарным датам (имеет длительность Неделя или Дни/Недели), то вы также можете задавать исключения — особые интервалы времени, в которые задаваемая расписанием величина должна иметь значения, отличные от предписываемых расписанием.
Давайте зададим с помощью исключений праздники, в которые банковское отделение работать не будет.
Задайте праздники
- Выделите расписание и перейдите в секцию свойств Исключения.
- Поскольку в праздники магазин будет работать не по какому-то особому (укороченный день и т.п.) расписанию, а просто не будет работать целый день, то мы можем выбрать опцию Весь день, и вместо задания времен начала и конца исключительного интервала просто указать те дни, когда магазин работать не будет. Давайте зададим, например, праздники 1, 2 и 3 января, 23 февраля, 8 марта и 9 мая.
- Задание исключений производится аналогично заданию самого расписания: добавляйте новые строки в таблицу щелчком по кнопке и выбирайте нужный вам день в столбце День с помощью элемента выбора даты. Поскольку эти праздники будут праздноваться в одни и те же дни из года в год, то оставьте выбранным флажок в столбце Ежегодно. В качестве значения логично будет выбрать нет.
Более подробно задание исключений в расписании описано здесь.
Если вы задаете расписание работы (доступности) ресурсов, то вы должны соответствующим образом изменить свойства объекта ResourcePool, задающего эти ресурсы. Для этого:
- Выделите нужный вам объект ResourcePool и перейдите в панель Свойства.
- Выберите из выпадающего списка Количество задано опцию Расписанием доступности.
- Введите имя ранее созданного расписания в расположенном ниже поле Расписание доступности или выберите требуемое расписание из выпадающего списка (при вводе имени вы можете пользоваться Мастером подстановки кода).
- Теперь задаваемые этим объектом ресурсы будут работать согласно созданному нами расписанию.
Если количество работающих (доступных) ресурсов может меняться (тип значения расписания не да/нет, а целое), то в таком случае нужно будет выбрать из выпадающего списка Количество задано опцию Расписанием, и все так же ввести имя расписания в расположенном ниже поле Расписание.
-
Как мы можем улучшить эту статью?
-