public override CResultAErreur TraitementAvantSauvegarde(CContexteDonnee contexte)
        {
            CResultAErreur result = base.TraitementAvantSauvegarde(contexte);

            if (!result)
            {
                return(result);
            }
            DataTable table    = contexte.Tables[GetNomTable()];
            bool      bOldMode = contexte.IsModeDeconnecte;

            if (!bOldMode)
            {
                contexte.BeginModeDeconnecte();
            }
            ArrayList lst = new ArrayList(table.Rows);

            foreach (DataRow row in lst)
            {
                if (row.RowState == DataRowState.Deleted)
                {
                    CRelationDossierSuivi_Element relation = new CRelationDossierSuivi_Element(row);
                    relation.VersionToReturn = DataRowVersion.Original;
                    if (relation.RelationParametre_TypeElement.SuppressionAutomatique && relation.DossierSuivi.Row.RowState != DataRowState.Deleted)
                    {
                        bool bIsRemplace = false;
                        foreach (CRelationDossierSuivi_Element rel in relation.DossierSuivi.RelationsElements)
                        {
                            if (rel.RelationParametre_TypeElement.Id == relation.RelationParametre_TypeElement.Id)
                            {
                                bIsRemplace = true;
                                break;
                            }
                        }
                        if (!bIsRemplace)
                        {
                            result = relation.DossierSuivi.Delete();
                            if (!result)
                            {
                                return(result);
                            }
                        }
                    }
                }
            }
            if (!bOldMode)
            {
                contexte.EndModeDeconnecteSansSauvegardeEtSansReject();
            }
            return(result);
        }