Надеюсь, кто-то может помочь с этим. Я знаю, как установить значение поля в форме, и оно работает в некотором роде. Мой запрос связан с тем, что он работает только в том случае, если я помещаю эту строку ниже в событие загрузки формы как строку самостоятельно.
Xrm.Page.getAttribute('cal_entrynumber').setValue(1.01);
Однако на самом деле мне нужно иметь некоторые условные проверки до того, как я установил это значение, и когда я поместил эту строку в эти условные проверки, то я заметил, что текстовое поле пустое, но если я посмотрю на значение в объекте данных, которое он делает укажите, что оно имеет значение 1.01.
alert("No. in entity:" + Xrm.Page.data.entity.attributes.get('cal_entrynumber').getValue());
Поэтому я хотел знать, может ли кто-нибудь определить меня ко всему, что потенциально может быть причиной этого... вот код, в котором строка сидит (и не работает).
var queryString = "?$select=cal_EntryNumber&$filter=cal_SafetyProgrammeNo eq '" + spNo + "'&top=1&$orderby=cal_EntryNumber desc";
SDK.REST.retrieveMultipleRecords(
"cal_operation",
queryString,
function (results) {
//alert(results.length);
if (results.length == 0) {
//var entry = 1.01;
//alert("Entry No:" + Number(entry));
Xrm.Page.getAttribute('cal_entrynumber').setValue(1.01);
}
else {
// Code to go here.
}
},
errorHandler,
function () {
// OnComplete handler
}
);
Я выяснил, почему это не работает (даже если код верен), и я отправляю свой ответ здесь, чтобы помочь кому-либо, у кого может быть такая же проблема.
Поле Entry Number получает фокус при загрузке формы, и это освобождает поле его значения (javascript set). Я исправил это, поставив другое поле текстового поля в качестве первого поля в форме, и теперь в поле отображается значение javascript (никаких изменений кода не требуется).
Я подозреваю, что это сработало, когда я сам поместил код в событие загрузки формы, так как он запускается синхронно, но когда я помещаю ту же строку кода в функцию возврата назад, что и выполняет асинхронно, она представляет эту проблему. Надеюсь, это поможет кому-то еще с этой проблемой.
Это должно работать.
Xrm.Page.getAttribute("fieldname").setValue(parseFloat(eval(1.01)));
Или это также должно работать.
Xrm.Page.getAttribute("fieldname").setValue("1.01");
Рекомендации:
http://mscrmtutorials.blogspot.com/2015/10/get-or-set-values-of-all-data-types.html