|
![]() |
#1 |
Участник
|
Все ок, не к тому процессу коннектился
|
|
![]() |
#2 |
Участник
|
Помогите с плагином.
Есть две сущности Полис и Контакт. Плагин срабатывает на сущности полис при изменении полиса. Суммируем все полиса по клиенту и обновляем поле сумма в Контакте. Ошибка в поле new_contact (lookup на Контакт). Цитата:
var Quantity = (EntityReference)QuantityCust.Attributes["new_contact"];
Цитата:
Сообщение от Ion
![]() using System;
using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Xrm.Sdk; using Microsoft.Crm.Sdk.Messages; using Microsoft.Xrm.Sdk.Query; namespace CrmPackageSalamandra.CountChildSum { public class CalculateTotalSum : IPlugin { public void Execute(IServiceProvider ServiceProvider) { IPluginExecutionContext Context = (IPluginExecutionContext)ServiceProvider.GetService(typeof(IPluginExecutionContext)); IOrganizationServiceFactory ServiceFactory = (IOrganizationServiceFactory)ServiceProvider.GetService(typeof(IOrganizationServiceFactory)); IOrganizationService Service = ServiceFactory.CreateOrganizationService(Context.UserId); if (Context.PostEntityImages.Contains("PostImage") && Context.PostEntityImages["PostImage"] is Entity) { Цитата:
//Из контекста получаю сущность полис Entity QuantityCust = (Entity)Context.InputParameters["Target"]; var Quantity = (EntityReference)QuantityCust.Attributes["new_contact"]; decimal Total = FetchResult(Quantity.Id, Service); // Updating Parent Entity Entity customer = new Entity("contact"); customer.Id = Quantity.Id; customer["erpc_total"] = Total; Service.Update(customer); } } private static decimal FetchResult(Guid quantity, IOrganizationService service) { string value_sum = @"<fetch version='1.0' output-format='xml-platform' mapping='logical' distinct='false' aggregate='true'> <entity name='new_insurance_policy'> <attribute name='new_payment' alias='totalamount_sum' aggregate='sum'/> <filter type='and'> <condition attribute='new_contact' operator='eq' value='{0}' /> </filter> </entity> </fetch>"; decimal TotalValue = 0; value_sum = string.Format(value_sum, quantity); EntityCollection value_sum_result = (EntityCollection)service.RetrieveMultiple(new FetchExpression(value_sum)); foreach (var c in value_sum_result.Entities) { decimal aggregate2 = ((Decimal)((AliasedValue)c.Attributes["totalamount_sum"]).Value); TotalValue = aggregate2; } return TotalValue; } } } Последний раз редактировалось Ion; 12.02.2014 в 15:44. |
|
![]() |
#3 |
Чайный пьяница
|
Получайте этот идентификатор из Таргета только при создании. При обновлении используйте Image.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
За это сообщение автора поблагодарили: Ion (1). |
![]() |
#4 |
Участник
|
Цитата:
Entity customer = new Entity("contact"); customer.Id = contactlookup.Id; customer["erpc_total"] = Total; Цитата:
Service.Update(customer);
Access Denied. Reference number for administrators or support: #334D537D Не обработано пользовательским кодом. |
|
![]() |
#5 |
Чайный пьяница
|
Какого типа поле erpc_total?
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
![]() |
#6 |
Участник
|
|
|
|
|