Esempio n. 1
0
        /// ////////////////////////////////////////////////////////////////////
        /// <summary>
        /// Fait sélectionner les valeurs à l'utilisateur
        /// </summary>
        /// <param name="filtre"></param>
        /// <returns></returns>
        public static CFiltreData GetFiltreData(CFiltreDynamique filtre)
        {
            using (CFormFiltreDynamic form = new CFormFiltreDynamic())
            {
                form.m_filtreDyn = filtre;
                //Vérifie qu'il y a qq chose dans le formulaire !
                bool bNeedDialog = false;
                foreach (IVariableDynamique variable in filtre.ListeVariables)
                {
                    if (variable.IsChoixUtilisateur())
                    {
                        bNeedDialog = true;
                        break;
                    }
                }

                if (!bNeedDialog || form.ShowDialog() == DialogResult.OK)
                {
                    CResultAErreur result = CResultAErreur.True;
                    result = filtre.GetFiltreData();
                    if (!result)
                    {
                        CFormAlerte.Afficher(result);
                    }
                    else
                    {
                        return(( CFiltreData )result.Data);
                    }
                }
            }
            return(null);
        }
Esempio n. 2
0
        /// ///////////////////////////////////////////////////////////////////////
        /// <summary>
        /// Retourne le filtre qui indique les éléments autorisés comme étant éléments suivis
        /// </summary>
        public CFiltreData GetFiltreDataElementSuivi()
        {
            CFiltreDynamique filtreDynamique = TypeDossier.FiltreDynamiqueElementsSuivisPossibles;

            if (filtreDynamique == null)
            {
                return(null);
            }
            try
            {
                foreach (IVariableDynamique variable in filtreDynamique.ListeVariables)
                {
                    if (variable.Nom == CTypeDossierSuivi.c_nomChampDossier)
                    {
                        filtreDynamique.SetValeurChamp(variable, this);
                        break;
                    }
                }
                CResultAErreur result = filtreDynamique.GetFiltreData();
                if (result)
                {
                    return((CFiltreData)result.Data);
                }
            }
            catch
            {
            }
            return(null);
        }
Esempio n. 3
0
        /// ////////////////////////////////////////////////////////////////////
        public void AppliquerFiltre( )
        {
            if (m_filtre == null)
            {
                return;
            }
            CResultAErreur result = m_panelFiltre.AffecteValeursToElement();

            if (result)
            {
                try
                {
                    result = m_filtre.GetFiltreData();
                }
                catch (Exception e)
                {
                    result.EmpileErreur(new CErreurException(e));
                }
            }
            if (!result)
            {
                CFormAlerte.Afficher(result);
                return;
            }
            m_filtreData = (CFiltreData)result.Data;
            if (OnAppliqueFiltre != null)
            {
                OnAppliqueFiltre(this, new EventArgs());
            }
        }
        /// /////////////////////////////////////////////////////////
        /// result.Data contient le CListeObjetDonnee
        public CResultAErreur CalculeListe(CContexteDonnee contexteDonnee)
        {
            CResultAErreur result = CResultAErreur.True;

            if (Filtre.TypeElements == null)
            {
                result.EmpileErreur(I.T("The objects created type isn't defined|156"));
                return(result);
            }
            CListeObjetsDonnees liste = new CListeObjetsDonnees(contexteDonnee, Filtre.TypeElements, m_bAppliquerFiltreParDefaut);

            liste.PreserveChanges = true;
            if (m_filtreDynamique == null)
            {
                result.Data = liste;
                return(result);
            }

            m_filtreDynamique.ContexteDonnee           = contexteDonnee;
            m_filtreDynamique.ElementAVariablesExterne = Process;

            result = m_filtreDynamique.GetFiltreData();
            if (!result)
            {
                result.EmpileErreur(I.T("Error during the filter evaluation|157"));
                return(result);
            }
            liste.Filtre = (CFiltreData)result.Data;
            result.Data  = liste;
            return(result);
        }
Esempio n. 5
0
 //-------------------------------------------
 public override object[] GetObjets(CNodeConsultationHierarchique nodeParent, CContexteDonnee contexte)
 {
     try
     {
         if (m_filtreDynamique == null || m_filtreDynamique.TypeElements == null)
         {
             return(new object[0]);
         }
         CVariableDynamique variable = AssureVariableParent();
         if (variable != null)
         {
             m_filtreDynamique.SetValeurChamp(variable, nodeParent);
         }
         CResultAErreur result = m_filtreDynamique.GetFiltreData();
         if (!result)
         {
             return(new object[0]);
         }
         CListeObjetsDonnees lst = new CListeObjetsDonnees(contexte, m_filtreDynamique.TypeElements);
         lst.Filtre = (CFiltreData)result.Data;
         return((object[])lst.ToArray(typeof(object)));
     }
     catch
     {
     }
     return(new object[0]);
 }
        private void m_btnFiltreDynamique_Click(object sender, EventArgs e)
        {
            CFiltreDynamique filtre = new CFiltreDynamique();

            filtre.TypeElements = m_typeEdite;
            if (CFormEditFiltreDynamique.EditeFiltre(filtre, true, true, null))
            {
                CResultAErreur result = filtre.GetFiltreData();
                if (result)
                {
                    CFiltreData filtreData = result.Data as CFiltreData;
                    m_txtFiltre.Text += filtreData.Filtre;
                }
            }
        }
