08.01.2014, 02:05 | #1 |
Участник
|
Поочередное выполнение запросов в JS
Есть проблема, не знаю, как решить.
На форме задачи вызывается JS-обработчик, который делает 2 действия: обновляет значение поля и выполняет запрос на смену состояния сущности Код: Xrm.Page.getAttribute(fieldName).setValue("some text"); XrmServiceToolkit.Soap.SetState("task", id, 0, 3); // попытка сохранения изменений Xrm.Page.data.entity.save(); Подскажите, как можно сию неприятность обойти? |
|
08.01.2014, 03:00 | #2 |
Чайный пьяница
|
Советую вам разобраться с фреймворком, который используете и заставить его выполнять запрос синхронно - т.е. не идти дальше до тех пор, пока обращение к эндпоинту не вернёт результат.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
08.01.2014, 03:33 | #3 |
Участник
|
В описании к этой функции в либе сказано, что она выполняется синхронно, если не указана callback функция. Можно было бы конечно в неё перенести часть логики, которая сейчас находится в другом месте, но попытка написать
Код: XrmServiceToolkit.Soap.SetState("task", id, 0, 3, TestCallback); Uncaught Error: No response received from the server. |
|
08.01.2014, 19:17 | #4 |
Участник
|
Вы не можете:
1) Вы не можете изменить статус а потом сохранить, потому что у вас может быть статус "закрыта" и тогда любые изменения отобьются; 2) Вы не можете запустить сохранение, а после запустить изменение статуса через JS (поправочка в 2013 такое уже можно делать) Вы можете: 1) Вы можете это перенести весь функционал на плагин, БП или сборку; 2) Вы можете провести апдейт всех измененных полей через SOAP или REST запрос после чего изменить статус и просто закрыть форму (Xrm.Page.ui.close(); ну и может еще надо будет сделать такое). |
|
08.01.2014, 19:31 | #5 |
Участник
|
|
|
09.01.2014, 11:31 | #6 |
Участник
|
Да там появилась функция обратного вызова:
Цитата:
Saves the record asynchronously with the option to set callback functions to be executed after the save operation is completed.
JScript Copy Code Xrm.Page.data.save().then(successCallback, errorCallback) Parameters The successCallback and errorCallback functions are executed depending on whether an error is returned. The successCallback will not have any arguments passed to it. It will simply be called if the operation succeeds. The errorCallback will be passed an object with the following properties: errorCode Type: Number. The error code. message Type: String. A localized error message. Remarks This method is only available for Updated Entities. |
|
|
За это сообщение автора поблагодарили: vasya-serega (1). |
25.01.2014, 19:16 | #7 |
Участник
|
Цитата:
JScript Copy Code
Xrm.Page.data.save().then(successCallback, errorCallback) |
|