Как получить имена сущностей в CRM 2016

В нашем решении мы динамически создаем запросы HTTP/ODATA.

Например, мы создадим URL-адрес, который выглядит следующим образом:

[http://org....api/v8.1/]accounts(00000000-0000-0000-0000-000000000001)/primarycontactid?$select=fullname

Как мы можем динамически получить список всех объектов, таких как "учетные записи"?

В 2011 году мы просто выполняли бы против LeadSet/AccountSet/etcSet, какова стратегия в 2016 году?

4 ответа

Я не знаю, есть ли какая-то "языковая" хитрость (очевидно, имя набора - просто имя во множественном числе на английском языке сущности, но этого недостаточно для меня), так что мне это нравится - просто вызовите метаданные webAPI:

http://[crmurl]/api/data/v8.2/EntityDefinitions?$select=EntitySetName,LogicalName&$filter=LogicalName eq 'account'

Результат следующий:

{
  "@odata.context":"http://[crmurl]/api/data/v8.2/$metadata#EntityDefinitions(EntitySetName,LogicalName)","value":[
    {
      "EntitySetName":"accounts","LogicalName":"account","MetadataId":"70816501-edb9-4740-a16c-6a5efbc05d84"
    }
  ]
}

Итак, вы поняли. Конечно, вы можете просто пропустить $filter часть и просто получить список всех установленных имен и кэшировать их где-нибудь.

1. Чтобы получить все сущности, доступные в вашем crm:

https://<your org name>.crm.dynamics.com/api/data/v8.2/

2.Чтобы получить всю информацию метаданных записей (Получить несколько записей):

https://<your org name>.crm.dynamics.com/api/data/v8.2/accounts?

3.Чтобы получить информацию об определенном адресе электронной почты (Получить единственную запись). Что бы мы ни выбрали атрибуты в предложении select, мы можем получить информацию об этих атрибутах в результате:

https://<your org name>.crm.dynamics.com/api/data/v8.2/accounts?$select=emailaddress1&$filter=accountid eq <GUID goes here>

4. Чтобы получить всю информацию метаданных в CRM:

https://<your org name>.crm.dynamics.com/api/data/v8.2/EntityDefinitions

Другой подход заключается в создании имени множественного числа из имени единственного числа.

Насколько я понимаю, правила для множественного числа имен сущностей в Web API v8+ таковы:

  • оканчивается на s, x, z, ch или sh: добавьте 'es'
  • заканчивается на y: удалить "y", добавить "ies"
  • еще: добавить 's'

Вот функция JavaScript, которую я использую для этого:

function pluralName (name) {
    var plural = '';
    if (name != null && typeof(name) == 'string') {
        var len = name.length;
        var lastChar = len > 0 ? name.slice(-1) : '';
        var last2Chars = len > 1 ? name.slice(-2) : '';

        if (lastChar == 's' || lastChar == 'x' || lastChar == 'z' || last2Chars == 'ch' || last2Chars == 'sh') {
            plural = name + 'es';
        }
        else if (lastChar == 'y') {
            //strip off last character and add suffix
            plural = name.substr(0, len - 1) + 'ies';
        }
        else {
            plural = name + 's';
        }
    }
    return plural;
}

Ну, если вам нужен список сущностей, вы можете просто запросить и проанализировать корень службы следующим образом:

https://contoso.api.crm.dynamics.com/api/data/v8.1/

Если вы тоже хотите поля, вы можете сделать это:

https://contoso.api.crm.dynamics.com/api/data/v8.1/$ metadata

Другие вопросы по тегам