Esempio n. 7
0
 private void ApplyFiltre(CFiltreDynamique filtre)
 {
     if (filtre != null)
     {
         m_lastFiltreDynamique = filtre;
         CResultAErreur result = filtre.GetFiltreData();
         if (!result)
         {
             CFormAlerte.Afficher(result.Erreur.Erreurs);
             return;
         }
         m_filtreUser = result.Data as CFiltreData;
         Init();
     }
 }
Esempio n. 8
0
        //---------------------------------------------------------------------------------------
        private CFiltreData GetFiltre(CFiltreDynamique filtre)
        {
            if (filtre == null)
            {
                return(null);
            }
            if (m_elementAVariables != null)
            {
                IVariableDynamique variable = AssureVariableElementCible(filtre, m_elementAVariables.GetType());
                filtre.SetValeurChamp(variable.IdVariable, m_elementAVariables);
            }
            CResultAErreur result = filtre.GetFiltreData();

            if (result)
            {
                return((CFiltreData)result.Data);
            }
            return(null);
        }
Esempio n. 9
0
 /// //////////////////////////////////////////////////////////
 private void item_Liste_Click(object sender, EventArgs e)
 {
     if (sender is CMenuItemListe)
     {
         CListeEntites liste = ((CMenuItemListe)sender).Liste;
         if (liste == null)
         {
             m_panelListe.ListeObjets.Filtre = null;
             m_panelListe.RemplirGrille();
         }
         else
         {
             if (liste.IsDynamique)
             {
                 CFiltreDynamique filtre = liste.FiltreDynamique;
                 CResultAErreur   result = filtre.GetFiltreData();
                 if (result.Data is CFiltreData)
                 {
                     m_panelListe.ListeObjets.Filtre = (CFiltreData)result.Data;
                     m_panelListe.RemplirGrille();
                 }
             }
             else
             {
                 string strFiltre = "";
                 foreach (CObjetDonneeAIdNumerique objet in liste.ElementsLies)
                 {
                     strFiltre += objet.Id.ToString() + ",";
                 }
                 if (strFiltre.Length > 0)
                 {
                     strFiltre = strFiltre.Substring(0, strFiltre.Length - 1);
                 }
                 CStructureTable structure = CStructureTable.GetStructure(liste.TypeElements);
                 m_panelListe.ListeObjets.Filtre = new CFiltreData(
                     structure.ChampsId[0].NomChamp + " in (" +
                     strFiltre + ")");
                 m_panelListe.RemplirGrille();
             }
         }
     }
 }
