//--------------------------------------
        private void InitChamps()
        {
            m_txtNomChamp.Text       = m_champEdite.NomChamp;
            m_txtDescription.Text    = m_champEdite.Description;
            m_lblDataType.Text       = new CTypeChampBasique(m_champEdite.TypeChamp).Libelle;
            m_chkNoUpdate.Checked    = m_champEdite.NoUpdateFromSnmp;
            m_chkNoWriteSNMP.Checked = m_champEdite.IsReadOnly;
            m_lblAcces.Text          = m_champEdite.IsReadOnly ? I.T("Read only|20296") : I.T("Read/write|20297");

            CFournisseurGeneriqueProprietesDynamiques fournisseur = new CFournisseurGeneriqueProprietesDynamiques();
            CEntiteSnmpPourSupervision entiteTest = m_typeEntite.GetEntiteDeTest();

            m_txtFormuleIndex.Init(fournisseur,
                                   new CObjetPourSousProprietes(entiteTest));
            m_txtFormuleIndex.Formule = m_champEdite.FormuleIndex;

            TypeDonnee typeChampMap = TypeDonnee.tString;

            switch (m_champEdite.TypeChamp)
            {
            case ETypeChampBasique.Bool:
                typeChampMap = TypeDonnee.tBool;
                break;

            case ETypeChampBasique.Date:
                typeChampMap = TypeDonnee.tDate;
                break;

            case ETypeChampBasique.Decimal:
                typeChampMap = TypeDonnee.tDouble;
                break;

            case ETypeChampBasique.Int:
                typeChampMap = TypeDonnee.tEntier;
                break;

            case ETypeChampBasique.String:
                typeChampMap = TypeDonnee.tString;
                break;

            default:
                break;
            }
            m_txtSelectChampCustom.InitAvecFiltreDeBase(typeof(CChampCustom),
                                                        "Nom",
                                                        CFiltreData.GetAndFiltre(CChampCustom.GetFiltreChampsForRole(CEntiteSnmp.c_roleChampCustom),
                                                                                 new CFiltreData(CChampCustom.c_champType + "=@1",
                                                                                                 (int)typeChampMap)),
                                                        false);
            CChampCustom champ = new CChampCustom(m_contexteDonnee);

            if (m_champToCustom.IdChampCustom != null && champ.ReadIfExists(m_champToCustom.IdChampCustom.Value))
            {
                m_txtSelectChampCustom.ElementSelectionne = champ;
            }
            else
            {
                m_txtSelectChampCustom.ElementSelectionne = null;
            }
        }
Exemple #2
0
 //---------------------------------------------------------------------
 public void SetValeur(object objet, object valeur)
 {
     if (objet != null && objet is IObjetDonneeAChamps)
     {
         if (valeur is int)
         {
             if ((int)valeur >= 0)
             {
                 CContexteDonnee contexte = ((IObjetDonneeAChamps)objet).ContexteDonnee;
                 CChampCustom    champ    = new CChampCustom(contexte);
                 if (champ.ReadIfExists(IdChampCustom))
                 {
                     CObjetDonneeAIdNumerique objetDonne = (CObjetDonneeAIdNumerique)Activator.CreateInstance(champ.TypeObjetDonnee, new object[] { contexte });
                     if (objetDonne.ReadIfExists((int)valeur))
                     {
                         CUtilElementAChamps.SetValeurChamp((IObjetDonneeAChamps)objet, m_nIdChampCustom, objetDonne);
                     }
                     else
                     {
                         throw new Exception(I.T("Object @1 @2 doesn't exist|515",
                                                 DynamicClassAttribute.GetNomConvivial(champ.TypeObjetDonnee),
                                                 valeur.ToString()));
                     }
                 }
             }
         }
         else
         {
             CUtilElementAChamps.SetValeurChamp((IObjetDonneeAChamps)objet, m_nIdChampCustom, null);
         }
     }
 }
