none
Problema al crear DynamicEntity properties RRS feed

  • Pregunta

  • Estoy tratando de crear un registro desde un WF personalizado.

    cuanfo el WF se dispara, el registro es creado, pero lo campos de tipo lookup y picklist, no se ven reflejados, no los crea.

    el proceso no arroja ningun error.

     

    este es el codigo:

    protected

     

    override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)

     

    IContextService contextService = (IContextService)executionContext.GetService(typeof(IContextService));

     

     

    IWorkflowContext context = contextService.Context;

     

     

    ICrmService crmService = context.CreateCrmService();

     

     

    Guid guid;

     

     

    DynamicEntity entity = new DynamicEntity();

    entity.Name =

     

    "igf2_saleshistory";

    entity.Properties =

     

    new PropertyCollection();

     

    //name

    entity.Properties.Add(

    new StringProperty("igf2_name", "2Venta Prueba"));

     

     

    //territory

    guid =

    new Guid("93d54199-4bbf-df11-a19e-00155d140207");

    entity.Properties.Add(

     

    new LookupProperty("igf2_historyterritoryid", new Lookup(EntityName.territory.ToString(), guid)));

     

     

    //businessunit

     

    PicklistProperty picklist = new PicklistProperty();

    picklist.Name =

     

    "igf2_historybusinessunit";

    picklist.Value =

     

    new Picklist();

     

    return base.Execute(executionContext);

    }

    picklist.Value.Value = 2;

    entity.Properties.Add(picklist);

     

    crmService.Create(entity);

     

     

     

    {

     

    jueves, 13 de enero de 2011 21:28

Respuestas

  • Hola,

     

    Puedes probar lo siguiente

    DynamicEntity dyn = new DynamicEntity();
          dyn.Name = "new_entidad";
    
          StringProperty gestamp_tipoerror = new StringProperty();
          gestamp_tipoerror.Name = "new_campo";
          gestamp_tipoerror.Value = sTipo;
    
          StringProperty gestamp_direccion = new StringProperty();
          gestamp_direccion.Name = "new_campo2";
          gestamp_direccion.Value = sDireccion;
    
          StringProperty gestamp_mensajeerror = new StringProperty();
          gestamp_mensajeerror.Name = "new_campo3";
          gestamp_mensajeerror.Value = sError;
    
          TargetCreateDynamic targetCreate = new TargetCreateDynamic();
          targetCreate.Entity = dyn;
          CreateRequest create = new CreateRequest();
          create.Target = targetCreate;
          CreateResponse created = (CreateResponse)srv.Execute(create);
    

    Por favor, adapta tu código con el código que he copiado, lo único que debes de agregar, es la parte de TargetCreateDynamic. Espero tus comentarios

    • Marcado como respuesta Alex0921 martes, 18 de enero de 2011 19:14
    lunes, 17 de enero de 2011 8:21

Todas las respuestas

  • Hola Alex0921 Medallas del usuarioMedallas del usuarioMedallas del usuarioMedallas del usuarioMedallas del usuario

    El código que nos muestras está completo, es decir, veo el cierre de unas llaves “}” pero no se ve el inicio.

    Aunque “creo” saber el problema, comenta esta línea de código

    entity.Properties = new PropertyCollection();
    

    Prueba la solución y avisanos.

    Salu2

     

    Atilin

     

    viernes, 14 de enero de 2011 8:16
  • Atilio!! en el codigo anterior no pegue el codigo completo, por eso parece inompleto...

    acabo de hacer tu recomendacion de comentariar una linea, pero sigo obteniendo el mismo resultado.

    aca el codigo completo:

     

    using

     

    System;

    using

     

    System.Collections;

    using

     

    System.Workflow.ComponentModel.Compiler;

    using

     

    System.Workflow.ComponentModel.Serialization;

    using

     

    System.Workflow.ComponentModel;

    using

     

    System.Workflow.ComponentModel.Design;

    using

     

    System.Workflow.Runtime;

    using

     

    System.Workflow.Activities;

    using

     

    System.Workflow.Activities.Rules;

    using

     

    System.Reflection;

    using

     

    Microsoft.Crm.Workflow;

    using

     

    Microsoft.Crm.Sdk;

    using

     

    Microsoft.Crm.SdkTypeProxy;

    using

     

    Microsoft.Crm.Sdk.Query;

    namespace

     

    ProyectoWF

    {

     

    [

    CrmWorkflowActivity("Almacenar Historial")]

     

    public class HistorialVentas2 : Activity

    {

     

     

    /*[CrmInput("UN")]

    [CrmAttributeTarget("opportunity", "igf2_businessline")]

    [CrmOutput("UNUOT")]

    public Picklist UN

    {

    get

    {

    return (Picklist)base.GetValue(UNProperty);

    }

    set

    {

    base.SetValue(UNProperty, value);

    }

    }

    public static DependencyProperty UNProperty = DependencyProperty.Register("UN", typeof(Picklist), typeof(HistorialVentas2));*/

    [

    CrmInput("Clasificacion")]

     

    public CrmNumber Clasificacion

    {

     

    get

    {

     

    return (CrmNumber)base.GetValue(ClasificacionProperty);

    }

     

    set

    {

     

    base.SetValue(ClasificacionProperty, value);

    }

    }

     

    public static DependencyProperty ClasificacionProperty = DependencyProperty.Register("Clasificacion", typeof(CrmNumber), typeof(HistorialVentas2));

     

     

    protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)

    {

     

    IContextService contextService = (IContextService)executionContext.GetService(typeof(IContextService));

     

    IWorkflowContext context = contextService.Context;

     

    ICrmService crmService = context.CreateCrmService();

     

    //Guid guid;

     

    DynamicEntity entity = new DynamicEntity();

    entity.Name =

    "igf2_saleshistory";

     

    //entity.Properties = new PropertyCollection();

     

     

    //name

    entity.Properties.Add(

    new StringProperty("igf2_name", "23Venta Prueba"));

     

    entity.Properties.Add(

    new CrmMoneyProperty("igf2_pipelinevalue", new CrmMoney(31)));

     

     

    //businessunit

     

    PicklistProperty picklist = new PicklistProperty();

    picklist.Name =

    "igf2_historybusinessunit";

    picklist.Value =

    new Picklist();

    picklist.Value.Value = 2;

    entity.Properties.Add(picklist);

     

    //territory

     

    // Create Properties

     

    LookupProperty terriorioId = new LookupProperty();

    terriorioId.Name =

    "igf2_historyterritoryid";

    terriorioId.Value =

    new Lookup();

    terriorioId.Value.Value =

    new Guid("93d54199-4bbf-df11-a19e-00155d140207");

    terriorioId.Value.type =

    EntityName.territory.ToString();

    entity.Properties.Add(terriorioId);

     

     

     

    crmService.Create(entity);

     

    return base.Execute(executionContext);

    }

    }

    }

    viernes, 14 de enero de 2011 22:50
  • Hola,

     

    Puedes probar lo siguiente

    DynamicEntity dyn = new DynamicEntity();
          dyn.Name = "new_entidad";
    
          StringProperty gestamp_tipoerror = new StringProperty();
          gestamp_tipoerror.Name = "new_campo";
          gestamp_tipoerror.Value = sTipo;
    
          StringProperty gestamp_direccion = new StringProperty();
          gestamp_direccion.Name = "new_campo2";
          gestamp_direccion.Value = sDireccion;
    
          StringProperty gestamp_mensajeerror = new StringProperty();
          gestamp_mensajeerror.Name = "new_campo3";
          gestamp_mensajeerror.Value = sError;
    
          TargetCreateDynamic targetCreate = new TargetCreateDynamic();
          targetCreate.Entity = dyn;
          CreateRequest create = new CreateRequest();
          create.Target = targetCreate;
          CreateResponse created = (CreateResponse)srv.Execute(create);
    

    Por favor, adapta tu código con el código que he copiado, lo único que debes de agregar, es la parte de TargetCreateDynamic. Espero tus comentarios

    • Marcado como respuesta Alex0921 martes, 18 de enero de 2011 19:14
    lunes, 17 de enero de 2011 8:21
  • Hola,

     

    Puedes probar lo siguiente

    DynamicEntity dyn = new DynamicEntity();
    
       dyn.Name = "new_entidad";
    
    
    
       StringProperty gestamp_tipoerror = new StringProperty();
    
       gestamp_tipoerror.Name = "new_campo";
    
       gestamp_tipoerror.Value = sTipo;
    
    
    
       StringProperty gestamp_direccion = new StringProperty();
    
       gestamp_direccion.Name = "new_campo2";
    
       gestamp_direccion.Value = sDireccion;
    
    
    
       StringProperty gestamp_mensajeerror = new StringProperty();
    
       gestamp_mensajeerror.Name = "new_campo3";
    
       gestamp_mensajeerror.Value = sError;
    
    
    
       TargetCreateDynamic targetCreate = new TargetCreateDynamic();
    
       targetCreate.Entity = dyn;
    
       CreateRequest create = new CreateRequest();
    
       create.Target = targetCreate;
    
       CreateResponse created = (CreateResponse)srv.Execute(create);
    
    

    Por favor, adapta tu código con el código que he copiado, lo único que debes de agregar, es la parte de TargetCreateDynamic. Espero tus comentarios


    Exacto!! esto era lo que me faltaba, mi proceso estaba dividido en 2 etapas.

    1. Primero necesitaba que se me creara el registro, con unos valores basicos

    2.. Ya teniendo el proceso anterior listo! necesitaba hacer unos query para calcular unos valores y reemplazarlos por los basicos que habia puesto en el ejemplo que expuse en este post.

     

    muchas gracias atilio! me fue de gran ayuda tu aporte!

    martes, 18 de enero de 2011 19:17