Формулировка проблемы: необходима возможность добавлять произвольные поля к проектам и портфелям, вводить туда числовые и текстовые данные, а также агрегировать их значения для групповых мероприятий и для проекта целиком. Для числовых значений необходимо генерировать по системному показателю на проект/портфель.
Решение: Необходимо реализовать добавление произвольных полей для проектов и портфелей следующим образом:
Поля, которые можно добавлять к проектам и портфелям в качестве
дополнительных, выбираются из записей общего справочника
pm_custom_fields
. Этот справочник имеет следующие
поля:
Код | Название | Значения |
---|---|---|
name |
Название |
Произвольная текстовая строка |
type |
Тип |
Один из:
|
aggregate |
Тип пересчёта |
Один из:
Имеет смысл только для записей типа number |
dictionary_value_field |
Поле со значением записи справочника |
Идентификатор поля справочника, которое содержит значение записи. Имеет смысл только для записей типа dictionary |
dictionary_label_field |
Поле с подписью записи справочника |
Идентификатор поля справочника, которое содержит подпись записи. Имеет смысл только для записей типа dictionary |
measure_code |
Показатель |
Произвольный код показателя, который будет использован для генерации системного показателя на проект и портфель. Итоговый код системного показателя будет получен следующим образом: код-портфеля-или-проекта_значение measure_code Имеет смысл только для записей типа number и dictionary с полем значения — числом |
Одна запись данного справочника определяет одно дополнительное поле, которое можно добавить к:
портфелю — для портфеля имеет смысл добавлять только числовые
поля и поля, их значение будет рассчитано на основе таких же
дополнительных полей во вложенных в портфель проектах и
портфелях, способом, указанным в поле
aggregate
.
Дополнительные поля, принадлежащие портфелю, автоматически добавляются к вновь добавляемым в этот портфель проектам. Если в каких-либо проектах отсутствует поле, присутствующее в объемлющем их портфеле, то эти проекты просто не участвуют в расчёте значения этого поля для портфеля.
проекту — можно добавлять поля любого типа, но для групповых мероприятий и всего проекта целиком будут рассчитаны только значения полей типа number и dictionary с полем значения — числом.
Кроме этого, необходимо произвести изменения в интерфейсе настройки портфеля: пункты контекстного меню «Изменить» и «Права» заменяются на общий пункт «Настройки», который вызывает диалог с вкладками «Настройки» (содержимое диалога «Изменить»), «Права» (содержимое диалога «Права») и «Дополнительные поля» (новая функциональность).
Добавить/удалить дополнительные поля для проекта (и портфеля), а также настроить порядок их отображения можно на вкладке «Дополнительные поля».
Отображение дополнительных полей в общей таблице проекта можно настроить на вкладке «Внешний вид» (дополнительные поля вставляются после всех основных, но перед полем «Прогресс»).
Значения дополнительных полей в проекте для обычных мероприятий можно просматривать и редактировать только в диалоге редактирования мероприятия (смотреть можно в таблице проекта):
Для групповых мероприятий в таблице проекта можно только смотреть
рассчитанное значение (для полей типа number
и
dictionary
с полем значения — числом).
Аналогично, значения полей для портфеля можно увидеть в общей
информации о портфеле: