06.09.2011, 16:12 | #1 |
Участник
|
CRM2011: Не могу подключить JSON в JScript
Здравствуйте!
Нужно через JScript создать несколько подчиненных сущностей для кастомного объекта. В SDK для доступа к данным из JScript рекомендуется в том или ином виде использовать JSON, но все примеры содержат html страничку с которой запускаются скрипты и соответственно там-же подключается json2.js. А как его подключить если мне нужно использовать скрипт напрямую, без html? Нашел что нужно данный скрипт загрузить в отдельный веб-ресурс и опубликовать, сделал это но все равно мой скрипт, ссылающийся на JSON, не работает. |
|
06.09.2011, 17:39 | #2 |
Участник
|
Цитата:
Сообщение от Borisvil
Здравствуйте!
Нужно через JScript создать несколько подчиненных сущностей для кастомного объекта. В SDK для доступа к данным из JScript рекомендуется в том или ином виде использовать JSON, но все примеры содержат html страничку с которой запускаются скрипты и соответственно там-же подключается json2.js. А как его подключить если мне нужно использовать скрипт напрямую, без html? Нашел что нужно данный скрипт загрузить в отдельный веб-ресурс и опубликовать, сделал это но все равно мой скрипт, ссылающийся на JSON, не работает. Теперь другая проблема - для создаваемого объекта могу установить значения только строковых полей, остальные видимо через JSON передаются не так просто и скрипт не отрабатывается. Может кто подскажет как их передавать? |
|
06.09.2011, 23:22 | #3 |
Участник
|
А через какой сервис Вы обращаетесь к CRM
../OrganizationData.svc? ../Organization.svc?
__________________
Читайте SDK!!! |
|
07.09.2011, 10:02 | #4 |
Участник
|
Цитата:
Код такой (REST через Odata, взят из примеров Microsoft): X++: var context = Xrm.Page.context; serverUrl = context.getServerUrl(); ODataPath = serverUrl + "/XRMServices/2011/OrganizationData.svc"; var payment = new Object(); var startTime = new Date(); payment.xrm2b_day = startTime; var jsonpayment = window.JSON.stringify(payment); var createpaymentReq = new XMLHttpRequest(); createpaymentReq.open("POST", ODataPath + "/xrm2b_paymentSet", true); createpaymentReq.setRequestHeader("Accept", "application/json"); createpaymentReq.setRequestHeader("Content-Type", "application/json; charset=utf-8"); createpaymentReq.onreadystatechange = function () { createpaymentReqCallBack(this); }; createpaymentReq.send(jsonpayment); Вроде все делаю правильно: X++: var sum = Xrm.Page.getAttribute("xrm2b_annuity").getValue(); payment.xrm2b_payment_sum = sum; Перерыл кучу источников, но везде пишут только об обратном преобразовании - как результат полученный через OData преобразовать к стандартным типам. |
|
07.09.2011, 15:13 | #5 |
Moderator
|
Обратитесь к главе "Query Microsoft Dynamics CRM Data Using the REST Endpoint". Там есть раздел Entity Properties, который освещает то, как задавать сложные типы, например Money:
Код: "CreditLimit" :{ "__metadata": {"type": "Microsoft.Crm.Sdk.Data.Services.Money" }, "Value": 500.0000 } Код: "PrimaryContactId" :{ "__metadata": {"type": "Microsoft.Crm.Sdk.Data.Services.EntityReference" }, "Id": "78713858-5e81-df11-afdb-00155dba380a", "LogicalName": "contact", "Name": "Cathan Cook (sample)" }
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
|
За это сообщение автора поблагодарили: Borisvil (1). |
07.09.2011, 16:14 | #6 |
Участник
|
Цитата:
Сообщение от Артем Enot Грунин
Обратитесь к главе "Query Microsoft Dynamics CRM Data Using the REST Endpoint". Там есть раздел Entity Properties, который освещает то, как задавать сложные типы, например Money:
Код: "CreditLimit" :{ "__metadata": {"type": "Microsoft.Crm.Sdk.Data.Services.Money" }, "Value": 500.0000 } Код: "PrimaryContactId" :{ "__metadata": {"type": "Microsoft.Crm.Sdk.Data.Services.EntityReference" }, "Id": "78713858-5e81-df11-afdb-00155dba380a", "LogicalName": "contact", "Name": "Cathan Cook (sample)" } Получается так: X++: //Поле Reference: payment.new_applicationid = { Id: Xrm.Page.data.entity.getId(), LogicalName: Xrm.Page.data.entity.getEntityName() }; //Поле Money: var sum = Xrm.Page.getAttribute("new_annuity").getValue(); payment.new_sum = { Value: sum.toString() }; |
|
07.09.2011, 16:40 | #7 |
Moderator
|
Ну или вот так:
Код: var applicationid = new Object(); applicationid.Id = Xrm.Page.data.entity.getId(); applicationid.LogicalName = Xrm.Page.data.entity.getEntityName(); payment.new_applicationid = applicationid;
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
|
|