Exemple #3
0
        private static void ImporterChamps()
        {
            StreamReader reader   = new StreamReader("C:\\Partage\\Import Orange\\Champs controles.txt", Encoding.Default);
            string       strLigne = reader.ReadLine();

            strLigne = reader.ReadLine();
            using (CContexteDonnee contexte = new CContexteDonnee(CSessionClient.GetSessionUnique().IdSession, true, false))
            {
                while (strLigne != null)
                {
                    CRoleChampCustom roleSite            = CRoleChampCustom.GetRole(CSite.c_roleChampCustom);
                    CRoleChampCustom roleWorkBook        = CRoleChampCustom.GetRole(CDossierSuivi.c_roleChampCustom);
                    CRoleChampCustom roleCaracteristique = CRoleChampCustom.GetRole(CCaracteristiqueEntite.c_roleChampCustom);
                    string[]         datas = strLigne.Split('\t');
                    if (datas.Length >= 1)
                    {
                        CChampCustom champ = new CChampCustom(contexte);
                        if (!champ.ReadIfExists(new CFiltreData(CChampCustom.c_champNom + "=@1",
                                                                datas[0])))
                        {
                            champ.CreateNewInCurrentContexte();
                        }
                        champ.Nom = datas[0];
                        C2iTypeDonnee tp = new C2iTypeDonnee(TypeDonnee.tString);
                        if (datas.Length > 1)
                        {
                            if (datas[1].ToUpper() == "BOOL")
                            {
                                tp = new C2iTypeDonnee(TypeDonnee.tBool);
                            }
                            else if (datas[1].ToUpper() == "DATE")
                            {
                                tp = new C2iTypeDonnee(TypeDonnee.tDate);
                            }
                        }
                        champ.TypeDonneeChamp = tp;
                        champ.Categorie       = "";
                        if (datas.Length > 2)
                        {
                            champ.Categorie = datas[2];
                        }
                        CRoleChampCustom role = roleCaracteristique;
                        champ.Role = role;
                    }
                    strLigne = reader.ReadLine();
                }
                reader.Close();
                CResultAErreur result = contexte.SaveAll(true);
                if (!result)
                {
                    CFormAfficheErreur.Show(result.Erreur);
                }
            }
        }
        //-------------------------------------------------------
        private void InitChamps()
        {
            if (m_blocWorkflow == null)
            {
                return;
            }
            m_txtSelectWorkflow.Init(typeof(CTypeWorkflow),
                                     "Libelle",
                                     false);
            if (m_blocWorkflow.DbKeyTypeWorkflow != null)
            {
                CTypeWorkflow wkf = new CTypeWorkflow(CSc2iWin32DataClient.ContexteCourant);
                if (wkf.ReadIfExists(m_blocWorkflow.DbKeyTypeWorkflow))
                {
                    m_txtSelectWorkflow.ElementSelectionne = wkf;
                }
            }
            m_txtSelectTypeProjet.Init(typeof(CTypeProjet),
                                       "Libelle",
                                       false);
            if (m_blocWorkflow.DbKeyTypeProjet != null)
            {
                CTypeProjet typeProjet = new CTypeProjet(CSc2iWin32DataClient.ContexteCourant);
                if (typeProjet.ReadIfExists(m_blocWorkflow.DbKeyTypeProjet))
                {
                    m_txtSelectTypeProjet.ElementSelectionne = typeProjet;
                }
            }
            m_cmbProjectField.Init(typeof(CChampCustom),
                                   CFiltreData.GetAndFiltre(CChampCustom.GetFiltreChampsForRole(CWorkflow.c_roleChampCustom),
                                                            new CFiltreData(
                                                                CChampCustom.c_champTypeObjetDonnee + "=@1",
                                                                typeof(CProjet).ToString())),
                                   "Nom",
                                   false);
            if (m_blocWorkflow.IdChampProjet != null)
            {
                CChampCustom champ = new CChampCustom(CSc2iWin32DataClient.ContexteCourant);
                if (champ.ReadIfExists(m_blocWorkflow.IdChampProjet.Value))
                {
                    m_cmbProjectField.ElementSelectionne = champ;
                }
            }

            m_listeAffectations.Clear();
            m_listeAffectations.AddRange(m_blocWorkflow.AffectationsCreationEtDemarrage);

            m_txtFormuleGanttId.Init(new CFournisseurPropDynStd(),
                                     typeof(CEtapeWorkflow));
            m_txtFormuleGanttId.Formule = m_blocWorkflow.FormuleGanttId;

            m_chkGererIterations.Checked = m_blocWorkflow.GererIteration;
        }
 /// <summary>
 ///
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void m_lnkCreateField_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
 {
     if (m_txtSelectChampCustom.ElementSelectionne == null)
     {
         m_champToCustom.IdChampCustom = null;
         if (m_champToCustom.AssociationRapide(m_contexteDonnee, true))
         {
             CChampCustom champ = new CChampCustom(m_contexteDonnee);
             if (m_champToCustom.IdChampCustom != null && champ.ReadIfExists(m_champToCustom.IdChampCustom.Value, false))
             {
                 m_txtSelectChampCustom.ElementSelectionne = champ;
             }
         }
     }
 }
