Обсуждение примера на официальном Форуме

Часто в проектах возникают ситуации, когда одна и та же работа не может производиться всегда по одному и тому же расписанию в течение всего проекта. Например, в работающем офисном здании возникла необходимость прокладки новых коммуникаций через все этажи и подвалы — компания устанавливает систему безопасности, дублирующую силовую проводку или что-то подобное. Понятно, что в готовых зданиях подобного рода существуют специальные закладные для будущих систем, но для примера будем считать что их нет.
Бригада монтажников должна произвести устройство рабочих отверстий в стенах под новую систему по всему офисному зданию. Работы производятся при помощи перфоратора. Все стены кроме центральной зоны здания и подвалов легкие (перегородки), в центральной зоне здания и ниже нулевой отметки — капитальные. Проходку легких стен монтажник осуществляет за 10 минут, поэтому работы можно производить во время рабочего дня сотрудников офисов, делая для них небольшие перерывы. Шумовая нагрузка кратковременная. Проходку капитальных стен в центральной зоне здания и подвале монтажник осуществляет за 50 минут. Шумовая нагрузка высокая и долговременная, производить работы в присутствии сотрудников офисов запрещено. Соответственно в данных зонах здания производить работы можно только в ночное время или в выходные (если работы в выходные на объекте разрешены).
Для моделирования данного примера создадим в
Гантте работ или
Таблице операций пять операций: Работа офисов, Проходка стен 1, 2, 3, 4. Плановую длительность
Операции Работа офисов поставим 20 дней. Допустим, мы планируем успеть провести все работы за месяц.
Операция Работа офисов в нашей модели будет присутствовать исключительно для контроля — как работы по проходке проходят по отношению к офисному расписанию. Офисные сотрудники у нас будут работать с 9 до 17 часов кроме субботы и воскресения (перерывы на обед опустим). Ну а
Операциям проходки поставим длительность, например по 6 дней. С
Ресурсами на данном этапе работать не будем, для простоты только с операциями
Типа ДПГ Длительность. Будем считать, что даже если все операции проходки начнутся одновременно, монтажников у нас хватает.
Связи между операциями расставлять тоже не будем — Спайдер должен расставить их нужным образом, исходя из исходных условий, и рассчитать максимально сжатое расписание.
Теперь создадим
Календари нашим
Операциям. Их необходимо создать два: первый
Календарь будет описывать офисную работу — этот календарь понадобится для
Операций, описывающих работу офисных сотрудников и его же мы будем использовать в случае работы монтажников в рабочее время офисов, второй
Календарь необходим для тех работ по проходке, которые не будет возможности производить одновременно с работой офисов. Начинаем с таблицы
Недели. Создаем основу для наших будущих
Календарей.
Пустая неделя (не имеющая рабочего времени) нам понадобится для моделирования
Календарных исключений, т.е. специальных периодов, когда работы не производятся. Это обычно праздники, каникулы, технологические окна, специальные перерывы в работе и т.д.
Создадим
Неделю 5д8ч. Эта
Неделя описывает работу офисных сотрудников — 5 дней по 8 часов с двумя выходными. При желании можете добавить перерывы на обед.
Последняя
Неделя, которая нам понадобится — это
Неделя, описывающая ночные работы монтажников. Будем считать, что они могут выйти в 22.00 и производить работы, например до 6.00.
Внесем еще одно ограничение. Допустим, в нашем офисном центре в выходные дни вообще закрывается допуск для любых работников. Таким образом, в неделе у монтажников тоже получаются два выходных дня — суббота и воскресенье. В пятницу в 22.00 они уже не выходят (руководитель работ решил не выводить исполнителей на 2 часа), а в понедельник с 00.00 работы начинать могут.

