Я могу дать вам пример JSOM, чтобы сделать это:
var projContext = PS.ProjectContext.get_current();
var projects = projContext.get_projects();
var project = projects.getByGuid(projUid).get_draft();
var tasks = project.get_tasks();
var task = tasks.getByGuid(taskUid);
task.set_item(cfIntName, newValue);
var queueJob = project.update();
projContext.waitForQueueAsync(queueJob, 60,
Function.createDelegate(this, function(res) {
// Publish project here
}), function(error) {
console.error(error);
});
Это должно быть завершено (хотя я вытащил его из скрипта, поэтому проверьте обработчики успеха/неудачи, которые я обрезал)
Из памяти, копающейся в CSOM, нет вспомогательного метода set_item(cf, val) для использования, но он был похож, я думаю, что свойство устанавливается в экземпляре объекта через индексатор, например:
(код sudo С#)
var draftTask = [get task instance];
draftTask[cfInternalName] = "Some value";
и т. д.
Если это не поможет, вы всегда можете отразить ProjectServer.Client.DLL, и вы увидите внутреннюю реализацию «SetCustomFieldValue», которая не публикуется.
Надеюсь, это поможет кому-то.
person
Martin Laukkanen
schedule
05.09.2016