Exemple #6
0
        //-------------------------------------------------------------------
        public override CResultAErreur TraitementAvantSauvegarde(CContexteDonnee contexte)
        {
            CResultAErreur result = base.TraitementAvantSauvegarde(contexte);

            if (result)
            {
                result = SObjetHierarchiqueServeur.TraitementAvantSauvegarde(contexte, GetNomTable());
            }
            DataTable table = contexte.Tables[GetNomTable()];

            if (table == null)
            {
                return(result);
            }
            ArrayList lst = new ArrayList(table.Rows);
            Dictionary <int, CMapChampEntiteToRowCustom> dicEntitesToChamps = new Dictionary <int, CMapChampEntiteToRowCustom>();

            foreach (DataRow row in table.Rows)
            {
                if (row.RowState == DataRowState.Modified || row.RowState == DataRowState.Added)
                {
                    CTypeEntiteSnmp            typeEntite = new CTypeEntiteSnmp(row);
                    CMapChampEntiteToRowCustom map        = null;
                    foreach (CChampEntiteFromQueryToChampCustom champ in typeEntite.ChampsFromQuery)
                    {
                        if (champ.IdChampCustom != null && champ.IdChampCustom.Value < 0)
                        {
                            CChampCustom champCustom = new CChampCustom(contexte);
                            if (champCustom.ReadIfExists(champ.IdChampCustom.Value, false))
                            {
                                if (map == null)
                                {
                                    map = new CMapChampEntiteToRowCustom();
                                    dicEntitesToChamps[typeEntite.Id] = map;
                                }
                                map[champ.Champ.Id] = champCustom.Row.Row;
                            }
                        }
                    }
                }
            }
            if (dicEntitesToChamps.Count > 0)
            {
                table.ExtendedProperties[GetType()] = dicEntitesToChamps;
            }
            return(result);
        }
Exemple #7
0
        //-------------------------------------------------------------------------------
        public CResultAErreurType <string> GetFieldOIDWithEntitePourSupervision(int nIdChampCustom, CEntiteSnmpPourSupervision ettPourSup)
        {
            CResultAErreurType <string> resString = new CResultAErreurType <string>();
            CColumnDefinitionSNMP       colSnmp   = GetSourceColumn(nIdChampCustom);

            if (colSnmp == null)
            {
                CChampCustom champ    = new CChampCustom(ContexteDonnee);
                string       strChamp = nIdChampCustom.ToString();
                if (champ.ReadIfExists(nIdChampCustom))
                {
                    strChamp = champ.Nom;
                }
                resString.EmpileErreur(I.T("Can not find snmp source for @1|20099", strChamp));
                return(resString);
            }

            IEnumerable <CChampEntiteFromQueryToChampCustom> lstChamps = TypeEntiteSnmp.ChampsFromQuery;
            CChampEntiteFromQueryToChampCustom assocChamp = lstChamps.FirstOrDefault(c => c.IdChampCustom == nIdChampCustom);
            string strOID   = colSnmp.OIDString;
            string strIndex = Index;

            if (assocChamp != null && assocChamp.Champ.FormuleIndex != null)
            {
                if (ettPourSup == null)
                {
                    ettPourSup = GetEntitePourSupervision(TypeEntiteSnmp.GetTypeEntitePourSupervision(null, false));
                }
                CContexteEvaluationExpression ctxEval = new CContexteEvaluationExpression(ettPourSup);
                CResultAErreur resTmp = assocChamp.Champ.FormuleIndex.Eval(ctxEval);
                if (resTmp && resTmp.Data != null)
                {
                    strIndex = resTmp.Data.ToString();
                }
            }
            if (strIndex.Length > 0)
            {
                if (!strIndex.StartsWith("."))
                {
                    strOID += ".";
                }
                strOID += strIndex;
            }
            resString.DataType = strOID;
            return(resString);
        }
