AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Blogs
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.11.2013, 11:11   #1  
Blog bot is offline
Blog bot
Участник
 
25,617 / 848 (80) +++++++
Регистрация: 28.10.2006
axforum blogs: Полезная доработка JS библотеки SDK.REST
Источник: http://axforum.info/forums/blog.php?b=429
==============

Сегодня поучаствовал в одном из обсуждений на форуме и вспомнил, что задолжал общественности одну полезную доработку стандартной JS библиотеки в составе SDK, SDK.REST.js.

Для интерпретации JSON результата библиотека использует функцию
X++:
_dateReviver: function (key, value) { /// /// Private function to convert matching string values to Date objects. /// /// /// The key used to identify the object property /// /// /// The string value representing a date /// var a; if (typeof value === 'string') { a = /Date\(([-+]?\d+)\)/.exec(value); if (a) { return new Date(parseInt(value.replace("/Date(", "").replace(")/", ""), 10)); } } return value; }
К ней у меня нет претензий, однако почему бы не ограничиваться только датами? Есть и другие типы, которые по недосмотру разработчиков по разному устроены в JS и .NET API. Для того чтобы прозрачнее интерпретировать JSON результат я использовал следующую функцию:
X++:
_xrmTypeReviver: function (key, value) { /// /// Private function to convert matching string values to Date objects. /// agrunin: функция дополнена для преобразования EntityReference в lookup понятный Xrm.Page /// /// /// The key used to identify the object property /// /// /// The string value representing a date or EntityReference /// var a; if (typeof value === 'string') { a = /Date\(([-+]?\d+)\)/.exec(value); if (a) { return new Date(parseInt(value.replace("/Date(", "").replace(")/", ""), 10)); } } else if (value != null && typeof value == 'object') { if (value["__metadata"] != undefined) { var type = value["__metadata"].type; switch (type) { case "Microsoft.Crm.Sdk.Data.Services.EntityReference": if (value.Id == null) { // Возвращаем null вместо пустого объекта return null; } else { return { id: value.Id, entityType: value.LogicalName, name: value.Name }; } case "Microsoft.Crm.Sdk.Data.Services.Money": case "Microsoft.Crm.Sdk.Data.Services.OptionSetValue": return value.Value; default: return value; } } } return value; }
Она позволяет приводить EntityReference к JS объекту Lookup, а так же извлекает примитивное значение из объектов Money и OptionSetValue. Отмечу так же, что мой обработчик возвращает null вместо пустого EntityReference, как это делает стандартная библиотека.


Источник: http://axforum.info/forums/blog.php?b=429
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Microsoft Dynamics CRM Team Blog: Creating and Publishing a Web Portal to an Azure Cloud Service Blog bot Dynamics CRM: Blogs 0 17.04.2013 23:11
DynamicsAxSCM: Visualizing Security in Microsoft Dynamics AX 2012 Blog bot DAX Blogs 0 29.08.2011 13:11
crminthefield: How to Create a Silverlight Web Resource that Interacts with CRM 2011 Forms Blog bot Dynamics CRM: Blogs 0 24.06.2011 04:17
crminthefield: Microsoft Dynamics CRM 2011 Custom Contact Entry Website using Early-Bound entity Classes. Blog bot Dynamics CRM: Blogs 0 04.06.2011 08:16
DynamicsAxSCM: Personalization of Role Centers in Dynamics AX 2009 Blog bot DAX Blogs 0 21.06.2010 16:05

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 01:07.