AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Разработка
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.07.2012, 12:26   #6  
Taker1796 is offline
Taker1796
Участник
Аватар для Taker1796
 
112 / 11 (1) +
Регистрация: 22.04.2012
Цитата:
Сообщение от a33ik Посмотреть сообщение
Там действительно EntityReference. Если не работает - ошибка у вас в коде. Полный код приведите, пожалуйста.
Вот код, который работает на update/create. Я понял, что событие Delete работает только с EntityReference. Но дело в том, что у меня в коде запрос, который я, к сожалению, не знаю как переписать при событии Delete c EntityReference. Смысл работы кода в том, что плагин подсчитывает количество пользователей и проставляет значение в account. Пользователи и account связаны 1:N
Код:
 public void Execute(IServiceProvider serviceProvider)
        {
            int Count = 0;
            Entity entity = null;
            // Получаем контекст плагина
            IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
            if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
            {
                // Получаем объект
                entity = (Entity)context.InputParameters["Target"];
            }
            else
            {
                return;
            }
            if (entity.Attributes.Contains("parentcustomerid"))
            {
                // Получаем сервис через контекст плагина
                IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
                IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);
                ConditionExpression condition = new ConditionExpression();
                condition.AttributeName = "parentcustomerid";
                condition.Operator = ConditionOperator.Equal;
                condition.Values.Add(entity.GetAttributeValue<EntityReference>("parentcustomerid").Id.ToString());

                FilterExpression filter = new FilterExpression();
                filter.Conditions.Add(condition);

                QueryExpression query = new QueryExpression("contact");
                query.ColumnSet.AddColumns(new string[] { "fullname" });
                query.Criteria.AddFilter(filter);

                EntityCollection result = service.RetrieveMultiple(query);
                foreach (var a in result.Entities)
                {
                    Count++;
                }
                Entity account = new Entity("account");
                ColumnSet attributes = new ColumnSet(new string[] { "new_contactquantity" });

                account = service.Retrieve(account.LogicalName, entity.GetAttributeValue<EntityReference>("parentcustomerid").Id, attributes);
                //Обновляем значение поля "Количество клиентов"
                account["new_contactquantity"] = Count;

                // Обновляем запись
                service.Update(account);
            }

Последний раз редактировалось Taker1796; 24.07.2012 в 12:28.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 8 Blog bot Dynamics CRM: Blogs 1 30.04.2016 10:26
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 7 Blog bot Dynamics CRM: Blogs 0 27.03.2012 02:11
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 4 Blog bot Dynamics CRM: Blogs 0 24.09.2011 01:16
Microsoft Dynamics CRM Team Blog: Microsoft Dynamics CRM 2011 ~ Online Test Drive Guide Blog bot Dynamics CRM: Blogs 0 05.08.2011 20:13
Все о Microsoft Dynamics CRM: Как установить Microsoft Dynamics CRM 2011 Beta Blog bot Dynamics CRM: Blogs 0 31.10.2010 15:08

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 02:41.