Проблема: Невозможно обновить MSDYN_ResourceAssignment через Portal API (Power Pages)C#

Место общения программистов C#
Ответить
Anonymous
 Проблема: Невозможно обновить MSDYN_ResourceAssignment через Portal API (Power Pages)

Сообщение Anonymous »

В настоящее время я разрабатываю портал Power Pages, который взаимодействует с Dataverse Entines через веб -API. Одним из наших требований является обновление поля MSDYN_PlannedWork в таблице MSDYN_ResourceAssignment, используя запрос на патч.
Однако все попытки обновить эту сущность (даже при использовании действительного токена CSRF, правильных заголовков и привилегий администратора) приводятся к следующей ошибке: < /p>

< /p>

✅ Что пробовали: < /p>
PATCH request using Portal's Web API (Power Pages)
const handleSave = () => {
setLoading(true);
const updates = [];
const token = getPortalToken(); // CSRF token for Power Pages API

if (!token) {
alert("CSRF token not found. Please refresh the page and try again.");
setLoading(false);
return;
}

Object.entries(data).forEach(([proj, tasks]) => {
tasks.forEach(task => {
const recordId = task._originalRecord?.msdyn_resourceassignmentid;
if (!recordId) return;

const updatedJSON = task.hours.map((h, i) => {
const startDate = new Date(months.year, months.month, 1);
const endDate = new Date(startDate);
endDate.setDate(startDate.getDate() + 1);

return {
Start: `\/Date(${startDate.getTime()})\/`,
End: `\/Date(${endDate.getTime()})\/`,
Hours: h
};
});

const updateData = {
msdyn_plannedwork: JSON.stringify(updatedJSON) // Required by Web API
};

console.log("Updating record:", recordId, updateData);

updates.push(
new Promise((resolve, reject) => {
window.webapi.safeAjax({
type: "PATCH",
url: `/_api/msdyn_resourceassignments(${recordId})`,
contentType: "application/json",
headers: {
Accept: "application/json",
"X-Requested-With": "XMLHttpRequest",
"__RequestVerificationToken": token
},
data: JSON.stringify(updateData),
success: function () {
resolve({ id: recordId, success: true });
},
error: function (xhr, status, errorThrown) {
console.error(`Failed to update record ${recordId}`, {
status,
errorThrown,
responseText: xhr.responseText
});
reject({ id: recordId, success: false, error: xhr.responseText });
}
});
})
);
});
});

Promise.allSettled(updates)
.then(results => {
const failures = results.filter(r => r.status === "rejected");
if (failures.length) {
alert("Some updates failed. Check the console for details.");
} else {
alert("All updates saved successfully.");
}
})
.catch(e => {
console.error("Unexpected error during save:", e);
alert("Unexpected error occurred while saving.");
})
.finally(() => setLoading(false));
};

**Power Automate Flow (with system user context)
Custom Plugin (running as SYSTEM / admin)
Tried all above with impersonation, proper permissions, and correct JSON structure for msdyn_plannedwork**

Confirmed all values and data types match expected schema
< /code>
💡 Контекст < /p>
Пример использования включает распределение времени по ресурсам проекта через портал Power Pages, где пользователи отправляют свое запланированное рабочее время. Нам нужно отразить эти данные в MSDyn_ResourCeasSignment.msdyn_plannedwork поле. и т. Д.)>

Подробнее здесь: https://stackoverflow.com/questions/796 ... ower-pages
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»