|
|
#1 |
|
Участник
|
Плагин не срабатывает на Delete crm 2011
Привет! Есть плагин, работает на update и на create, а вот на Delete не срабатывает. Зарегистрирован на Pre. Суть его работы в подсчете числа юзеров.
public void RetrieveCountContacts(IServiceProvider serviceProvider) { int Count = 0; IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext)); if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity) { entity = (Entity)context.InputParameters["Target"]; } IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory)); IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId); ......//условия поиска по связи 1:N foreach (var a in result.Entities) { Count++; } if(context.MessageName=="Delete") { Count--; } |
|
|
|
|
#2 |
|
Чайный пьяница
|
Код: if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
|
| За это сообщение автора поблагодарили: Taker1796 (1). | |
|
|
#3 |
|
Участник
|
Цитата:
Код: if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity) //тут я получаю данные
{
Entity entity = (Entity)context.InputParameters["Target"]; //тут из этих данных формирую сущность
}Последний раз редактировалось Taker1796; 23.07.2012 в 23:35. |
|
|
|
|
#4 |
|
Участник
|
Пробовал вот так, тоже не работает
if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is EntityReference) { if (context.MessageName == "Delete") { Count = Count - 1; } } |
|
|
|
|
#5 |
|
Чайный пьяница
|
Там действительно EntityReference. Если не работает - ошибка у вас в коде. Полный код приведите, пожалуйста.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
|
|
#6 |
|
Участник
|
Цитата:
Код: 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. |
|
|
|
|
#7 |
|
Чайный пьяница
|
Получите поля удаяемой записи из Image.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
|
| За это сообщение автора поблагодарили: Taker1796 (1). | |
|
|
#8 |
|
Участник
|
Код: if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
{
// Получаем объект
entity = (Entity)context.InputParameters["Target"];
}
else
{
entity = (Entity)context.PreEntityImages["PreImage"];
} |
|
|
|
|
#9 |
|
Чайный пьяница
|
Цитата:
Сообщение от Taker1796
Код: if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
{
// Получаем объект
entity = (Entity)context.InputParameters["Target"];
}
else
{
entity = (Entity)context.PreEntityImages["PreImage"];
}
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
|
|
#10 |
|
Участник
|
|
|
|
|
|
#11 |
|
Чайный пьяница
|
Скриншот покажите, пожалуйста.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
|
|
|