Xrm.WebApi
методы всегда асинхронные, он возвращает объект Promise браузера и возвращает результат в асинхронном режиме.Поэтому, когда вы хотите, чтобы что-то выполнялось в зависимости от результата обратного вызова, переместите его внутрь.
Точно так же .then
помогает вам упорядочить выполнение кода.Не уверен, как очистка кэша работает случайным образом, но сделал пару изменений.Вы можете поставить точки останова / отладки, чтобы увидеть их в действии или просто предупредить.
Xrm.WebApi.retrieveMultipleRecords("saft_bpf_isd_opportunities","fetchXml= " + fetchXml).then(
function success(result) {
debugger;
alert("existed value ==> "+formContext.getAttribute("saft_activestage").getValue());
alert("new value ==> "+result.entities[0]._activestageid_value);
formContext.getAttribute("saft_activestage").setValue(result.entities[0]._activestageid_value);
formContext.data.save(70).then(function (result) {
alert("after save");
formContext.data.process.setActiveProcess(idProcess_ISD, function (result) { alert("setActiveProcess completed"); });
});
},function(error) {
console.log(error.message);
}
);