Exemple #8
0
        //----------------------------------------------------
        public bool AssociationRapide(CContexteDonnee ctxEnEdition, bool bCreationAutomatique)
        {
            if (Champ == null)
            {
                return(false);
            }
            if (IdChampCustom != null)
            {
                return(true);
            }
            string strNomChamp         = Champ.NomChamp;
            CListeObjetsDonnees lst    = new CListeObjetsDonnees(ctxEnEdition, typeof(CChampCustom));
            CFiltreData         filtre = new CFiltreData(CChampCustom.c_champNom + " like @1",
                                                         strNomChamp);
            CChampCustom champ           = new CChampCustom(ctxEnEdition);
            TypeDonnee   typeChampCustom = GetTypeChampCustom(Champ.TypeChamp);
            int          nIndex          = 0;

            while (champ.ReadIfExists(filtre))
            {
                if (champ.CodeRole == CEntiteSnmp.c_roleChampCustom &&
                    champ.TypeDonneeChamp.TypeDonnee == typeChampCustom)
                {
                    IdChampCustom = champ.Id;
                    return(true);
                }
                nIndex++;
                strNomChamp          = Champ.NomChamp + "_" + nIndex;
                filtre.Parametres[0] = strNomChamp;
            }
            if (!bCreationAutomatique)
            {
                return(false);
            }
            champ = new CChampCustom(ctxEnEdition);
            champ.CreateNewInCurrentContexte();
            champ.Nom           = strNomChamp;
            champ.TypeDonneeInt = (int)typeChampCustom;
            champ.CodeRole      = CEntiteSnmp.c_roleChampCustom;
            IdChampCustom       = champ.Id;
            return(true);
        }
