21.08.2013, 11:53 | #1 |
Участник
|
Нужно экспертное мнение по the REST SDK and JSON2
Добрый день!
Помогите прокомментировать скрипт и помочь разъяснить что не так. Нет рядом человека, кто мог бы помочь. Спасибо. У меня есть сущность new_request, на сущности есть Lookup new_bonus_malus, я повесил этот скрипт на событие Onchange new_bonus_malus, и хочу чтобы из Lookup new_bonus_malus копировались значения атрибута new_test и присваивалось полю new_testfield сущности new_request. Для реализации задачи надо подключить библиотеку json2.js - подключил. Хочется, чтобы вы на этом примере помогли мне понят в каком направлении двигаться дальше. Спасибо. function getServerUrl() { // From CrmRestKit.js var localServerUrl = window.location.protocol + "/" + window.location.host; var context = parent.Xrm.Page.context; if (context.isOutlookClient() && !context.isOutlookOnline()) { return localServerUrl; } else { var crmServerUrl = context.getServerUrl(); crmServerUrl = crmServerUrl.replace(/^(http|https):\/\/([_a-zA-Z0-9\-\.]+)([0-9]{1,5}))?/, localServerUrl); crmServerUrl = crmServerUrl.replace(/\/$/, ""); } return crmServerUrl; } function Lookup_Changed(new_test, new_bonus_malus, callbackId, columns) { var serverUrl = Xrm.Page.context.getServerUrl(); var ODataPath = serverUrl + "/XRMServices/2011/OrganizationData.svc"; var lookup = Xrm.Page.data.entity.attributes.get(new_bonus_malus).getValue(); if (lookup===null) { return false; } var id = lookup[0].id; if (id == null) { return false; } var retrieveReq = new XMLHttpRequest(); var url = ODataPath + "/"+entityName+"Set(guid'" + id + "')"; if (columns !== undefined && columns !== null) { url = url + "?$select=" + columns.join(','); } retrieveReq.open("GET", url, true); retrieveReq.setRequestHeader("Accept", "application/json"); retrieveReq.setRequestHeader("Content-Type", "application/json; charset=utf-8"); retrieveReq.onreadystatechange = function () { if (this.readyState == 4 /* complete */) { if (this.status == 200) { var data; var jData; jData = JSON.parse(this.responseText); if (jData && jData.d && jData.d.results && jData.d.results.length > 0) { data = jData.d.results[0]; } else if (jData && jData.d) { data = jData.d; } if (data == null) { return; } retrieveReqCallBack(callbackId, data); } } }; retrieveReq.send(); return true; } function retrieveReqCallBack(calltype, data) { var toLookup=function(data) { if (data==null || data=="" || (data.Id==null)) { return null; } var result=new Array(); result[0] = {}; result[0].id = data.Id; result[0].name = data.Name; result[0].entityType = data.LogicalName; return result; } switch (calltype) { case 'pricelookup': Xrm.Page.data.entity.attributes.get("new_pricecategorylookup").setValue(toLookup(data.new_pricecategorylookup); break; case 'new_bonus_maluslookup': Xrm.Page.data.entity.attributes.get("new_testfield").setValue(data.new_test); break; default: break; } } Вот ссылка на оригинальный сайт |
|