CRM Api FetchXml заменяет символы при использовании как - PullRequest
0 голосов
/ 08 июня 2018

Я пытаюсь вызвать CRM Api для получения контактов.Требование говорит, что я могу искать по имени, используя оператор LIKE.

Я использую приведенный ниже fetchxml для запроса CRM:

<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false"> 
  <entity name="contact"> 
    <attribute name="fullname" /> 
    <filter type="and"> 
      <condition attribute="statecode" operator="eq" value="0" /> 
    </filter> 
    <filter type="and"> 
      <condition attribute="fullname" operator="like" value="%ben%" /> 
    </filter>
  </entity> 
</fetch>

Проблема заключается в следующем: если я пытаюсь с помощью «test»например, работает нормально.Но если я попытаюсь найти «Бен», это не так.Я считаю, что проблема связана с кодировкой, но я не могу найти способ ее исправить.Есть идеи?

1 Ответ

0 голосов
/ 10 июня 2018

Похоже, ошибка кодирования в вашем коде.Попробуйте передать закодированный запрос fetchxml по указанному ниже URL-адресу и проверить в адресной строке браузера.Если это приводит к ожидаемым записям, то это не проблема платформы.

https://<yourorg>.crm.dynamics.com/api/data/v8.2/contacts?fetchXml=encodedFetchXML

Чтобы использовать FetchXml, нам нужно отформатировать FetchXml в пригодном для использования формате конечной точки службы Web API.Мы делаем это, сохраняя FetchXML в переменной и кодируя строку с помощью функции encodeURI, встроенной в JavaScript, как показано ниже.

var encodedFetchXml = encodeURI(fetchContact);

Подробнее

Обновление :
Я проверял это.Оба приведенных ниже фильтра выборки сработали и дали мне ожидаемую contact запись в тесте браузера.

<condition attribute="lastname" operator="like" value="%thiy%" />

<condition%20attribute="lastname"%20operator="like"%20value=%27%25thiy%25%27%20/>

Редактировать:

Мы столкнулись с этой проблемой в нашем производственном приложениисегодня, когда пользователи пытаются найти %bernhard%, но мы работаем в коде с value="%%bbbernhard%" в качестве обходного пути.

...