首页 > 解决方案 > 使用插件更新时删除 invoiceid 的问题

问题描述

我正在尝试创建一个插件,在更新状态和同步模式下删除每个InvoiceDetail(因为 Asyncronous 也不起作用),所以,我尝试在更新时获取每个InvoiceDetail的InvoiceDetailId,然后将其删除

第一的:

// get the invoicedetailid  
var The_Guid_InvoiceDetail_ID = entity.GetAttributeValue<Guid>("invoicedetailid");

接着

// just delet it
service.Delete("invoicedetail", The_Guid_InvoiceDetail_ID);

理论上,如果我有一个订单,有几个OrderDetails,我点击“创建发票”,每个新的InvoiceDetail都应该被自动删除,我的新发票将没有任何InvoiceDetail

但我得到一个错误

Id = 3851d9d4-5e4c-e811-80fe-3863bb35fc90 的 InvoiceDetail 不存在

如果我有多个订单详细信息,就会发生这种情况,如果我只有一个,它将被删除

请帮忙!!

我的代码:

namespace My_Cool_Plugin
{
    public class Class1 : IPlugin
    {
        public void Execute(IServiceProvider serviceProvider)
        {
            IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
            IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
            IOrganizationService service = (IOrganizationService)factory.CreateOrganizationService(context.UserId);
            ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService));


            if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
            {
                Entity entity = (Entity)context.InputParameters["Target"];

                var The_Guid_InvoiceDetail_ID = entity.GetAttributeValue<Guid>("invoicedetailid");

                service.Delete("invoicedetail", The_Guid_InvoiceDetail_ID);

            } // if context end
        } // Execute end
    } // class Class1 end
} // namespace end

标签: c#pluginsdynamics-crmmicrosoft-dynamics

解决方案


推荐阅读