3.1.3 Алгоритм расчета связей ГПР

В графике производства работ предусмотрена возможность выстраивать связи между работами и на основании этих связей производить расчет даты начала/окончания выполнения каждой работы. При этом важно помнить, что связи между группами работ/между группой и работой выставить нельзя. Пользователь выставляет связь с предшествующей работой, при этом последователи выставляются автоматически.

При построении графика существует два типа дат:

- Плановые, пользователь выставляет самостоятельно (руками);

- Расчетные, рассчитываются в зависимости от выставленных связей (играют роль диапазона допустимых значений плановых дат).

Начало и окончание работы могут быть связаны с любым количеством предшествующих работ и их датами начала или окончания, формируя следующие типы связей:

  1. ОН - Работа начнется после окончания другой работы;
  2. НО - Работа окончиться после начала другой работы;
  3. ОО - Работа окончится после окончания другой работы;
  4. НН - Работа начнется после начала другой работы.

 

При расчете дат начала/окончания работ система руководствуется правилами:

  1. Плановая дата начала и расчетная всегда совпадают (в случае, если есть расчетная дата начала);
  2. Если есть только расчетная дата окончания, тогда плановая дата окончания совпадает с расчетной, а плановая дата начала рассчитывается в зависимости от длительности;
  3. При изменении даты начала дата окончания работы рассчитывается по формуле: плановая дата начала + длительность;
  4. Расчетная дата окончания работы может не совпадать с плановой датой окончания работы, если есть зависимость даты окончания от других работ;
  5. Если работа зависит от нескольких предыдущих работ, то в качестве расчетной даты (начала или окончания) всегда будет браться максимальная дата (начала или окончания) связанных предыдущих работ;
  6. При наличии нескольких типов связей к одной работе, система просчитывает вариант расчетной даты по каждой связи и выбирает ту, которая максимально дальняя по времени;
  7. При расчете дат по умолчанию всегда прибавляется один день (данное правило работает, когда запаздывание/опережение не выставлено (т.е. равно 0 дней), а также когда выставлено запаздывание/опережение), таким образом: Дата последующей = Дата предыдущей + 1 + длина связи (запаздывание/опережение);
  8. Система обеспечивает автоматическую корректировку смещений по всем связанным работам в момент редактирования даты начала таким образом, что максимальная из всех расчетных дат будет равна новой плановой дате начала. Таким образом, при ручном изменении даты начала работы, при наличии предшествующих работ, меняется опережение/запаздывание в выставленных связях с предыдущими работами на разницу дней между старой плановой датой и новой плановой датой, при этом плановые даты предшествующих работ не меняются. НО! Если при ручном изменении плановой даты начала новая дата совпадает с расчетной, то опережение/запаздывание в выставленных связях не измениться, т.к. нет противоречий в алгоритме расчета;
  9. При изменении даты окончания работы автоматически меняется длительность работы, сохраняя указанную ранее дату начала, это единственный сценарий, при котором продолжительность работы меняется автоматически!
  10. При изменении плановой даты начала/окончания какой-либо работы графика, у которой есть зависимые работы, перед применением система задает вопрос “Даты зависимых работ будут изменены с учетом связей. Продолжить?”. В случае отрицательного ответа от пользователя изменения отменяются, в случае согласия, производится пересчет дерева всех зависимых от этой работы работ, с учетом правил, указанных выше;
  11. Запрещено выставлять цикличные связи, когда работа №1 зависит от работы №2, Работа №2 зависит от работы №3, а работа №3 зависит от работы №1.