Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
みなさん、こんにちは。
前回に引き続き、Dynamics CRM 2016 SDK の新機能として、正式版と
なった Web API について紹介します。
今回は現時点での Web API の制限について紹介します。
概要
Web API は今回のリリースで正式版となりましたが、まだ一部機能に
制限があります。以下に主な制限の内容を紹介します。
ナビゲーションプロパティ値でのフィルターが行えない
参照フィールドのように特定できる関連の値であっても現時点では
ナビゲーションプロパティの値を利用したフィルターは行えません。
例えば以下の例では、取引先責任者の名前 ’Renee' で取引先企業の
レコードのフィルターをしますが、失敗して501 エラーが返されます。
GET [Organization URI] /api/data/v8.0/accounts?$select=name&$filter=primarycontactid/firstname eq 'Renee' HTTP/1.1
Accept: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0
一部の組織サービス要求に対応する Function か Action がない
以下の組織サービスに対応する Function や Action がまだ存在しません。
BookRequest
CalculateRollupFieldRequest
CheckIncomingEmailRequest
FindParentResourceGroupRequest
GetQuantityDecimalRequest
IncrementKnowledgeArticleViewCountRequest
InitializeFromRequest
IsValidStateTransitionRequest
QualifyLeadRequest
QueryMultipleSchedulesRequest
ReactivateEntityKeyRequest
RemoveItemCampaignActivityRequest
RemoveItemCampaignRequest
RemoveMemberListRequest
RescheduleRequest
RetrieveByResourcesServiceRequest
RetrieveDuplicatesRequest
RetrieveFilteredFormsRequest
RetrieveLocLabelsRequest
RetrievePrincipalAccessRequest
RetrieveRecordWallRequest
SearchByBodyKbArticleRequest
SearchByKeywordsKbArticleRequest
SearchByTitleKbArticleRequest
ValidateRecurrenceRuleRequest
$expand クエリにおける $select クエリが無視される
2 つ以上のナビゲーションプロパティをクエリした際、最後のナビゲーション
プロパティで $select を利用しないと、1 つ目のナビゲーションプロパティは
すべての列を返します。
例えば以下のクエリは取引先企業の名前、関連する担当者の名前、関連する
営業案件の名前だけを返します。
GET [Organization URI] /api/data/v8.0/accounts(D05B5D26-2F99-E511-80DB-C4346BC51068)?$select=name&$expand=contact_customer_accounts($select=fullname),opportunity_customer_accounts($select=name)
しかし最後の select を省略すると、関連する取引先担当者の列も fullname
だけではなく、すべてが返されます。
GET [Organization URI] /api/data/v8.0/accounts(D05B5D26-2F99-E511-80DB-C4346BC51068)?$select=name&$expand=contact_customer_accounts($select=fullname),opportunity_customer_accounts
公開前のメタデータが取得できない
Web API を利用してメタデータを取得することができますが、公開済みの
メタデータのみ取得可能です。メタデータの操作については次回以降で
紹介します。
ナビゲーションプロパティの値がない場合、Null が返されない
OData 4.0 の仕様では、ナビゲーションプロパティの値が存在しない場合
Null が返されるべきですが、現状は項目が返されません。
ActivityPointer をリンクした FetchXML の制限
ActivityPointer をリンクエンティティとして指定した FetchXML を利用
した場合、リンクエンティティ側のフィールド値が返りません。
例えば以下の FetchXML を利用した場合、subject フィールドの値は
返りません。
<fetch version="1.0"
output-format="xml-platform"
mapping="logical"
distinct="true">
<entity name="account">
<attribute name="name" />
<link-entity name="activitypointer"
from="regardingobjectid"
to="accountid"
link-type="inner">
<attribute name="subject" />
</link-entity>
</entity>
</fetch>
まとめ
Web API で開発する場合に、現時点でいくつか制限があることを知っておく必要が
あります。期待した動作をしない場合にはそれが制限であるか、まず SDK をご確認ください。
- 中村 憲一郎
※本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります