Задача [PM3]: Дополнительные поля в проектах и системные показатели на их основе

Формулировка проблемы: необходима возможность добавлять произвольные поля к проектам и портфелям, вводить туда числовые и текстовые данные, а также агрегировать их значения для групповых мероприятий и для проекта целиком. Для числовых значений необходимо генерировать по системному показателю на проект/портфель.

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

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

Код Название Значения

name

Название

Произвольная текстовая строка

type

Тип

Один из:

  • number — числовое значение

  • text — произвольная строка

  • dictionary — значение из справочника

aggregate

Тип пересчёта

Один из:

  • sum — сумма

  • average — среднее арифметическое

Имеет смысл только для записей типа number

dictionary_value_field

Поле со значением записи справочника

Идентификатор поля справочника, которое содержит значение записи. Имеет смысл только для записей типа dictionary

dictionary_label_field

Поле с подписью записи справочника

Идентификатор поля справочника, которое содержит подпись записи. Имеет смысл только для записей типа dictionary

measure_code

Показатель

Произвольный код показателя, который будет использован для генерации системного показателя на проект и портфель. Итоговый код системного показателя будет получен следующим образом: код-портфеля-или-проекта_значение measure_code Имеет смысл только для записей типа number и dictionary с полем значения — числом

Одна запись данного справочника определяет одно дополнительное поле, которое можно добавить к:

Дополнительные поля, принадлежащие портфелю, автоматически добавляются к вновь добавляемым в этот портфель проектам. Если в каких-либо проектах отсутствует поле, присутствующее в объемлющем их портфеле, то эти проекты просто не участвуют в расчёте значения этого поля для портфеля.

Кроме этого, необходимо произвести изменения в интерфейсе настройки портфеля: пункты контекстного меню «Изменить» и «Права» заменяются на общий пункт «Настройки», который вызывает диалог с вкладками «Настройки» (содержимое диалога «Изменить»), «Права» (содержимое диалога «Права») и «Дополнительные поля» (новая функциональность).

Рисунок 276. Настройки портфеля

Настройки портфеля

Рисунок 277. Настройки портфеля

Настройки портфеля

Рисунок 278. Права на портфель

Права на портфель

Добавить/удалить дополнительные поля для проекта (и портфеля), а также настроить порядок их отображения можно на вкладке «Дополнительные поля».

Рисунок 279. Дополнительные поля в проекте

Дополнительные поля в проекте

Отображение дополнительных полей в общей таблице проекта можно настроить на вкладке «Внешний вид» (дополнительные поля вставляются после всех основных, но перед полем «Прогресс»).

Рисунок 280. Внешний вид проекта с дополнительными полями

Внешний вид проекта с дополнительными полями

Значения дополнительных полей в проекте для обычных мероприятий можно просматривать и редактировать только в диалоге редактирования мероприятия (смотреть можно в таблице проекта):

Рисунок 281. Редактирование дополнительных полей мероприятия

Редактирование дополнительных полей мероприятия

Для групповых мероприятий в таблице проекта можно только смотреть рассчитанное значение (для полей типа number и dictionary с полем значения — числом). Аналогично, значения полей для портфеля можно увидеть в общей информации о портфеле:

Рисунок 282. Портфель проектов с дополнительными полями

Портфель проектов с дополнительными полями