5

Próbuję wykonać pobieranie XML za pomocą WEB API /api/data/v8.x. Wszystko jest w porządku, z wyjątkiem sytuacji, gdy mam zapytanie dotyczące "gdzie atrybut zawiera wartość liczbową". Na przykład, następujący fetchXML znaleźć konto z numerem telefonu zawiera '03':W jaki sposób zapytać Dynamics CRM Web API za pomocą niestandardowego FetchXml z użyciem filtru wartości liczbowej?

<fetch mapping="logical"> 
 
    <entity name="account"> 
 
    <attribute name="name" /> 
 
    <attribute name="telephone1" /> 
 
    <order attribute="name" descending="false" /> 
 
    <filter type="and"> 
 
     <condition attribute="telephone1" operator="like" value="%03%" /> 
 
    </filter> 
 
    </entity> 
 
</fetch>

Kiedy go uruchomić poprzez Get On Web API:

https://CRM_URL/api/data/v8.0/accounts?fetchXml=<fetch%20mapping%3D"logical"><entity%20name%3D"account"><attribute%20name%3D"name"%20%2F><attribute%20name%3D"telephone1"%20%2F><order%20attribute%3D"name"%20descending%3D"false"%20%2F><filter%20type%3D"and"><condition%20attribute%3D"telephone1"%20operator%3D"like"%20value%3D"%2503%25"%20%2F><%2Ffilter><%2Fentity><%2Ffetch> 

CRM Web API zwraca Nieprawidłowy błąd XML w następujący sposób:

{"błąd": { "code": "", "message": "Niepoprawny XML.", "Innererror": { "message": "Niepoprawny XML.", "Type": "System.ServiceModel.FaultException" 1 [[Microsoft. Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version = 8.0.0.0, Culture = neutral, TokenKluczaPublicznego = 31bf3856ad364e35]]”}}}

przebieg kwerendy w porządku, jeśli wartość filtra nie uruchamia z liczbą lub ja usuwam "%" z wartości filtru. Mój wniosek jest taki, że ma to związek z kodowaniem i dekodowaniem "% + number" w mojej wartości filtru.

Czy coś jest nie tak z moim zapytaniem, czy jest to błąd interfejsu API Dynamics CRM Web? jakieś prace dookoła?

+1

Zadziwiająco, przekazywanie pojedynczej cyfry jako parametru działa. "wartość ="% 3'"na przykład. Ani 'value = '% 03%'' ani 'value = '% 30%'' nie działają. – dynamicallyCRM

Odpowiedz

0

Nie wiem, dlaczego to nie działa, ale można użyć filtra, aby uzyskać numer telefonu Zawierające numer 3.

cc_WebAPI_ServiceURI/accounts?$filter=contains(telephone1,'3') 
3

Tutaj Dynamics 365 jest wewnętrznie dekodowania ciąg kwerendy FetchXML dwukrotnie. Zespół inżynierów jest informowany o tym problemie. Zapewnią poprawkę w nadchodzącym wydaniu i prawdopodobnie w najnowszej publicznej wersji. Do tego czasu możesz spróbować zakodować kod zapytania dwa razy lub zastąpić wszystkie wystąpienia % po %25 po kodowaniu. Na przykład ciąg value%3D"%2503%25" można zastąpić ciągiem value%3D"%252503%2525". Pamiętaj, że po udostępnieniu poprawki obejście problemu nie będzie już działać.

+1

Wygląda na naprawiony przy użyciu 8.2.1.207 –

+1

Zgadza się. Kompilacja 8.2.1.207 zawiera poprawkę. –