Мы работаем на CRM 2013 по требованию. Я пишу плагин, который срабатывает при обновлении поля в элементе Quote.Записать плагин CRM, который срабатывает при обновлении поля
Итак, я зарегистрировал свой плагин в сообщении «Обновить». Затем событие «Пост-операция». (Я пытался выполнить предварительную операцию, но все равно не повезло)
В основном цель заключается в том, когда поле обновляется, создается новый объект «ContractShell», а затем создается связь между Цитатой и недавно созданной «Контрактной оболочкой».
Однако моя проблема в том, когда поле обновляется, мой плагин никогда не срабатывает. Я просто просто помещаю InvalidPluginExecutionException в свой код, но по какой-то причине он никогда не срабатывает .... Любые идеи? Благодарю.
Вот скриншот моего шага плагина:
Вот мой код:
var trace = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
// The InputParameters collection contains all the data passed in the message request.
var targetEntity = context.GetParameterCollection<Entity>(context.InputParameters, "Target");
if (targetEntity == null)
throw new InvalidPluginExecutionException(OperationStatus.Failed, "Target Entity cannot be null");
if (!context.OutputParameters.Contains("id"))
return;
Guid QuoteId = (Guid)targetEntity.Attributes["quoteid"];
var serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
var service = serviceFactory.CreateOrganizationService(context.UserId);
var contractShellEntity = new Entity();
contractShellEntity = new Entity("new_);
//assign the portfolio
if (targetEntity.Attributes.Contains(Schema.Quote.Portfolio))
{
var quotePortfolio = (EntityReference)targetEntity.Attributes[Schema.Quote.Portfolio];
contractShellEntity[Schema.new_ContractShell.PortfolioName] = new EntityReference(quotePortfolio.LogicalName, quotePortfolio.Id);
}
var contractShellId = service.Create(contractShellEntity);
throw new InvalidPluginExecutionException(OperationStatus.Failed, "I created New Contract Shell");
//Creating relationship between Contract Shell and the newly created Accounts
var quoteContractReferenceCollection = new EntityReferenceCollection();
var quoteContractRelatedEntity = new EntityReference
{
Id = contractShellId,
LogicalName = contractShellEntity.LogicalName
};
quoteContractReferenceCollection.Add(quoteContractRelatedEntity);
var quoteContractReferenceCollectionRelRelationship = new Relationship
{
SchemaName = Schema.new_ContractShell.ContractQuoteRelationship
};
service.Associate("quote", QuoteId, quoteContractReferenceCollectionRelRelationship, quoteContractReferenceCollection);
вам будет хорошо, чтобы показать, как выглядит ваша регистрация плагина. Основываясь на том, как вы зарегистрировали его, может быть множество причин, по которым ** появляется **, чтобы не запускать этот плагин. –
Какое сообщение об ошибке? –
Нет сообщения об ошибке. Плагин просто просто не запускается. Я попытался помещать сообщение InvalidPluginExecutionException выше в начале кода, но так и не уволился ... Я попробовал как «пост-операцию», так и «предварительную операцию», но все равно не повезло. – ichachan