Esempio n. 10
0
        /// //////////////////////////////////////////////////////////////////
        protected static CResultAErreur ExecuteActionListe(CActionSur2iLinkAfficherListe action, object objetCible)
        {
            CResultAErreur   result = CResultAErreur.True;
            CFiltreDynamique filtre = action.Filtre;

            if (filtre == null || filtre.TypeElements == null)
            {
                result.EmpileErreur(I.T("Link parameter error : filter is null|30077"));
                return(result);
            }

            if (objetCible != null)
            {
                CObjetPourSousProprietes objetPourSousProp = null;
                objetPourSousProp = new CObjetPourSousProprietes(objetCible);
                IVariableDynamique variable = CActionSur2iLinkAfficherListe.AssureVariableElementCible(filtre, objetPourSousProp);

                /*if ( variable.TypeDonnee.TypeDotNetNatif != objetCible.GetType() )
                 * {
                 *      result.EmpileErreur(I.T("Expected type in the filter does not correspond to object type|30078"));
                 *      return result;
                 * }*/
                if (variable != null)
                {
                    filtre.SetValeurChamp(variable.IdVariable, objetCible);
                }
            }
            result = filtre.GetFiltreData();
            if (!result)
            {
                result.EmpileErreur(I.T("Filter error|30079"));
                return(result);
            }
            CFiltreData filtreData = (CFiltreData)result.Data;
            Type        tp         = CFormFinder.GetTypeFormToList(filtre.TypeElements);

            try
            {
                if (tp != null || tp.IsSubclassOf(typeof(CFormListeStandard)))
                {
                    CFormListeStandard            form    = ( CFormListeStandard )Activator.CreateInstance(tp, new object[0]);
                    CContexteEvaluationExpression ctxEval = new CContexteEvaluationExpression(objetCible);
                    ctxEval.AttacheObjet(typeof(CContexteDonnee), CSc2iWin32DataClient.ContexteCourant);
                    if (action.FormuleContexte != null)
                    {
                        result = action.FormuleContexte.Eval(ctxEval);
                        if (!result)
                        {
                            result.EmpileErreur(I.T("Form context evaluation error|30080"));
                            return(result);
                        }
                        if (result.Data != null)
                        {
                            form.ContexteUtilisation = result.Data.ToString();
                        }
                    }
                    if (action.FormuleTitre != null)
                    {
                        result = action.FormuleTitre.Eval(ctxEval);
                        if (!result)
                        {
                            result.EmpileErreur(I.T("Form title evaluation error|30081"));
                            return(result);
                        }
                        if (result.Data != null)
                        {
                            form.TitreForce = result.Data.ToString();
                        }
                    }
                    form.FiltreDeBase = filtreData;
                    form.AffectationsPourNouveauxElements        = action.Affectations;
                    form.ObjetReferencePourAffectationsInitiales = objetCible;

                    form.BoutonAjouterVisible   = action.ShowBoutonAjouter;
                    form.BoutonModifierVisible  = action.ShowBoutonDetail;
                    form.BoutonSupprimerVisible = action.ShowBoutonSupprimer;
                    if (action.IdFiltreDynamiqueAUtiliser >= 0)
                    {
                        CFiltreDynamiqueInDb filtretoUse = new CFiltreDynamiqueInDb(CContexteDonneeSysteme.GetInstance());
                        if (filtretoUse.ReadIfExists(action.IdFiltreDynamiqueAUtiliser))
                        {
                            CFiltreDynamique filtreDyn = filtretoUse.Filtre;
                            if (filtreDyn != null)
                            {
                                CContexteEvaluationExpression ctx = new CContexteEvaluationExpression(objetCible);
                                foreach (CFormuleNommee formule in action.ValeursVariablesFiltre)
                                {
                                    if (formule.Formule != null)
                                    {
                                        CResultAErreur res = formule.Formule.Eval(ctx);
                                        if (res)
                                        {
                                            try
                                            {
                                                string strId = formule.Id;
                                                filtreDyn.SetValeurChamp(strId, res.Data);
                                            }
                                            catch { }
                                        }
                                    }
                                }
                                form.FiltrePrefere = filtreDyn;
                            }
                        }
                    }
                    if (action.ActionSurDetail != null)
                    {
                        CExecuteurActionSurPanelListeSpeedStandard executeur = new CExecuteurActionSurPanelListeSpeedStandard(action.ActionSurDetail, form);
                        form.SetModifierElementDelegate(new CPanelListeSpeedStandard.ModifierElementDelegate(executeur.ExecuteAction));
                    }
                    CTimosApp.Navigateur.AffichePage(form);
                }
                else
                {
                    result.EmpileErreur(I.T("Not avaliable|30082"));
                }
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
            }
            return(result);
        }
