Как выполнять операции CRUD с объектами, отличными от учетной записи, с помощью Javascript

#javascript #web-services #odata #dynamics-crm-2011

#javascript #веб-сервисы #odata #dynamics-crm-2011

Вопрос:

Я использовал эту ссылку в качестве ссылки на то, как выполнять основные операции CRUD, вызывая веб-службу CRM с использованием javascript.

Ссылка содержит пример, который показывает, как выполнять операции CRUD с объектом account. Когда в этом примере вызывается функция open объекта XMLHttpRequest, второму параметру присваивается значение, специфичное для объекта account.

Вот пример:

 createAccountReq.open("POST", ODataPath   "/AccountSet", true);
  

Я не вижу ссылки на то, что эта часть URL должна быть установлена для других объектов OOB или пользовательских объектов.

Кто-нибудь, пожалуйста, укажет мне правильное направление? Я предполагаю, что эта информация есть в SDK, но, похоже, я не могу ее найти.

Ответ №1:

Это должно помочь вам получить представление о том, как выглядят операции извлечения: http://crm2011odatatool.codeplex.com

Как только у вас появится возможность поиграть с этим, все, что вам нужно сделать для работы с другими объектами, это изменить установленное имя и имена атрибутов. Важно отметить одну вещь: вы должны использовать имя схемы для объектов и атрибутов, а не логическое имя. Логическое имя всегда должно быть в нижнем регистре, имена схем могут быть в нижнем регистре, но часто содержат заглавные буквы. Вы должны легко убедиться в этом, поиграв с описанным выше инструментом odata.

Наконец, эта страница похожа на вашу ссылку, но немного отличается. Обязательно щелкните разделы кода JScript.

Комментарии:

1. спасибо за информацию. Последняя ссылка особенно полезна для меня в том, чего я пытаюсь достичь.

2. Есть ли способ выполнить поиск этих заданных имен на основе etc или логического имени?

3. Для операций с OData вам понадобится имя схемы, а не логическое имя. Есть несколько простых способов просмотреть эту информацию: — предложение @brianpeiris — Браузер метаданных CRM 2011

4. @dpii Я отредактировал свой ответ, чтобы включить информацию о поиске метаданных объекта.

Ответ №2:

Веб-сервис следует стандартному шаблону OData, перечисляя все доступные ресурсы при доступе к корневому URL. CRM возвращает XML-список всех возможных объектов. Затем вы можете добавить любой из этих наборов объектов к URL-адресу для запроса объекта.

Например, доступ https://<CRM Server>/XRMServices/2011/OrganizationData.svc/ даст вам что-то вроде:

 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
<service xml:base="https://<CRM Server>/XRMServices/2011/OrganizationData.svc/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns="http://www.w3.org/2007/app">
  <workspace>
    <atom:title>Default</atom:title>
    <collection href="SdkMessageRequestFieldSet">
      <atom:title>SdkMessageRequestFieldSet</atom:title>
    </collection>
    <collection href="ListMemberSet">
      <atom:title>ListMemberSet</atom:title>
    </collection>
    <collection href="ContactQuotesSet">
      <atom:title>ContactQuotesSet</atom:title>
    </collection>
    ...
  

Редактировать:
Взгляните на статью MSDN под названием «Извлечение метаданных объектов с помощью JScript», если вы хотите получить метаданные о самих объектах. В нем упоминается библиотека JavaScript, включенная в SDK, которая позволяет отправлять SOAP-запрос в службу метаданных организации для извлечения всех сведений о сущности, таких как LogicalName и DisplayName.