Javascript 为Microsoft Dynamics 365定制项目服务自动化(PSA)
我需要在PSA为每个项目实体实现的工作分解结构(WBS)中添加一个自定义列。它显示带有一些默认列的项目任务,具有Microsoft project外观(和功能)Javascript 为Microsoft Dynamics 365定制项目服务自动化(PSA),javascript,microsoft-dynamics,dynamics-365,Javascript,Microsoft Dynamics,Dynamics 365,我需要在PSA为每个项目实体实现的工作分解结构(WBS)中添加一个自定义列。它显示带有一些默认列的项目任务,具有Microsoft project外观(和功能) 此工具的问题是无法从中打开任何任务。因此,我想插入一列,允许用户这样做。这有多困难?好吧,我找到的唯一方法就是改变PSA的JS库。 这是非常危险的,因为将来执行的任何更新都可能使您的解决方案崩溃。 然而,由于我找不到解释如何执行所需操作的文档或变通方法,我决定同时向您介绍我遇到的问题和解决方案 1.-使用PSA的JS库创建解决方案,我
此工具的问题是无法从中打开任何任务。因此,我想插入一列,允许用户这样做。这有多困难?好吧,我找到的唯一方法就是改变PSA的JS库。 这是非常危险的,因为将来执行的任何更新都可能使您的解决方案崩溃。 然而,由于我找不到解释如何执行所需操作的文档或变通方法,我决定同时向您介绍我遇到的问题和解决方案 1.-使用PSA的JS库创建解决方案,我们必须使用添加现有按钮进行更改。这些是组件:
- msdyn\u/Common/Models/ProjectTask.js
- msdyn/Project/WBS/Scripts/viewmodelstaskfactory.js
- msdyn/Project/WBS/Scripts/WBSView.js
- msdyn/Project/WBS/View/ViewTaskInitializer.js
ProjectTask(实体)和原型“initFromFetchXmlResponse”,如下所示:
this.myVariableField=entity.fieldAttribute; //this in projectTask(entity)
this.myVariableField=fetchXmlEntity.fieldAttribute; //this initFromFetchXmlResponse
{
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;
}
}
我只是想创建一个到任务的链接,因此这对我来说没有必要
4.-资源的更改msdyn\Project/WBS/Scripts/viewmodelstaskfactory.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: ''
}
关于第二个函数上的列添加,可以如下所示:
this.myVariableField=entity.fieldAttribute; //this in projectTask(entity)
this.myVariableField=fetchXmlEntity.fieldAttribute; //this initFromFetchXmlResponse
{
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;
}
}