Ну, единственный способ, который я нашел, это изменить библиотеки JS PSA.Это очень опасно, потому что любое обновление, выполненное в будущем, может привести к сбою вашего решения.Однако, так как я не мог найти документацию или обходные пути, объясняющие, как выполнить то, что мне нужно, я решил донести до вас обоих проблему и решение, с которым я столкнулся одновременно.
1.- Создатьрешение с библиотеками JS PSA мы должны изменить, используя кнопку Add Existing.Это компоненты :
- msdyn_ / Common / Models / ProjectTask.js
- msdyn_ / Project / WBS / Scripts / ViewModelTaskFactory.js
- msdyn_ / Project / WBS / Scripts / WBSView.js
- msdyn_ / Project / WBS / View / ViewTaskInitializer.js
2.- Поскольку эти файлы являются критическими для PSAпроизводительность, экспортируйте его как неуправляемое решение .Для того, чтобы иметь какой-то резервный файл, на всякий случай.
3.- Изменения в ресурсе msdyn_ / Common / Models / ProjectTask.js :
Здесь отображаются данные между сущностью и нашей моделью представления.Если поле, которое вы хотите отобразить, является настраиваемым полем объекта ProjectTask, вы должны присвоить его значение переменной JS, которая создается в функции
ProjectTask (entity) и прототипе "initFromFetchXmlResponse", например так:
this.myVariableField=entity.fieldAttribute; //this in projectTask(entity)
this.myVariableField=fetchXmlEntity.fieldAttribute; //this initFromFetchXmlResponse
Я просто хотел создать ссылку на задачу, поэтому мне это было не нужно.
4.- Изменения в ресурсе msdyn_ / Project / WBS / Scripts/ViewModelTaskFactory.js:
Этот файл содержит функции, которые создают viewModelTask, который является своего рода заполнением строки значениями задачи.Для каждого столбца, который мы хотели бы добавить в WBS, нам нужно будет вставить несколько строк в функции «createDefaultViewModelTask» и «createViewModelTaskFromProjectTask».
viewModelTask.myDefaultValueInColumn="";//createDefaultViewModelTask
viewModelTask.myActualValueInColumn=projectTask.Attribute;//createViewModelTaskFromProjectTask
5.- Изменения в ресурсе msdyn_/Project/WBS/View/ViewTaskInitializer.js: Здесь определяются сами столбцы.Нам нужно добавить некоторый код в функцию ViewTaskInitializer и объявление полей «defineTask»:
ViewTaskInitializer.taskNameColumn = 'taskAttributeName';//ViewTaskInitializer
{ name: ViewTaskInitializer.taskNameColumn, type: 'string' }//defineTask
6.- Изменения в ресурсе msdyn_ / Project / WBS / Scripts / WBSView.js : На этом JS находятся файлы, которые выполняют функции «рисования строк».Нам нужно изменить функцию gridConfiguration и добавить наш столбец в метод this.Ext.create.Для gridConfiguration мы добавим этот массив в серию:
{
id: ViewTaskInitializer_1.default.OurColumnName,
label: ''
}
Что касается добавления столбцов во второй функции, оно может выглядеть следующим образом:
{
header: 'OurColumnHeader',
align: 'center',
dataIndex: ViewTaskInitializer_1.default.OurColumnName,
width: 800,
sortable: true,
resizable: true,
readOnly: false,
renderer: function (value, record) {
//here is the code which returns the value
// you can access the current task is trying to paint like this:
var task=record.record.data;
}
}