Exemple #9
0
        //-------------------------------------------------
        private CResultAErreurType <C2iExpression> GetFormuleFinaleForEntite(CEntiteSnmp entite)
        {
            CResultAErreurType <C2iExpression> result = new CResultAErreurType <C2iExpression>();

            if (m_formulePolling == null)
            {
                result.EmpileErreur(I.T("Can not apply formula to entity @1|20254",
                                        entite.Libelle));
                return(result);
            }
            C2iExpression formule = CCloner2iSerializable.Clone(m_formulePolling) as C2iExpression;
            ArrayList     lst     = formule.ExtractExpressionsType(typeof(C2iExpressionChamp));

            foreach (C2iExpressionChamp exp in lst)
            {
                CDefinitionProprieteDynamiqueChampCustom def = exp.DefinitionPropriete as CDefinitionProprieteDynamiqueChampCustom;
                string strOID = null;
                if (def != null)
                {
                    CChampCustom champ = new CChampCustom(CContexteDonneeSysteme.GetInstance());
                    if (champ.ReadIfExists(def.DbKeyChamp))
                    {
                        strOID = entite.GetFieldOID(champ.Id);
                        if (strOID.Trim().Length == 0)
                        {
                            strOID = null;
                        }
                        else
                        {
                            exp.DefinitionPropriete = new CDefinitionProprieteDynamiqueOID(strOID);
                        }
                    }
                }
                if (strOID == null)
                {
                    result.EmpileErreur(I.T("Can not find SNMP field for @1|20255", def.Nom));
                    return(result);
                }
            }
            result.Data = formule;
            return(result);
        }
        private CResultAErreur ImputeDureeSurActivite(CFractionIntervention fraction)
        {
            CResultAErreur result = CResultAErreur.True;

            if (fraction.DateDebut == null ||
                fraction.DateFin == null)
            {
                return(result);
            }
            if (fraction.TempsDeTravail == null)
            {
                return(result);
            }
            Hashtable tableToDelete = new Hashtable();

            //Stocke la liste des relations qui étaient présentes avant le travail
            //et les note comme étant à supprimer
            foreach (CIntervention_ActiviteActeur rel in fraction.RelationsActivite)
            {
                tableToDelete[rel] = true;
            }
            CTypeActiviteActeur typeActivite = fraction.Intervention.TypeIntervention.TypeActiviteActeur;
            bool bAvecSite = typeActivite.SiteObligatoire;

            if (typeActivite != null)
            {
                //Evalue les valeurs des champs custom pour l'activite
                CParametreRemplissageActiviteParIntervention parametreRemplissage = fraction.Intervention.TypeIntervention.ParametreRemplissageActivite;
                Dictionary <CChampCustom, object>            valeursChamps        = new Dictionary <CChampCustom, object>();
                CContexteEvaluationExpression ctxEval = new CContexteEvaluationExpression(fraction);
                if (parametreRemplissage != null)
                {
                    foreach (CRemplisssageChampActiviteActeur remplissage in parametreRemplissage.ListeRemplissage)
                    {
                        CChampCustom champ = new CChampCustom(fraction.ContexteDonnee);

                        if (champ.ReadIfExists(remplissage.IdChampCustom))
                        {
                            C2iExpression formule = remplissage.Formule;
                            if (formule != null)
                            {
                                result = formule.Eval(ctxEval);
                                if (result)
                                {
                                    valeursChamps[champ] = result.Data;
                                }
                            }
                        }
                    }
                }

                foreach (CIntervention_Intervenant relIntervenant in fraction.Intervention.RelationsIntervenants)
                {
                    DateTime dt = ((DateTime)fraction.DateDebut).Date;

                    //Attention, si on est sur une fraction sur plusieurs jours, le
                    //pb est que la durée saisie (retenue pour l'intervention) peut
                    //ne pas être égale aux différents jours d'imputation,
                    //on réparti donc la durée de manière homogène sur les différents
                    //Jour en faisant un prorata de chaque jour
                    double fDureeAImputer = (double)fraction.TempsDeTravail;
                    double fDureeReelle   = (double)fraction.DureeReelle;


                    while (dt < (DateTime)fraction.DateFin && fDureeAImputer > 0)
                    {
                        //Cherche pour l'intervention ses activités du bon type
                        CFiltreData filtre = new CFiltreDataAvance(CActiviteActeur.c_nomTable,
                                                                   CTypeActiviteActeur.c_champId + "=@1 and " +
                                                                   CActiviteActeur.c_champDate + ">=@2 and " +
                                                                   CActiviteActeur.c_champDate + "<@3 and " +
                                                                   "Has(" + CIntervention_ActiviteActeur.c_nomTable + "." +
                                                                   CIntervention_ActiviteActeur.c_champId + ") and " +
                                                                   CActeur.c_champId + "=@4",
                                                                   typeActivite.Id,
                                                                   dt,
                                                                   dt.AddDays(1),
                                                                   relIntervenant.Intervenant.Id);
                        if (bAvecSite)
                        {
                            filtre = CFiltreData.GetAndFiltre(filtre,
                                                              new CFiltreData(CSite.c_champId + "=@1",
                                                                              fraction.Intervention.Site.Id));
                        }
                        CListeObjetsDonnees listeActivites = new CListeObjetsDonnees(fraction.ContexteDonnee, typeof(CActiviteActeur));
                        listeActivites.Filtre = filtre;
                        listeActivites.ReadDependances("RelationsInterventions");
                        CActiviteActeur activiteRetenue         = null;
                        CIntervention_ActiviteActeur relRetenue = null;
                        foreach (CActiviteActeur activite in listeActivites)
                        {
                            bool bPrendre = true;
                            foreach (KeyValuePair <CChampCustom, object> chpValeur in valeursChamps)
                            {
                                object valDeAct = activite.GetValeurChamp(chpValeur.Key.Id);
                                if (valDeAct == null && chpValeur.Value != null)
                                {
                                    bPrendre = false;
                                    break;
                                }
                                else if (chpValeur.Value == null && valDeAct != null)
                                {
                                    bPrendre = false;
                                    break;
                                }
                                else if (chpValeur.Value != null && !chpValeur.Value.Equals(valDeAct))
                                {
                                    bPrendre = false;
                                    break;
                                }
                            }
                            if (bPrendre)
                            {
                                activiteRetenue = activite;
                                relRetenue      = null;
                                foreach (CIntervention_ActiviteActeur relInter in activiteRetenue.RelationsInterventions)
                                {
                                    //Si l'activité est directement liée à cette fraction, prend celle ci de préférence
                                    if (relInter.FractionIntervention.Id == fraction.Id)
                                    {
                                        relRetenue = relInter;
                                        break;
                                    }
                                }
                            }
                        }
                        if (activiteRetenue == null)
                        {
                            //Création de l'activite
                            activiteRetenue = new CActiviteActeur(fraction.ContexteDonnee);
                            activiteRetenue.CreateNewInCurrentContexte();
                            activiteRetenue.TypeActiviteActeur = typeActivite;
                            activiteRetenue.Acteur             = relIntervenant.Intervenant;
                            activiteRetenue.Date  = dt;
                            activiteRetenue.Duree = 0;
                            if (bAvecSite)
                            {
                                activiteRetenue.Site = fraction.Intervention.Site;
                            }
                            foreach (KeyValuePair <CChampCustom, object> valChamp in valeursChamps)
                            {
                                activiteRetenue.SetValeurChamp(valChamp.Key.Id, valChamp.Value);
                            }
                        }
                        if (relRetenue == null)
                        {
                            //Création de la relation à l'interventation
                            relRetenue = new CIntervention_ActiviteActeur(fraction.ContexteDonnee);
                            relRetenue.ActiviteActeur       = activiteRetenue;
                            relRetenue.DureeImputee         = 0;
                            relRetenue.FractionIntervention = fraction;
                        }

                        //Note que cette relation ne doit pas être supprimée
                        tableToDelete[relRetenue] = false;

                        double fDureeForThis = 0;
                        if (dt == fraction.DateFin.Value.Date)
                        {
                            fDureeForThis = fDureeAImputer;                            //On affecte le reste
                        }
                        else
                        {
                            if (dt == fraction.DateDebut.Value.Date)
                            {
                                //On est sur le premier jour,
                                //Utilise comme référence le temps qui sépare la date
                                //de début de minuit
                                TimeSpan sp     = dt.AddDays(1) - fraction.DateDebut.Value;
                                double   fRatio = sp.TotalHours / fDureeReelle;
                                fDureeForThis = fRatio * fraction.TempsDeTravail.Value;
                            }
                            else
                            {
                                fDureeForThis = 24.0 / fDureeReelle * fraction.TempsDeTravail.Value;
                            }
                            //Arrondi la durée calculé à la minute
                            fDureeForThis = (int)fDureeForThis + (int)((fDureeForThis - (int)fDureeForThis) * 60.0 + .5) / 60.0;
                        }
                        fDureeAImputer -= fDureeForThis;

                        if (relRetenue.DureeImputee != fDureeForThis)
                        {
                            //Impute la durée de la fraction sur l'activité
                            relRetenue.ActiviteActeur.Duree -= relRetenue.DureeImputee;
                            relRetenue.DureeImputee          = (double)fDureeForThis;
                            relRetenue.ActiviteActeur.Duree += fDureeForThis;
                        }
                        dt = dt.AddDays(1);
                    }
                }
            }
            foreach (DictionaryEntry entry in tableToDelete)
            {
                if ((bool)entry.Value)
                {
                    //Supprime la relation
                    CIntervention_ActiviteActeur relToDelete = (CIntervention_ActiviteActeur)entry.Key;
                    if (relToDelete.Row.RowState != DataRowState.Deleted)
                    {
                        CActiviteActeur activiteAncienne = relToDelete.ActiviteActeur;
                        //SC 10/3/2014 : La désimputation du temps de l'activité se fait dans CIntervention_activiteActeurServeur.TraitementAvantSauvegardee
                        //activiteAncienne.Duree -= relToDelete.DureeImputee;
                        result = relToDelete.Delete(true);

                        /*if ( result && activiteAncienne.Duree == 0 )
                         *      result = activiteAncienne.Delete();
                         * if ( !result )
                         *      return result;*/
                    }
                }
            }
            return(result);
        }
