Dynamics365 - получить Query / FetchXML на странице результатов расширенного поиска - PullRequest
0 голосов
/ 06 февраля 2019

Есть ли возможность получить запрос расширенного поиска / fetchxml на странице результатов?Прежде чем я нажимаю кнопку Результаты, я могу нажать кнопку Fetchxml, но на странице результатов нет.Есть ли возможность получить этот запрос / xml через javascript или C #, и он должен быть на странице результатов.

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Насколько я знаю, нет никаких ловушек для настройки страницы расширенного поиска, поэтому нет способа добавить JavaScript, чтобы делать то, что вы хотите.

Однако вы можете написать плагин, который срабатывает наRetrieveMultiple message.

В плагине вы можете получить QueryExpression из RetrieveMultipleRequest

var q = (QueryExpression)context.InputParameters["Query"];

Затем преобразоватьэто до FetchXML.

var conversionRequest = new QueryExpressionToFetchXmlRequest
{
    Query = q
};
var conversionResponse = (QueryExpressionToFetchXmlResponse)_serviceProxy.Execute(conversionRequest);
var fetchXml = conversionResponse.FetchXml;

Обратите внимание, что я не проверял вышеуказанный код.И поскольку я не использовал эту точную технику, возможно, вы можете привести Query напрямую к FetchXML и пропустить вызов преобразования.

Итак, вы можете попробовать это:
var q = (FetchExpression)context.InputParameters["Query"];

RetrieveMultiple плагинов имеют свои предостережения .Но, насколько это плохо ?

В связанной заметке, если пользователь сохраняет расширенный поиск как личное представление, его FetchXML можно извлечь из UserQuery юридическое лицо.

0 голосов
/ 06 февраля 2019

Я не уверен на 100%, говорим ли мы об одном и том же, но можно сформулировать запрос с помощью Fetchxml.

Посмотрите на эту страницу .Здесь они используют FetchExpression (string) для запроса с обычным сервисом организации.Вам просто нужен сервис организации и fetchxml, чтобы запросить его.Небольшой пример (по ссылке выше!):

// Retrieve all accounts owned by the user with read access rights to the accounts 
   and   
// where the last name of the user is not Cannon.   
string fetch2 = @"  
<fetch mapping='logical'>  
  <entity name='account'>   
     <attribute name='accountid'/>   
     <attribute name='name'/>   
     <link-entity name='systemuser' to='owninguser'>   
        <filter type='and'>   
           <condition attribute='lastname' operator='ne' value='Cannon' />   
        </filter>   
     </link-entity>   
  </entity>   
</fetch> ";   

EntityCollection result = _serviceProxy.RetrieveMultiple(new 
FetchExpression(fetch2));
foreach (var c in result.Entities)
{
   System.Console.WriteLine(c.Attributes["name"]);
} 

Как вы видите, это скорее всего консольное задание.То, как вы используете сущности, зависит от вас.

...