Получить поиск, который вызывает получение нескольких запросов - плагин Dynamics 365 - PullRequest
0 голосов
/ 04 февраля 2019

Я использую предварительную операцию получения нескольких плагинов, чтобы добавить условие для поиска в подсетке аккаунта.Это работает нормально, однако это относится ко всем запросам на учетные записи.Я хочу, чтобы он применялся только тогда, когда пользователь обращается к поиску в пределах одной подсетки в одной форме.Есть ли способ получить поиск, который запускает запрос?В качестве альтернативы есть какой-либо способ достичь того, что я хочу сделать другими способами?Целью этого является фильтрация учетных записей, которые могут быть добавлены в подсеть.

Вот мой код:

public class FilterAversedSuppliers : IPlugin
    {

        public void Execute(IServiceProvider serviceProvider)
        {
            //Extract the tracing service for use in debugging sandboxed plug-ins.
            ITracingService tracingService =
                (ITracingService)serviceProvider.GetService(typeof(ITracingService));

            // Obtain the execution context from the service provider.
            IPluginExecutionContext context = (IPluginExecutionContext)
                serviceProvider.GetService(typeof(IPluginExecutionContext));

            // The InputParameters collection contains all the data passed in the message request.
            if (context.InputParameters.Contains("Query") &&
                context.InputParameters["Query"] is QueryExpression)
            {

                try
                {
                    QueryExpression objQueryExpression = (QueryExpression)context.InputParameters["Query"];

                    ConditionExpression condition = new ConditionExpression()
                    {
                        AttributeName = "customertypecode",
                        Operator = ConditionOperator.Equal,
                        Values = { 4 }
                    };

                    objQueryExpression.Criteria.AddCondition(condition);

                    tracingService.Trace("Custom Filter Added");
                }
                catch (FaultException<OrganizationServiceFault> ex)
                {
                    throw new InvalidPluginExecutionException("An error occurred in the FollowupPlugin plug-in.", ex);
                }

                catch (Exception ex)
                {
                    tracingService.Trace("FollowupPlugin: {0}", ex.ToString());
                    throw;
                }
            }

        }
    }

1 Ответ

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

В соответствии с критериями просмотра, добавьте что-то вроде «Имя», равное «FilterMe».

Теперь в вашем плагине проверьте входящий запрос fetchxml.Если он содержит ваши особые критерии, вы знаете, как применить свою специальную фильтрацию.Не забудьте удалить специальные критерии из запроса в вашем коде.

Теперь все остальные запросы не должны запускать ваш специальный фильтр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...