Что означает IsValidODataAttribute: true в / api / data / v?

У меня проблема с запросом записей типа сущности activityparty. Я использую запрос к GET /api/data/v.../activityparties?$select=activitypartyid,partyidname, но он не работает с ошибкой:

{"error": {"code": "0x0", "message": "Не удалось найти свойство с именем 'partyidname' в типе 'Microsoft.Dynamics.CRM.activityparty'." }}

Эти два имени поля activitypartyid и partyidname я получил из запроса к EntityDefinitions('activityparty').

... "PrimaryIdAttribute": "activitypartyid", "PrimaryImageAttribute": null, "PrimaryNameAttribute": "partyidname ", ...

Затем я запрашиваю EntityDefinitions('activityparty')/Attributes, чтобы узнать, есть ли атрибут partyidname. Я нашел там одно интересное поле 'IsValidODataAttribute' = false. Значит ли это, что это поле могло быть в JSON или не могло быть? И что именно это означает? Полагаю, проблема в этом, а то я не знаю, что делаю не так :)

полное представление одной activityparty записи объекта:

{  
   "@odata.etag":"W/\"2392630\"",
   "_ownerid_value":"68682bd9-701b-460a-a383-c6d38a8d25ae",
   "activitypartyid":"b0f76c9b-49b9-45ca-b15c-0179a421f680",
   "participationtypemask":9,
   "_activityid_value":"7418ab6b-fbd2-e911-a993-000d3a3a1688",
   "ispartydeleted":false,
   "versionnumber":2392630,
   "scheduledend":"2019-09-08T12:00:00Z",
   "_partyid_value":"68682bd9-701b-460a-a383-c6d38a8d25ae",
   "scheduledstart":"2019-09-08T12:00:00Z",
   "instancetypecode":0,
   "addressusedemailcolumnnumber":null,
   "donotemail":null,
   "donotfax":null,
   "addressused":null,
   "_resourcespecid_value":null,
   "exchangeentryid":null,
   "donotphone":null,
   "donotpostalmail":null,
   "effort":null
}

person Pavlo Mykhailyshyn    schedule 01.10.2019    source источник
comment
Что у тебя получилось?   -  person Arun Vinoth    schedule 04.10.2019
comment
чтобы не запрашивать этот странный атрибут, который отсутствует в данных записи объекта :)   -  person Pavlo Mykhailyshyn    schedule 07.10.2019
comment
опубликуйте свой ответ и закройте этот вопрос?   -  person Arun Vinoth    schedule 18.10.2019
comment
Ok. Это имеет смысл.   -  person Pavlo Mykhailyshyn    schedule 21.10.2019


Ответы (1)


Я думаю, вы ищете этот вызов веб-API ниже.

Вы должны использовать [email protected] для ожидаемого результата.

Xrm.WebApi.online.retrieveMultipleRecords("activityparty", "?$select=activitypartyid,_partyid_value").then(
    function success(results) {
        for (var i = 0; i < results.entities.length; i++) {
            var activitypartyid = results.entities[i]["activitypartyid"];
            var _partyid_value = results.entities[i]["_partyid_value"];
            var _partyid_value_formatted = results.entities[i]["[email protected]"];
            var _partyid_value_lookuplogicalname = results.entities[i]["[email protected]"];
        }
    },
    function(error) {
        Xrm.Utility.alertDialog(error.message);
    }
);

Рекомендуется использовать CRM REST Builder для безошибочного синтаксиса веб-API и полезной нагрузки.

person Arun Vinoth    schedule 01.10.2019
comment
Мне нужно правильное отображаемое имя для этого типа сущности. Насколько мне известно, атрибут PrimaryNameAttribute из определения сущности означает отображаемое имя для этого типа сущности. Например, тип сущности «account» имеет «PrimaryNameAttribute» равное «name», поэтому теперь я могу легко выполнить запрос /api/data/v.../account?$select=accountid,name, чтобы найти всю необходимую информацию. - person Pavlo Mykhailyshyn; 02.10.2019
comment
но для объекта "activityparty" я не могу этого сделать, потому что "partyidname" отсутствует. Что мне делать с таким странным поведением? - person Pavlo Mykhailyshyn; 02.10.2019
comment
@PavloMykhailyshyn, это не странно, это Dynamics Activity :) Activity настолько сложна по дизайну, что включает в себя Activity Party и Activity Pointer, именно так ее и нужно запрашивать. - person Arun Vinoth; 02.10.2019
comment
@PavloMykhailyshyn Ищете атрибут темы во всех типах действий? Проверь это. - person Arun Vinoth; 02.10.2019
comment
Да, точно! Что я должен проверить? - person Pavlo Mykhailyshyn; 02.10.2019
comment
Эта проблема возникает не только у организации, занимающейся деятельностью, связанной с деятельностью. Я хочу добиться того же результата (получить тему) для других типов сущностей, но это тоже не удается. вот список сущностей с тем же кодом ошибки: 0x0, сообщение: не удалось найти свойство с именем customerrelationship knowledgearticleviews postfollow customropportunityrole knowledgearticleincident - person Pavlo Mykhailyshyn; 02.10.2019
comment
@PavloMykhailyshyn, хорошо, покажи свой реальный код и объясни, что ты делаешь. - person Arun Vinoth; 02.10.2019
comment
Я хотел бы получить для всех типов сущностей удобочитаемое имя, отображаемое имя или что-то, что я могу использовать в качестве заголовка или темы для конкретных записей сущностей. - person Pavlo Mykhailyshyn; 02.10.2019
comment
Нет кода :) Используйте только запрос GET /api/data/v.../activityparties?$select=activitypartyid,partyidname. Я выбрал partyidname, чтобы получить удобочитаемое имя для этого типа сущности. Этот атрибут я получил из запроса EntityDefinition - person Pavlo Mykhailyshyn; 03.10.2019
comment
@PavloMykhailyshyn, к сожалению, не существует единой концепции, подходящей для всех сущностей CRM. :) вам может потребоваться адаптировать разную логику для разных сущностей, это огромный ERP-продукт, разработанный в разное время для разных концепций .. поэтому мы должны использовать документацию и помощь сообщества, чтобы достичь того, чего мы хотим .. :) missdynamicscrm. blogspot.com/2014/09/ - person Arun Vinoth; 03.10.2019