Настройка Project Service Automation (PSA) для Microsoft Dynamics 365 - PullRequest
0 голосов
/ 13 июня 2018

Мне нужно было добавить настраиваемый столбец в структуру разбивки работ (WBS), которую PSA реализует для каждого объекта проекта.Он показывает задачи проекта с некоторыми столбцами по умолчанию, с внешним видом (и функциональностью) Microsoft Project.

This is an example of the WBS of PSA for Dynamics

Проблема с этим инструментом заключается в том, что вы не можетеоткройте любую задачу из него.Итак, я хотел вставить столбец, который позволяет пользователю сделать это.Насколько это сложно?

1 Ответ

0 голосов
/ 13 июня 2018

Ну, единственный способ, который я нашел, это изменить библиотеки 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;
                          }

            }
...