Esempio n. 11
0
        //---------------------------------------------------------------
        private void CalculeSetIdsInterventionsVisibles()
        {
            if (m_filtreDynamicApplique == null && m_listeEntitesSelectionnee == null)
            {
                m_setIdsInterventionsVisiblesCalculéDefiltreEtListe = null;
                return;
            }

            HashSet <int> setIdsFromfiltre = null;
            HashSet <int> setIdsFromListe  = null;

            if (m_filtreDynamicApplique != null && m_chkIntersFiltre.Checked)
            {
                CFiltreData    filtre = null;
                CResultAErreur res    = m_filtreDynamicApplique.GetFiltreData();
                if (res && res.Data is CFiltreData)
                {
                    filtre = res.Data as CFiltreData;
                }
                if (filtre != null)
                {
                    setIdsFromfiltre = new HashSet <int>();
                    C2iRequeteAvancee requete = new C2iRequeteAvancee(m_contexteDonnee.IdVersionDeTravail);
                    requete.FiltreAAppliquer = filtre;
                    requete.TableInterrogee  = CIntervention.c_nomTable;
                    requete.ListeChamps.Add(new C2iChampDeRequete(
                                                "INTER_ID",
                                                new CSourceDeChampDeRequete(CIntervention.c_champId),
                                                typeof(int),
                                                OperationsAgregation.None,
                                                false));
                    res = requete.ExecuteRequete(m_contexteDonnee.IdSession);
                    if (res && res.Data is DataTable)
                    {
                        foreach (DataRow row in ((DataTable)res.Data).Rows)
                        {
                            setIdsFromfiltre.Add((int)row["INTER_ID"]);
                        }
                    }
                }
            }
            if (m_listeEntitesSelectionnee != null && m_chkIntersSurListe.Checked)
            {
                setIdsFromListe = new HashSet <int>();
                foreach (CIntervention inter in m_listeEntitesSelectionnee.ElementsLies)
                {
                    setIdsFromListe.Add(inter.Id);
                }
            }
            if (setIdsFromListe != null || setIdsFromfiltre != null)
            {
                if (setIdsFromListe == null)
                {
                    m_setIdsInterventionsVisiblesCalculéDefiltreEtListe = setIdsFromfiltre;
                }
                else if (setIdsFromfiltre == null)
                {
                    m_setIdsInterventionsVisiblesCalculéDefiltreEtListe = setIdsFromListe;
                }
                else
                {
                    m_setIdsInterventionsVisiblesCalculéDefiltreEtListe = new HashSet <int>();
                    foreach (int nId in setIdsFromListe)
                    {
                        if (setIdsFromfiltre.Contains(nId))
                        {
                            m_setIdsInterventionsVisiblesCalculéDefiltreEtListe.Add(nId);
                        }
                    }
                }
            }
        }
 protected override void OnChangeElementEdite(object element)
 {
     if (element != null &&
         WndFiltreRapide != null)
     {
         CFiltreData filtreData;
         if (WndFiltreRapide.Filter != null)
         {
             CElementAVariablesDynamiques eltAVar = new CElementAVariablesDynamiques();
             CVariableDynamiqueStatique   var     = new CVariableDynamiqueStatique(eltAVar);
             var.Nom        = "EditedElement";
             var.IdVariable = "0";
             var.SetTypeDonnee(new CTypeResultatExpression(element.GetType(), false));
             eltAVar.AddVariable(var);
             eltAVar.SetValeurChamp(var, element);
             CFiltreDynamique filtreDyn = WndFiltreRapide.Filter;
             filtreDyn.ElementAVariablesExterne = eltAVar;
             filtreData = (CFiltreData)filtreDyn.GetFiltreData().Data;
         }
         else
         {
             filtreData = null;
         }
         Type typePropriete = null;
         if (WndFiltreRapide.Property != null)
         {
             typePropriete = WndFiltreRapide.Property.TypeDonnee.TypeDotNetNatif;
         }
         else if (WndFiltreRapide.Filter != null)
         {
             typePropriete = WndFiltreRapide.Filter.TypeElements;
         }
         if (typePropriete != null)
         {
             string strDesc = DescriptionFieldAttribute.GetDescriptionField(typePropriete, "DescriptionElement");
             C2iTextBoxFiltreRapide txtRapide = m_selectionneur as C2iTextBoxFiltreRapide;
             if (txtRapide != null)
             {
                 txtRapide.InitAvecFiltreDeBase(typePropriete, strDesc, filtreData, true);
             }
             else
             {
                 CComboBoxListeObjetsDonnees cmb = m_selectionneur as CComboBoxListeObjetsDonnees;
                 cmb.NullAutorise = true;
                 cmb.TextNull     = I.T("None|19");
                 if (cmb != null)
                 {
                     cmb.Init(
                         typePropriete,
                         filtreData,
                         strDesc,
                         true);
                 }
             }
             if (WndFiltreRapide.Property != null)
             {
                 CObjetDonnee valeur = CInterpreteurProprieteDynamique.GetValue(EditedElement, WndFiltreRapide.Property).Data as CObjetDonnee;
                 m_selectionneur.ElementSelectionne = valeur;
             }
         }
     }
 }
