none
Plugin al crear una cuenta RRS feed

  • Pregunta

  • Hola a todos, estoy intentando crear un plugin que haga un determinado trabajo en el momento que se cree una cuenta, pero en el visor de sucesos me da un error:

    Invalid Trace Directory. Additional Info:[ Unable to Write file , Trace directory not defined (Reporting Process:File Name is Null. LocalTraceSettings: {Filename:  ,FileCountSuffix:1 ,TraceFileSize:10485760 ,TraceDirectory: ,TracingCallStack:Yes ,IsTracingOff:No ,LoadState:LoadSuccessfulUnreported ,RefreshTraceInt:-1 ,SiteWideRefreshTraceInt:-1 ,RegistryRefreshTraceInt:-1} ] , AppDomain:CrmAsyncService)

    Sobre el mensaje estoy un poco perdido. Soy nuevo en esto y la información que encuentro es escasa, a ver si me podiais hechar una mano. El código es el siguiente:

    using System;
    using System.Collections.Generic;
    using System.Data.SqlClient;
    using System.Runtime.Serialization;
    using System.ServiceModel;
    using Microsoft.Xrm.Sdk;
    using Microsoft.Crm;

    namespace SBPlugin
    {
        public class cPlugInsertERPClien: IPlugin
        {
           public void Execute(IServiceProvider serviceProvider)
            {
                // Obtain the execution context from the service provider.
                IPluginExecutionContext context =
                    (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));

                // Get a reference to the organization service.
                IOrganizationServiceFactory factory =
                    (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
                IOrganizationService service = factory.CreateOrganizationService(context.UserId);

                // Get a reference to the tracing service.
                ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
                // Compruebo si el elemto pasado en una entidad
                if (context.InputParameters.Contains("Target") &&
                    context.InputParameters["Target"] is Entity)
                {
                    // compruebo que la entidad sea la de cuentas
                    Entity entidad = new Entity();
                    if (entidad.LogicalName == "account")
                    {

                        try
                        {
                            // Plug-in business logic goes below this line.
                            // Invoke organization service methods.

                            string sNumCuenta = (string)entidad.Attributes["accountnumber"];
                            string sNomCuenta = (string)entidad.Attributes["name"];
                            int iDia1 = (int)entidad.Attributes["new_dia1"];
                            int iDia2 = (int)entidad.Attributes["new_dia2"];
                            int iDiasCC = (int)entidad.Attributes["new_diascc"];
                            bool bExentoIva = (bool)entidad.Attributes["new_exentoiva"];
                            DateTime dFechaCC = (DateTime)entidad.Attributes["new_fechacc"];
                            int iFPago = (int)entidad.Attributes["new_formadepago"];
                            long lImporteCC = (long)entidad.Attributes["new_importecc"];
                            bool bManto = (bool)entidad.Attributes["new_mantenimiento"];
                            string sNumeroCC = (string)entidad.Attributes["new_numerocc"];
                            string sTipoClient = (string)entidad.Attributes["new_tipocliente"];
                            string sSubTipCli = (string)entidad.Attributes["new_subtipocliente"];
                            string sTipo = (string)entidad.Attributes["new_tipo"];
                            string sTipoId = (string)entidad.Attributes["new_tipoid"];
                            string sTipoIva = (string)entidad.Attributes["new_tipoiva"];
                            string sTelefono = (string)entidad.Attributes["telephone1"];
                            bool bAplicarRecargo = (bool)entidad.Attributes["new_aplicarrecargo"];
                            bool bAsegurado = (bool)entidad.Attributes["new_asegurado"];
                            string sCif = (string)entidad.Attributes["new_cif"];
                            int iCopias = (int)entidad.Attributes["new_copias"];
                            string sEmail = (string)entidad.Attributes["emailaddres1"];
                            string sDireccion = (string)entidad.Attributes["address1_line1"];
                            string sCodPostal = (string)entidad.Attributes["address1_postalcode"];
                            string sPobla = (string)entidad.Attributes["address1_city"];
                            string sProvincia = (string)entidad.Attributes["address1_stateorprovince"];
                            string sCiudad = (string)entidad.Attributes["address1_country"];
                            string sFax = (string)entidad.Attributes["fax"];
                            string sWeb = (string)entidad.Attributes["websiteurl"];

                            Console.WriteLine("El parámetro tiene el valor {0} ", sNumCuenta);

                        }
                        catch (FaultException<OrganizationServiceFault> ex)
                        {
                            throw new InvalidPluginExecutionException("Un error ocurrido en el cPlugImporClien plug-in.", ex);
                        }
                    }
                    else
                    {
                        return;
                    }

                }
            }

        }
    }

    En si no hace ahora mismo nada pero quiero ver que se ejecuta correctamente. Esta registrado en el metodo Create de la entidad account y esta como asincrono. Os agradeceria vuestra ayuda. Gracias.

    martes, 31 de mayo de 2011 11:51

Respuestas

Todas las respuestas