Обратите внимание как описано рабочее время в данной
Неделе — у каждого дня описываются периоды работы именно в этот день. Если мы описываем понедельник, то описываем все периоды работы, попадающие в 24 часа от 00.00 до 24.00 понедельника.
На основе сформированных
Недель соберём
Календари. Перейдем в таблицу
Календари и создадим там два соответствующих
Календаря: на основе
Недели 5д8ч и на основе
Недели ночь. Поскольку по условиям нашего примера офисный центр открыт для работы для всех одинаково, независимо от выполняемой задачи, то считаем, что
Календарные исключения (например, праздники) для всех одинаковые. Поэтому в оба
Календаря добавляем
Календарные исключения, уже имеющиеся в системе по умолчанию (основные праздники).
Календари готовы. Можно их назначить на
Операции. Для начала назначим всем
Операциям Календарь 5д8ч. Все
Операции по проходке производятся во время работы офисов.
Произведем
Расчет расписания без ограничения на ресурсы. В настройках расчета включим
Детализацию сроков, чтобы наглядно увидеть рабочее время на
Гантте работ.
Получилось расписание работ для указанных условий. Все операции проходки исполнены одновременно за 6 дней в рабочее время офисов.
Усложняем задачу. Допустим теперь, что
Операции Проходка 3 и Проходка 4 — это как раз работы в центре здания и подвале. Их в дневное рабочее время производить нельзя, только ночью. Если в свойствах операции в ночное время ничего не меняется (другое оборудование, дополнительные затраты на освещение, монтаж оснастки, другая стоимость работы, иная производительность и т.д.), то для этого достаточно переключить данным операциям календарь на
Календарь ночь.
Производим расчет расписания.
Работы в центральной зоне здания и в подвале производятся в ночное время. Мы не мешаем офисным работникам во время рабочего дня.
А теперь внесем еще одно ограничение — по
Ресурсам. Допустим, нам для исполнения работ выделили всего двух монтажников. Одного дневной смены, одного ночной. Даже если это один человек или наоборот восемь, которые выходят на работу по очереди в разные смены, для них все равно необходимо сделать две записи в
Таблице ресурсов: Монтажник день и Монтажник ночь. Соответственно с
Календарями 5д8ч и
ночь. Создадим в
Таблице ресурсов соответствующие записи. Доступное
Количество и того и другого — 1, т.е. в смену мы можем выпустить только одного.
Теперь назначим на
Операции созданные
Ресурсы. На дневные проходки — Монтажника день, на ночные — Монтажника ночь.
Здесь необходимо внимание — Операция и Ресурс, назначенный на нее, должны обязательно иметь пересекающееся время для производства работ. Если у Ресурса и Операции пересекающегося времени нет, то есть работы производить невозможно, Спайдер сообщит об ошибке.
Произведем расчет расписания, включив
Детализацию сроков. Картина изменилась — из-за наличия всего одного монтажника днем или ночью, соответствующие работы придется делать последовательно. Спайдер выровнял расписание.

Обратите внимание — в данном примере не использовались
Связи между
Операциями. Расстановку
Операций при ограниченности
Ресурсов здесь осуществляет Спайдер. Это удобно использовать, если существует вероятность изменения в количестве монтажников. Как только появятся новые монтажники, Спайдер начнет расставлять
Операции, раньше шедшие последовательно из-за нехватки
Ресурсов, параллельно. И наоборот. Если Вы сразу свяжете
Операции последовательно
Связями Финиш-Старт, то параллельно они уже не встанут, даже если монтажников будет избыток.
Если в подобной ситуации Вам, например, не подходит очередность производства работ, предложенная программой, можете воспользоваться свойством
Операций Приоритет. Только не забудьте в свойствах
Расчета расписания с выравниванием ресурсов включить чекбокс
Учитывать приоритеты операций.
В большом проекте может быть весомое количество подобных
Операций. Естественно желание максимально автоматизировать процесс переключения групп
Операций с одного
Календаря на другой и минимизировать при этом ошибки. Пока нам помимо переключения
Календаря на
Операции с дневного на ночной придется не забывать, что и
Ресурс ее исполняющий тоже должен быть заменен с дневного на ночной. Так же и обратно.
Для этого усовершенствуем наши
Назначения Ресурсов. Сделаем назначения универсальными. Добавим во все
Операции проходки и ночного и дневного монтажника, не забывая создавать для них отдельные
Команды, чтобы Спайдер не искал между ними пересекающегося рабочего времени. После такого усовершенствования при переключении
Операции с одного
Календаря на другой о
Ресурсах можно не вспоминать. Если
Операция дневная — исполнять ее выйдет дневной монтажник, после переключения на ночь работы выполнит ночной монтажник.
Примеры
Пример модели в Spider Project