Формулировка проблемы: необходим интерфейс для настройки шаблона проекта.
Связанные задачи: 0156, часть 1, 0156, часть 2, 0156, часть 3, 0156, часть 4.
Общее решение по «Шаблонам проектов» поделено на 5 задач. В данной задаче рассмотрены все интерфейсные задачи по настройке шаблона проекта в основном приложении.
Решение:
Во-первых, необходимо доработать эргономику следующих диалогов в модуле "Проекты":
Создание / редактирование проекта;
Настройки проекта, созданного по шаблону (вкладка "Общее").
Создание / редактирование проекта
Необходимо внести следующие изменения в диалоги создания и редактирования проекта:
добавить лейбл "Название" к полю с названием проекта;
добавить звездочки
к полям, обязательным для
заполнения:
Название;
Сроки / Начало + Длительность;
Код.
Дополнительно только для диалога создания проекта:
добавить выпадающий список Шаблон проекта
и в
качестве значений списка отображать:
все нескрытые шаблоны проектов, настроенные в Конфигураторе;
"Нет" (выбран по умолчанию);
при выборе любого шаблона проекта - подставлять в поле "Код" то значение, которое было настроено согласно выбранному шаблону в Конфигураторе;
никогда не отображать "Дополнительные поля".
Настройки проекта, созданного по шаблону (вкладка "Общее")
Во вкладке "Общее" после поля "Паспорт проекта"
необходимо добавить нередактируемое поле
Шаблон проекта
со значением шаблона, выбранного
для данного проекта.
При отсутствии у проекта шаблона необходимо не отображать данное поле.
Примечание
Внешний вид поля должен быть аналогичным полям "Ссылка на проект".
Во-вторых, при сохранении проекта по шаблону заполнять необходимые значения, а также значения по умолчанию, согласно выбранному шаблону.
Что касается установлении дат мероприятий / проекта, то необходимо придерживаться следующих особенностей:
Мероприятию, не имеющему зависимости, присваивать в качестве даты начала дату начала самого проекта, выбранную пользователем, создающим проект.
Определять даты начала / завершения мероприятия, имеющего зависимость, начиная с мероприятия с уже проставленными датами (мероприятие без зависимостей), согласно типу зависимости.
При наличии 2х и более зависимостей для одного мероприятия необходимо присваивать мероприятию максимальную пару дат.
Пример присвоения дат начала / завершения проекта по шаблону
Рассмотрим данную схему определения дат проекта по шаблону на следующем примере:
Структурный номер мероприятия | Длительность | Зависит (настройка в Конфигураторе) |
---|---|---|
1 | ||
1.1 |
7 | |
1.2 |
14 |
SF (1.1; 7) |
1.3 |
3 | |
1.4 |
7 |
FS (1.3; 21) |
1.5 |
14 |
SF (1.4; -3) FS (1.7; 7) |
1.6 |
10 |
FF (1.7; 14) |
1.7 |
14 |
SS (1.8; 0) |
1.8 |
3 |
В качестве даты начала проекта задаем 29.6 и определяем даты начала / завершения мероприятий без зависимостей.
При этом условимся, что календарь системы имеет 5ти дневное представление рабочих дней (понедельник - пятница включительно) и не имеет иных выходных / праздничных дней на период, охватываемый данным примером.
Для определения алгоритма расстановки дат обозначаем граф зависимостей:
Таким образом, можно разделить данный проект на три ветки:
1.1 - 1.2
1.3 - 1.4
1.6 - 1.8
Так как мероприятие 1.5 имеет две зависимости, необходимо определять его сроки отдельно и после заполнения остальных дат.
Структурный номер мероприятия | Длительность | Начало | Завершение | Зависит (настройка в Конфигураторе) |
---|---|---|---|---|
1.1 |
7 |
29.6 |
7.7 | |
1.2 |
14 |
SF (1.1; 7) |
Структурный номер мероприятия | Длительность | Начало | Завершение | Зависит (настройка в Конфигураторе) |
---|---|---|---|---|
1.3 |
3 |
29.6 |
1.7 | |
1.4 |
7 |
FS (1.3; 21) |
Структурный номер мероприятия | Длительность | Начало | Завершение | Зависит (настройка в Конфигураторе) |
---|---|---|---|---|
1.6 |
10 |
FF (1.7; 14) | ||
1.7 |
14 |
SS (1.8; 0) | ||
1.8 |
3 |
29.6 |
1.7 |
Структурный номер мероприятия | Длительность | Начало | Завершение | Зависит (настройка в Конфигураторе) |
---|---|---|---|---|
1.5 |
14 |
SF (1.4; -3) FS (1.7; 7) |
Далее определим даты начала / завершения для каждой ветки.
1.1 - 1.2
1.2 (SF (1.1; 7)):
Завершение: 29.6 + 7 раб. дн. = 7.7
Начало: 7.7 - 14 раб. дн. = 18.6
1.3 - 1.4
1.4 (FS (1.3; 21)):
Начало: 1.7 + 21 раб. дн. = 31.7
Завершение: 31.7 + 7 раб. дн. = 10.8
1.6 - 1.8
1.7 (SS (1.8; 0)):
Начало: 27.7 - 0 раб. дн. = 27.7
Завершение: 27.7 + 14 раб. дн. = 16.7
1.6 (FF (1.7; 14)):
Завершение: 16.7 + 14 раб. дн. = 5.8
Начало: 5.8 - 10 раб. дн. = 23.7
1.5
1.5 (SF (1.4; -3)):
Завершение: 31.7 - 3 раб. дн. = 27.7
Начало: 27.7 - 14 раб. дн. = 8.7
1.5 (FS (1.7; 7)):
Начало: 16.7 + 7 раб. дн. = 28.7
Завершение: 28.7 + 14 раб. дн. = 14.8
Присваиваем данному мероприятию более позднюю пару дат - 28.7 - 14.8.
Таким образом, финальные сроки проекта в основном приложении выглядят следующим образом:
Структурный номер мероприятия | Длительность | Начало | Завершение | Зависит |
---|---|---|---|---|
1 |
41 |
18.6 |
14.8 | |
1.1 |
7 |
29.6 |
7.7 | |
1.2 |
14 |
18.6 |
7.7 |
1.1 |
1.3 |
3 |
29.6 |
1.7 | |
1.4 |
7 |
31.7 |
10.8 |
1.3 |
1.5 |
14 |
28.7 |
14.8 |
1.4, 1.7 |
1.6 |
10 |
23.7 |
5.8 |
1.7 |
1.7 |
14 |
29.6 |
16.7 |
1.8 |
1.8 |
3 |
29.6 |
1.7 |
При этом из-за настроенной зависимости мероприятия 1.2 дата начала проекта будет меньше, чем установленная пользователем, создающим проект.