none
Mettre à jour une champs de recherche dans l'unité incident RRS feed

  • Question

  • Bonjour à tous,

    J'ai programmé un boute de code faisant en sorte que lorsqu'une nouvelle instance d'une entité customizée est crée, un champs de recherche de l'entité incident reliée à l'instance précédente est mis à jour avec les références de l'instance nouvellement crée. Le code s'exécute sans problème et j'ai vérifié qu'il passait par toutes les conditions. Cependant le champs ne se met pas à jour, j'ai testé le code sur d'autres champs qui ne se mettent pas à jour non plus...Où est mon erreur?

    public void Execute(IServiceProvider serviceProvider)
            {
                // Instanciation des services
               
                IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
                IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
                IOrganizationService service = factory.CreateOrganizationService(null);
    
                Entity target = (Entity)context.InputParameters["Target"];
                EntityReference contrats = (EntityReference)target.Attributes["new_contratsid"];
                FetchExpression fetch = new FetchExpression(@"
                        <fetch distinct='false' mapping='logical'>
                          <entity name='" + context.PrimaryEntityName + "'><link-entity name='new_contrats' alias='nombreligne' from='new_contratsid' to='new_contratsid'><filter type='and'><condition attribute='new_contratsid' value='" + contrats.Id + "' operator='eq'></condition></filter></link-entity></entity></fetch>");
               
                EntityCollection lines = service.RetrieveMultiple(fetch);
    
                      // Vérification qu'il y a au moins une ligne de contrat associée
                if (lines.Entities.Any())
                {
                    var first = lines.Entities.Last();
                  
                    if (first.GetAttributeValue<OptionSetValue>("statecode").Value == 1)
                    {
                        FetchExpression query = new FetchExpression(@"
                            <fetch distinct='false' mapping='logical'>
                            <entity name='incident'><link-entity name='new_lignecontrat' alias='ligneContrat' from='new_lignecontratid' to='new_lignecontrat'><filter type='and'><condition attribute='new_lignecontratid' value='" + first.Id + "' operator='eq'></condition></filter></link-entity></entity></fetch>");
    
                        EntityCollection incident = service.RetrieveMultiple(query);
    
                        if (incident.Entities.Any())
                        {
                            foreach (var e in incident.Entities)
                            {
                                if (e.GetAttributeValue<OptionSetValue>("statecode").Value == 0)
                                {
                                    EntityReference active = e.GetAttributeValue<EntityReference>("new_lignecontrat");
                                    active = new EntityReference(target.LogicalName, target.Id);
                                    var test = e.GetAttributeValue<String>("new_ville");
                                    test = "Lyon";
                                    service.Update(e);
                                   
                                }
                            }
                           
                        }
                     }
                  }
               }      
    
            }
        }

    Merci d'avance !

    lundi 6 février 2012 10:51

Toutes les réponses