Вам нужно будет кэшировать данные первого. Вы можете сделать это OnLoad, например. запоминание значения атрибутов юридического лица:
function GetInitialAttributeState() {
var preImage = {};
Xrm.Page.data.entity.attributes.forEach(function(field) {
// TODO: for lookup attributes you need to do extra work in order to avoid making merely a copy of an object reference.
preImage[field.getName()] = field.getValue();
});
return preImage;
}
window.preImage = GetInitialAttributeState();
Тогда вам необходимо выполнить операцию сохранения с помощью метода Xrm.Page.data.save
. Передача ошибок обработки обратных вызовов и сброс полей, например.
Xrm.Page.data.save().then(
function() {
/* Handle success here. */
window.preImage = getInitialAttributeState();
},
function() {
/* Handle errors here. */
Xrm.Page.data.entity.attributes.forEach(function(field) {
if (field.getIsDirty()) {
field.setValue(preImage[field.getName()]);
}
});
});
Это не возможно восстановить полей формы в этом пути, используя save
событие, потому что он умирает до фактического сохранения операции, никогда после этого.
Если плагин вызывает ошибку, он будет автоматически возвращен к исходным значениям, так как значения не сохранены. также сообщите мне, является ли это настраиваемой сущностью или объектом по умолчанию? –