Как передать нулевой или пустой фильтр FetchXML? - PullRequest
1 голос
/ 10 апреля 2019

Сценарий. У меня есть текстовое поле в Dynamics CRM для типа заказа.Это поле интегрировано с некоторыми другими системами, и оно будет принимать только уже указанный список значений;например, ABC, IJK, XYZ и т. д. Теперь я могу запросить это поле с помощью расширенного поиска, если оно содержит данные или нет.

Теперь в отчете у меня есть параметр, который имеет все эти возможные значения и еще одно, как «Не содержит данных», и его значением является пустая строка.Я также включил этот параметр отчета для множественного выбора.Но я не могу получить заказы, если какое-либо значение выбрано из параметров отчета.

Ниже приведен мой запрос FetchXML. Пожалуйста, дайте мне знать, что мне не хватает ниже.

<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">
  <entity name="invoicedetail">
   <attribute name="productid" />
    <attribute name="invoicedetailid" />
    <attribute name="tv_ordertype" />
    <order attribute="productid" descending="false" />
    <filter type="and">
        <condition attribute="tv_ordertype" operator="in" value="@Order_Types" />
    </filter>
  </entity>
</fetch>

Ответы [ 3 ]

0 голосов
/ 12 апреля 2019

Ваш выборочный XML должен выглядеть так:

<?xml version="1.0" encoding="UTF-8"?>
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">
   <entity name="invoicedetail">
      <attribute name="productid" />
      <attribute name="invoicedetailid" />
      <attribute name="tv_ordertype" />
      <order attribute="productid" descending="false" />
      <filter type="and">
         <condition attribute="tv_ordertype" operator="in"/>
            <value>@Order_Types[0]</value>
            <value>@Order_Types[1]</value>
            <!-- etc -->
         </condition>
      </filter>
   </entity>
</fetch>
0 голосов
/ 08 мая 2019

К сожалению, вы не можете объединить значения ("ABC", "IJK", "XYZ") с параметром пустой строки.Подумайте о том, как SSRS будет анализировать пустую строку в FetchXml:

<condition attribute="tv_ordertype" operator="in" value="" />

Поскольку оператор in имеет пустую строку, совпадений не будет.

Один подход, который может работатьизменить ваш FetchXml на использование фильтра or, например,

<filter type="or">
    <condition attribute="tv_ordertype" operator="null" />
    <condition attribute="tv_ordertype" operator="in" value="@Order_Types" />
</filter>

. Теперь он будет возвращать все значения из CRM, которые соответствуют вашим критериям, ИЛИ иметь значение tv_ordertype

. ТогдаВы можете применить дополнительную фильтрацию на уровне табликса / отчета

0 голосов
/ 10 апреля 2019

Попробуйте что-то вроде ниже

  <fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">
    <entity name="invoicedetail">
        <attribute name="productid" />
        <attribute name="invoicedetailid" />
        <attribute name="tv_ordertype" />
        <order attribute="productid" descending="false" />      
        <filter type='and'>         
<condition attribute="tv_ordertype" operator="in" value="@Order_Types" />
        </filter>
    </entity>
</fetch>
...