たちまち。

即席で役に立つこと。

XrmServiceToolkitによるFetchが、ChromeだとOKなのにIEだとエラー

Chromeでは特に問題ないのに、IEだと以下のエラーが発生する。

XrmServiceToolkit.Fetch: No 'entity' node in the provided FetchXML.

それぞれのブラウザで生成されたFecthXmlの文字列を見ても、特に違いはない。

海外のフォーラムを見ると、FetchXMLは全て小文字でないといけないので、「Entity」と書いてあるタグを「entity」に編集しろなどとあるが、全て小文字で書いてある。

うーむ、困った。

解析調査したところ、fetchXml内のfilterタグなしだと普通に通った。

ということは、一部のcondition指定が悪さをしているようだ。

結果、たどり着いたのは以下の条件。

<condition attribute="new_xxxid" operator="ne" value="" />

FetchXmlの際に「自分のGUIDを持つレコードは含まない」という条件を加えていた。

「Xrm.Page.data.entity.getId();」でGUIDを取得しているのだが、新規フォームの場合は自分のGUIDが空文字で返却される。

このような空文字の条件を指定すると、なぜかIEの場合のみエラーとなってしまうようだ。

取得したGUIDが空文字だった場合は上記のcondition文字列を指定しないようにすることで解決。