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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.09.2011, 20:11   #1  
Blog bot is offline
Blog bot
Участник
 
25,631 / 848 (80) +++++++
Регистрация: 28.10.2006
axforum blogs: Использование OData в CRM2011
Источник: http://axforum.info/forums/blog.php?b=273
==============

Многие из вас уже, наверно, успели поиграть с новым удобным End Point для работы с сервисом CRM. Соглашусь, примеры в блогах разработчиков и демонстрации в Hands On Labs впечатляют. Долой не читаемые портянки SOAP запросов и ура простой и четкой URL адресации.
К сожалению, ситуация омрачается тем, что CRM SDK все сильнее деградирует от версии к версии, так что получать информацию из этого ресурса становится все сложнее. В итоге, многие детали реализации механизмов системы либо пишутся между строк, либо вообще остаются неосвещенными. В этом посте я изложу основные тезисы, которые мне удалось вычленить.

Во-первых, использовать REST End Point, для манипуляции с данными, действительно удобно. Код получается более кратким и читаемым, хотя теперь, когда мы получили поддержку пользовательских JS библиотек, это уже не столь существенно. Дьявол и тут скрывается в деталях. Чтобы получить данные нужно построить запрос, но в SDK вы найдете больше ссылок на стандарт OData, нежели конкретных примеров синтаксиса. К счастью есть решение, которое позволяет строить запросы через удобный визуальный интерфейс: CRM 2011 OData Query Designer.

Минуса у решения ровно два:
  1. Не умеет работать с решениями (solution) - данные тянутся только из солюшена по умолчанию.
  2. Кривовато работает с CRM Online.
Используете вы этот тул, или нет вы столкнетесь со следующими тонкостями:

1. Не работают фильтры по первичному ключу записи:
Код:
//error /xrmservices/2011/OrganizationData.svc/AccountSet?$filter=AccountId eq guid'{guid}'
Вместо этого необходимо использовать синтаксис:
Код:
xrmservices/2011/OrganizationData.svc/AccountSet(guid'{guid}')
2. Параметры REST запросов чувствительны к регистру! Более того, имена полей в запросе - это не их схема, как это принято при работе через SOAP или объектную модель! По неясным причинам, в метаданные атрибута объекта в CRM 2011 вводится свойство Schema Name, которое чувствительно к регистру и, как и схема, не меняется после создания. На форме атрибута этого поля нет, но зато оно отражается в представлении:



Код:
//ok ../AccountSet?$select=Name //error ../AccountSet?$select=name
Кроме этого, существуют ограничения на длину URL запроса, количество возвращаемых записей, поддерживаемые функции OData. Какие? - читайте в SDK!

Во-вторых, составить запрос - это еще пол беды. Нужно еще как-то его выполнить, а потом обработать результат. Вот тут-то нас подстригает второй неприятный момент. Готовых системных библиотек для этих целей не предусмотрено. Более того, все примеры в SDK написаны с применением свободных библиотек jQuery и JSON, которые придется подключать к формам, если вы хотите их использовать. И хотя поддержка JSON есть во всех современных браузерах включая IE версии 8 и выше, веб сервер CRM работает в режиме совместимости с IE 7, поэтому объекты JSON не будут созданы. Кроме этого, могут быть проблемы, если вы используете "чистый" jQuery.ajax. Для того, чтобы запрос вернулся в корректном формате рекомендуется установить дополнительные хидеры HTTP запроса при помощи свойства beforeSend:
Код:
$.ajax({ type: "POST", contentType: "application/json; charset=utf-8", datatype: "json", /* ... */ beforeSend: function (XMLHttpRequest) { //Specifying this header ensures that the results will be returned as JSON. XMLHttpRequest.setRequestHeader("Accept", "application/json"); } });
Предупрежден - значит вооружен. Удачного скриптинга!


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

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
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
Microsoft Dynamics CRM Team Blog: Welcome to the World of Dialogs - Part 1 Blog bot Dynamics CRM: Blogs 0 02.02.2011 21:11
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, время: 16:16.