Esempio n. 13
0
        //--------------------------------------------------
        protected override CResultAErreur GetDatasHorsCalculees(CListeQuerySource sources)
        {
            CResultAErreur result = CResultAErreur.True;
            CResultAErreurType <CColumnDeEasyQueryChampDeRequete> resCol = GetColonneIdSource();

            m_dicRowsParentes = null;
            if (!resCol)
            {
                result.EmpileErreur(resCol.Erreur);
                return(result);
            }
            IODEQTableFromFramework tableSource = this.ElementsSource[0] as IODEQTableFromFramework;

            if (tableSource != null)
            {
                result = tableSource.GetDatas(sources);
                if (!result)
                {
                    return(result);
                }

                DataTable tableParente = result.Data as DataTable;

                C2iRequeteAvancee requete = new C2iRequeteAvancee();
                requete.TableInterrogee = CContexteDonnee.GetNomTableForType(TypeElements);
                foreach (IColumnDeEasyQuery col in m_listeColonnes)
                {
                    CColumnDeEasyQueryChampDeRequete colR = col as CColumnDeEasyQueryChampDeRequete;
                    requete.ListeChamps.Add(colR);
                }
                if (requete.ListeChamps.Count == 0)
                {
                    result.Data = new DataTable();
                    return(result);
                }

                bool bRelTrouve = false;
                CComposantFiltreOperateur cpOperateur = new CComposantFiltreOperateur(CComposantFiltreOperateur.c_IdOperateurIn);
                CComposantFiltre          cpFinal     = cpOperateur;

                result = FiltreDynamique.GetFiltreData();
                if (!result)
                {
                    return(result);
                }
                CFiltreDataAvance filtre = result.Data as CFiltreDataAvance;
                if (filtre == null)
                {
                    filtre = new CFiltreDataAvance(requete.TableInterrogee, "");
                }

                CDefinitionProprieteDynamiqueRelation rel = m_definitionSource as CDefinitionProprieteDynamiqueRelation;

                string strNomChampParent = null;

                //// Relation standard
                if (rel != null)
                {
                    //m_definitionSource.GetDefinitionInverse(TypeElements);
                    if (rel.Relation.TableParente == requete.TableInterrogee)
                    {
                        cpOperateur.Parametres.Add(new CComposantFiltreChamp(rel.Relation.ChampsParent[0], requete.TableInterrogee));
                        strNomChampParent = rel.Relation.ChampsParent[0];
                    }
                    else
                    {
                        cpOperateur.Parametres.Add(new CComposantFiltreChamp(rel.Relation.ChampsFille[0], requete.TableInterrogee));
                        strNomChampParent = rel.Relation.ChampsFille[0];
                    }

                    bRelTrouve = true;
                }
                else
                {
                    ///Relation Type id
                    CDefinitionProprieteDynamiqueRelationTypeId relTypeId = m_definitionSource as CDefinitionProprieteDynamiqueRelationTypeId;
                    if (relTypeId != null)
                    {
                        cpOperateur.Parametres.Add(new CComposantFiltreChamp(relTypeId.Relation.ChampId, requete.TableInterrogee));
                        strNomChampParent = relTypeId.Relation.ChampId;
                        cpFinal           = new CComposantFiltreOperateur(CComposantFiltreOperateur.c_IdOperateurEt);
                        cpFinal.Parametres.Add(cpOperateur);
                        CComposantFiltre cpType = new CComposantFiltreOperateur(CComposantFiltreOperateur.c_IdOperateurEgal);
                        cpType.Parametres.Add(new CComposantFiltreChamp(relTypeId.Relation.ChampType, requete.TableInterrogee));
                        cpType.Parametres.Add(new CComposantFiltreVariable("@" + (filtre.Parametres.Count + 1).ToString("0")));

                        filtre.Parametres.Add(tableSource.TypeElements.ToString());
                        cpFinal.Parametres.Add(cpType);
                        bRelTrouve = true;
                    }
                }

                if (strNomChampParent != null)
                {
                    requete.ListeChamps.Add(new C2iChampDeRequete(c_nomChampParentId, new CSourceDeChampDeRequete(strNomChampParent), typeof(int), OperationsAgregation.None, false));
                }



                if (!bRelTrouve)
                {
                    result.EmpileErreur(I.T("Can not find link for table @1|20076", NomFinal));
                    return(result);
                }



                int nParametre = filtre.Parametres.Count;
                cpOperateur.Parametres.Add(new CComposantFiltreVariable("@" + (filtre.Parametres.Count + 1).ToString("0")));
                filtre.Parametres.Add(new int[0]);

                if (filtre.ComposantPrincipal == null)
                {
                    filtre.ComposantPrincipal = cpFinal;
                }
                else
                {
                    CComposantFiltreOperateur opEt = new CComposantFiltreOperateur(CComposantFiltreOperateur.c_IdOperateurEt);
                    opEt.Parametres.Add(cpFinal);
                    opEt.Parametres.Add(filtre.ComposantPrincipal);
                    filtre.ComposantPrincipal = opEt;
                }

                m_dicRowsParentes = new Dictionary <object, DataRow>();
                DataTable maTable        = null;
                int       nLectureParLot = 500;
                for (int nRow = 0; nRow < tableParente.Rows.Count; nRow += nLectureParLot)
                {
                    int        nMax   = Math.Min(nRow + nLectureParLot, tableParente.Rows.Count);
                    List <int> lstIds = new List <int>();
                    for (int n = nRow; n < nMax; n++)
                    {
                        DataRow row  = tableParente.Rows[n];
                        int     nVal = (int)row[resCol.DataType.ColumnName];
                        lstIds.Add(nVal);
                        m_dicRowsParentes[nVal] = row;
                    }
                    filtre.Parametres[nParametre] = lstIds.ToArray();
                    DataTable tableTmp = null;
                    requete.FiltreAAppliquer = filtre;
                    result = requete.ExecuteRequete(CContexteDonneeSysteme.GetInstance().IdSession);
                    if (!result || !(result.Data is DataTable))
                    {
                        result.EmpileErreur(I.T("Error on table @1|20070", NomFinal));
                        return(result);
                    }
                    tableTmp = result.Data as DataTable;
                    if (maTable == null)
                    {
                        maTable = tableTmp;
                    }
                    else
                    {
                        maTable.Merge(tableTmp);
                    }
                }
                if (maTable == null)
                {
                    maTable = new DataTable(NomFinal);
                    foreach (IColumnDeEasyQuery colEQ in ColonnesOrCalculees)
                    {
                        DataColumn col = new DataColumn(colEQ.ColumnName, colEQ.DataType);
                        try
                        {
                            maTable.Columns.Add(col);
                        }
                        catch { }
                    }
                    DataColumn colParent = new DataColumn(c_nomChampParentId, typeof(int));
                    try
                    {
                        maTable.Columns.Add(colParent);
                    }
                    catch { }
                }
                else
                {
                    //Ajoute les colonnes from parent
                    Dictionary <CColumnEQFromSource, string> dicColFromSourceToNom = new Dictionary <CColumnEQFromSource, string>();
                    foreach (CColumnEQFromSource colFromSource in m_listeColonnesFromParent)
                    {
                        if (!maTable.Columns.Contains(colFromSource.ColumnName))
                        {
                            maTable.Columns.Add(colFromSource.ColumnName, colFromSource.DataType);
                        }
                        IColumnDeEasyQuery colSource = tableSource.Columns.FirstOrDefault(c => c.Id == colFromSource.IdColumnSource);
                        if (colSource != null && tableParente.Columns.Contains(colSource.ColumnName))
                        {
                            dicColFromSourceToNom[colFromSource] = colSource.ColumnName;
                        }
                    }
                    if (maTable.Columns.Contains(c_nomChampParentId))
                    {
                        foreach (DataRow row in maTable.Rows)
                        {
                            if (row[c_nomChampParentId] is int)
                            {
                                DataRow rowParente = null;
                                if (m_dicRowsParentes.TryGetValue((int)row[c_nomChampParentId], out rowParente))
                                {
                                    if (rowParente != null)
                                    {
                                        foreach (KeyValuePair <CColumnEQFromSource, string> kv in dicColFromSourceToNom)
                                        {
                                            row[kv.Key.ColumnName] = rowParente[kv.Value];
                                        }
                                    }
                                }
                            }
                        }
                        maTable.Columns.Remove(c_nomChampParentId);
                    }
                }
                result.Data = maTable;
            }
            return(result);
        }
        //------------------------------------------------
        public CResultAErreurType <CObjetDonnee> FindObjet(
            DataRow rowSource,
            CContexteImportDonnee contexteImport,
            CValeursImportFixe valeursFixes,
            ref string strFiltre)
        {
            CResultAErreurType <CObjetDonnee> resObjet = new CResultAErreurType <CObjetDonnee>();
            CResultAErreur res = CResultAErreur.True;

            StringBuilder blFiltre = new StringBuilder();

            if (valeursFixes != null)
            {
                foreach (KeyValuePair <string, object> kv in valeursFixes.ValeursFixes)
                {
                    blFiltre.Append(kv.Key);
                    blFiltre.Append("=");
                    blFiltre.Append(kv.Value == null ? "null" : kv.Value.ToString());
                    blFiltre.Append(";");
                }
            }


            //Création du filtre
            CComposantFiltreDynamiqueEt compoPrincipal = new CComposantFiltreDynamiqueEt();

            //Recherche à partir des champs simples
            foreach (CMappageChampSimple mapSimple in MappagesChampsSimples)
            {
                if (mapSimple.UseAsKey)
                {
                    res = mapSimple.GetValue(rowSource, contexteImport);
                    if (!res)
                    {
                        res.EmpileErreur(I.T("Erreur while searching object|20093"));
                        resObjet.EmpileErreur(res.Erreur);
                        return(resObjet);
                    }

                    //Stockage valeur témoin
                    CSourceSmartImportField sourceField = mapSimple.Source as CSourceSmartImportField;
                    if (sourceField != null)
                    {
                        contexteImport.SetValeurTemoin(sourceField.NomChampSource, res.Data);
                    }

                    blFiltre.Append(mapSimple.Propriete.NomPropriete);
                    if (res.Data == null)
                    {
                        CComposantFiltreDynamiqueTestNull testNull = new CComposantFiltreDynamiqueTestNull();
                        testNull.Champ    = mapSimple.Propriete;
                        testNull.TestNull = true;
                        compoPrincipal.AddComposantFils(testNull);
                        blFiltre.Append("=null;");
                    }
                    else
                    {
                        CComposantFiltreDynamiqueValeurChamp testValeur = new CComposantFiltreDynamiqueValeurChamp();
                        testValeur.Champ            = mapSimple.Propriete;
                        testValeur.IdOperateur      = CComposantFiltreOperateur.c_IdOperateurEgal;
                        testValeur.ExpressionValeur = new C2iExpressionConstante(res.Data);
                        compoPrincipal.AddComposantFils(testValeur);
                        blFiltre.Append("=");
                        blFiltre.Append(res.Data.ToString());
                        blFiltre.Append(";");
                    }
                }
            }


            //Recherche à partir des objets parents
            foreach (CMappageEntiteParente mapParent in m_listeMappagesParents)
            {
                if (mapParent.UseAsKey)
                {
                    CResultAErreurType <CObjetDonnee> resParent = mapParent.GetObjetAssocie(rowSource, contexteImport, false);
                    if (!resParent)
                    {
                        resObjet.EmpileErreur(resParent.Erreur);
                        return(resObjet);
                    }
                    CObjetDonneeAIdNumerique      objetId = resParent.DataType as CObjetDonneeAIdNumerique;
                    CDefinitionProprieteDynamique defId   = null;
                    object valeurTest = null;

                    if (typeof(CObjetDonneeAIdNumerique).IsAssignableFrom(mapParent.Propriete.TypeDonnee.TypeDotNetNatif))
                    {
                        defId = new CDefinitionProprieteDynamiqueDotNet(
                            "Id",
                            "Id",
                            new CTypeResultatExpression(typeof(int), false),
                            false,
                            true, "");
                        defId.InsereParent(mapParent.Propriete);
                        valeurTest = objetId != null?objetId.Id:-1;
                    }
                    else if (CObjetDonnee.TypeManageIdUniversel(mapParent.Propriete.TypeDonnee.TypeDotNetNatif))
                    {
                        defId = new CDefinitionProprieteDynamiqueDotNet("Universal id",
                                                                        "IdUniversel",
                                                                        new CTypeResultatExpression(typeof(string), false),
                                                                        false, true, "");
                        defId.InsereParent(mapParent.Propriete);
                        valeurTest = resParent.DataType != null ? resParent.DataType.IdUniversel : null;
                    }
                    else
                    {
                        resObjet.EmpileErreur(I.T("Can not search objet of type @1|20094",
                                                  DynamicClassAttribute.GetNomConvivial(mapParent.Propriete.TypeDonnee.TypeDotNetNatif)));
                        return(resObjet);
                    }
                    blFiltre.Append(defId.NomPropriete);

                    if (resParent.DataType == null)
                    {
                        CComposantFiltreDynamiqueTestNull testNull = new CComposantFiltreDynamiqueTestNull();
                        testNull.Champ    = defId;
                        testNull.TestNull = true;
                        compoPrincipal.AddComposantFils(testNull);
                        blFiltre.Append("=null;");
                    }
                    else
                    {
                        CComposantFiltreDynamiqueValeurChamp testValeur = new CComposantFiltreDynamiqueValeurChamp();
                        testValeur.Champ            = defId;
                        testValeur.IdOperateur      = CComposantFiltreOperateur.c_IdOperateurEgal;
                        testValeur.ExpressionValeur = new C2iExpressionConstante(valeurTest);
                        compoPrincipal.AddComposantFils(testValeur);
                        blFiltre.Append("=");
                        blFiltre.Append(valeurTest.ToString());
                        blFiltre.Append(";");
                    }
                }
            }
            if (blFiltre.Length == 0)//Pas de filtre
            {
                return(resObjet);
            }
            strFiltre = blFiltre.ToString();
            CObjetDonnee objet = contexteImport.GetEntiteForFiltre(TypeEntite, strFiltre);

            if (objet != null)
            {
                resObjet.DataType = objet;
                return(resObjet);
            }

            CFiltreDynamique filtre = new CFiltreDynamique(contexteImport.ContexteDonnee);

            filtre.TypeElements       = TypeEntite;
            filtre.ComposantPrincipal = compoPrincipal;
            res = filtre.GetFiltreData();
            if (res && res.Data is CFiltreDataAvance)
            {
                if (valeursFixes != null)
                {
                    CFiltreDataAvance filtreData = res.Data as CFiltreDataAvance;
                    StringBuilder     blAdd      = new StringBuilder();
                    int nParam = filtreData.Parametres.Count + 1;
                    foreach (KeyValuePair <string, object> kv in valeursFixes.ValeursFixes)
                    {
                        if (kv.Value == null)
                        {
                            blAdd.Append("HasNo(");
                            blAdd.Append(kv.Key);
                            blAdd.Append(") and ");
                        }
                        else
                        {
                            blAdd.Append(kv.Key);
                            blAdd.Append("=@");
                            blAdd.Append((nParam++));
                            blAdd.Append(" and ");
                            filtreData.Parametres.Add(kv.Value);
                        }
                    }
                    blAdd.Remove(blAdd.Length - 5, 5);
                    if (filtreData.Filtre.Length > 0)
                    {
                        blAdd.Insert(0, " and ");
                    }
                    filtreData.Filtre += blAdd;
                }
                objet = Activator.CreateInstance(TypeEntite, new object[] { contexteImport.ContexteDonnee }) as CObjetDonnee;
                if (objet.ReadIfExists(((CFiltreData)res.Data)))
                {
                    contexteImport.SetEntiteForFiltre(strFiltre, objet);
                    resObjet.DataType = objet;
                    return(resObjet);
                }
            }
            else
            {
                res.EmpileErreur(I.T("Erreur while searching object|20093"));
                resObjet.EmpileErreur(res.Erreur);
                return(resObjet);
            }
            return(resObjet);
        }
        /// /////////////////////////////////////////////////////////
        protected override CResultAErreur ExecuteAction(CContexteExecutionAction contexte)
        {
            CResultAErreur result = CResultAErreur.True;

            //Si la session qui execute est une session de l'utilisateur associé à la branche,
            //Tente d'afficher le EditerElement sur cette session,
            //Sinon, enregistre une Intervention sur l'utilisateur
            CSessionClient sessionClient = CSessionClient.GetSessionForIdSession(contexte.IdSession);

            if (sessionClient != null)
            {
                //TESTDBKEYOK
                if (sessionClient.GetInfoUtilisateur().KeyUtilisateur == contexte.Branche.KeyUtilisateur)
                {
                    using (C2iSponsor sponsor = new C2iSponsor())
                    {
                        CServiceSurClient service = sessionClient.GetServiceSurClient(c_idServiceVisualisationListeObjetsDonnee);
                        if (service != null)
                        {
                            sponsor.Register(service);
                            CContexteEvaluationExpression ctxEval = new CContexteEvaluationExpression(Process);
                            string strContexte = "";
                            string strTitre    = "";
                            if (ExpressionContexteFenetre != null)
                            {
                                result = ExpressionContexteFenetre.Eval(ctxEval);
                                if (!result)
                                {
                                    return(result);
                                }
                                if (result.Data != null)
                                {
                                    strContexte = result.Data.ToString();
                                }
                            }
                            if (ExpressionTitreFenetre != null)
                            {
                                result = ExpressionTitreFenetre.Eval(ctxEval);
                                if (!result)
                                {
                                    return(result);
                                }
                                if (result.Data != null)
                                {
                                    strTitre = result.Data.ToString();
                                }
                            }

                            if (Filtre.TypeElements == null)
                            {
                                result.EmpileErreur(I.T("The object type is not defined|418"));
                                return(result);
                            }
                            CFiltreData filtre = null;
                            if (m_filtreDynamique != null)
                            {
                                m_filtreDynamique.ContexteDonnee           = contexte.ContexteDonnee;
                                m_filtreDynamique.ElementAVariablesExterne = Process;

                                result = m_filtreDynamique.GetFiltreData();
                                if (!result)
                                {
                                    result.EmpileErreur(I.T("Error while calculating the filter|419"));
                                    return(result);
                                }
                                filtre = (CFiltreData)result.Data;
                            }

                            CParametreServiceVisuListeObjets parametre = new CParametreServiceVisuListeObjets(
                                Filtre.TypeElements,
                                filtre,
                                m_bAppliquerFiltreParDefaut,
                                strTitre,
                                strContexte);
                            if (result)
                            {
                                result = service.RunService(parametre);
                            }
                            //Fin du process
                            result.Data = null;
                            if (result)
                            {
                                foreach (CLienAction lien in this.GetLiensSortantHorsErreur())
                                {
                                    if (!(lien is CLienUtilisateurAbsent))
                                    {
                                        result.Data = lien;
                                    }
                                }
                            }
                            return(result);
                        }
                    }
                }
            }
            //Utilisateur pas accessible
            foreach (CLienAction lien in GetLiensSortantHorsErreur())
            {
                if (lien is CLienUtilisateurAbsent)
                {
                    result.Data = lien;
                    return(result);
                }
            }
            return(result);
        }