Exemple #11
0
        //-------------------------------------------------------------------------------
        public CResultAErreur FillFromSnmp(CEntiteSnmpPourSupervision entiteFromSnmp)
        {
            CResultAErreur result    = CResultAErreur.True;
            CTypeAgentSnmp typeAgent = AgentSnmp.TypeAgent;

            CTypeEntiteSnmp[] typesEntites = (CTypeEntiteSnmp[])typeAgent.TypesEntites.ToArray(typeof(CTypeEntiteSnmp));
            CTypeEntiteSnmp   typeEntite   = typesEntites.FirstOrDefault(t => t.Id.ToString() == entiteFromSnmp.TypeEntite.Id);

            if (typeEntite == null)
            {
                result.EmpileErreur(I.T("Can not find Snmp entity type @1|20309", entiteFromSnmp.TypeEntite.Id));
                return(result);
            }
            TypeEntiteSnmp = typeEntite;
            Index          = entiteFromSnmp.Index;
            Libelle        = entiteFromSnmp.Libelle;

            //Affecte les champs
            foreach (CChampEntiteFromQueryToChampCustom champ in typeEntite.ChampsFromQuery)
            {
                if (champ.IdChampCustom != null)
                {
                    CChampCustom champCustom = new CChampCustom(ContexteDonnee);
                    if (champCustom.ReadIfExists(champ.IdChampCustom))
                    {
                        object valeur = entiteFromSnmp.GetValeurChamp(champ.Champ.Id);
                        if (valeur != null)
                        {
                            if (champCustom.TypeDonneeChamp.TypeDonnee == TypeDonnee.tObjetDonneeAIdNumeriqueAuto)
                            {
                                Type tp = champCustom.TypeObjetDonnee;
                                CObjetDonneeAIdNumerique obj = Activator.CreateInstance(tp, new object[] { ContexteDonnee }) as CObjetDonneeAIdNumerique;
                                if (valeur is int)
                                {
                                    if (obj != null && obj.ReadIfExists((int)valeur, true))
                                    {
                                        SetValeurFromSnmp(champ.IdChampCustom.Value, obj);
                                    }
                                }
                                else
                                {
                                    SetValeurFromSnmp(champ.IdChampCustom.Value, null);
                                }
                            }
                            else
                            {
                                SetValeurFromSnmp(champ.IdChampCustom.Value, valeur);
                            }
                        }
                    }
                }
            }

            //calcule le libellé
            if (typeEntite.FormuleCalculLibelle != null)
            {
                CContexteEvaluationExpression ctx = new CContexteEvaluationExpression(this);
                result = typeEntite.FormuleCalculLibelle.Eval(ctx);
                if (result && result.Data != null)
                {
                    Libelle = result.Data.ToString();
                }
                result = CResultAErreur.True;
            }

            return(result);
        }