/// ///////////////////////////////////////////////////////////////
        private CResultAErreur ReadObjetEtDependances(CObjetDonneeAIdNumeriqueAuto source)
        {
            CResultAErreur result = CResultAErreur.True;

            //Charge tous les parents et tous les fils
            foreach (CInfoRelation relation in CContexteDonnee.GetListeRelationsTable(source.GetNomTable()))
            {
                //Relation parente
                if (relation.TableFille == source.GetNomTable())
                {
                    CObjetDonneeAIdNumeriqueAuto parent = (CObjetDonneeAIdNumeriqueAuto)source.GetParent(relation.ChampsFille[0],
                                                                                                         CContexteDonnee.GetTypeForTable(relation.TableParente));
                    if (parent != null)
                    {
                        parent.AssureData();
                    }
                }
                else
                {
                    if (relation.Composition)
                    {
                        CListeObjetsDonnees liste = source.GetDependancesListe(relation.TableFille, relation.ChampsFille[0]);
                        foreach (CObjetDonneeAIdNumeriqueAuto objetFils in liste)
                        {
                            objetFils.AssureData();
                            ReadObjetEtDependances(objetFils);
                        }
                    }
                }
            }
            return(result);
        }
        /// ///////////////////////////////////////////////////////////////

        /// <summary>
        /// Remplit l'objet à importer avec les données du XML.
        /// LA fonction ne fait pas de sauvegarde, et ne s'occupe pas du mode d'édition.
        /// C'est l'appelant qui doit s'en charger
        /// </summary>
        /// <param name="strNomFichier"></param>
        /// <param name="nIdSession"></param>
        /// <param name="objetAImporter"></param>
        /// <returns></returns>
        public CResultAErreur ImportXml(
            DataSet ds,
            int nIdSession,
            CObjetDonneeAIdNumeriqueAuto objetAImporter,
            IInterfaceImportObjetDonnee interfaceImport)
        {
            CResultAErreur result = CResultAErreur.True;

            try
            {
                DataTable tableSource = ds.Tables[objetAImporter.GetNomTable()];
                if (tableSource == null || tableSource.Rows.Count == 0)
                {
                    result.EmpileErreur(I.T("The import file does not contain the table @1|174", objetAImporter.GetNomTable()));
                    return(result);
                }

                foreach (DataTable table in ds.Tables)
                {
                    DataColumn col = new DataColumn(c_colIsMappe, typeof(bool));
                    col.DefaultValue = false;
                    table.Columns.Add(col);
                }

                ReadObjetEtDependances(objetAImporter);

                DataRow rowSource = tableSource.Rows[0];
                result = ImporteObjet(rowSource, objetAImporter, interfaceImport);
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
            }
            return(result);
        }