using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Crm.Sdk;
using Microsoft.Crm.SdkTypeProxy;
using Microsoft.Crm.Sdk.Query;
namespace LeadConversionPlugin
{
public class ContactCreationHandler : IPlugin
{
#region IPlugin Members
public void Execute(IPluginExecutionContext context)
{
if (context.MessageName == MessageName.Create &&
context.InputParameters.Contains("Target") &&
context.InputParameters["Target"] is DynamicEntity)
{
DynamicEntity entity = (DynamicEntity)context.InputParameters["Target"];
//Проверка, что в сущность в контексте - это контакт
if (entity.Name != EntityName.contact.ToString())
return;
//Проверка, что контакт - создан при помощи
//конвертации из интереса
if (!entity.Properties.Contains("originatingleadid"))
return;
//Запоминаем идентификатор интереса - источника
Guid leadid = ((Lookup)entity["originatingleadid"]).Value;
//Идентификатор контакта, который получится после конвертации
Guid contactid = (Guid)context.OutputParameters["Id"];
ICrmService crmservice = context.CreateCrmService(true);
//Строим запрос для получения всех вложений -
//примечаний и файлов-вложений
QueryByAttribute query = new QueryByAttribute();
query.ColumnSet = new AllColumns();
query.EntityName = EntityName.annotation.ToString();
query.Attributes = new string[] { "objectid" };
query.Values = new object[] { leadid };
RetrieveMultipleRequest request = new RetrieveMultipleRequest();
request.Query = query;
request.ReturnDynamicEntities = false;
RetrieveMultipleResponse response = (RetrieveMultipleResponse)crmservice.Execute(request);
foreach (annotation note in response.BusinessEntityCollection.BusinessEntities)
{
//Просто обнуляем свойство
note.annotationid = null;
//Изменяем ссылку annotation с интереса на контакт который будет создан
note.objectid = new Lookup(EntityName.contact.ToString(), contactid);
note.objecttypecode = new EntityNameReference(EntityName.contact.ToString());
//Создаём запись
crmservice.Create(note);
}
}
}
#endregion IPlugin Members
}
}
Далее необходимо выполнить подпись сборки (застронгнеймить), собрать библиотеку с плагином и выполнить её регистрацию в CRM. Для регистрации данного шага можете воспользоваться следующим скриншотом:
Комментариев нет:
Отправить комментарий