public void Init(CProcess process, Type typeObjet, CActionImportFromTableRow.CMappageColonne mappage) { m_mappage = mappage; CColonneTableParametrable col = new CColonneTableParametrable(CContexteDonneeSysteme.GetInstance()); col.ReadIfExists(mappage.IdColonne); m_lblColonne.Text = col.Libelle; Type tp = col.TypeDonneeChamp.TypeDotNetAssocie; List <CDefinitionProprieteDynamique> lst = new List <CDefinitionProprieteDynamique>(); foreach (CDefinitionProprieteDynamique def in new CFournisseurPropDynStd(false).GetDefinitionsChamps(typeObjet)) { Type defType = def.TypeDonnee.TypeDotNetNatif; if (defType.IsGenericType && defType.GetGenericTypeDefinition() == typeof(Nullable <>)) { defType = defType.GetGenericArguments()[0]; } if (defType == tp && !def.TypeDonnee.IsArrayOfTypeNatif) { lst.Add(def); } } m_cmbChamp.ListDonnees = lst; m_cmbChamp.ProprieteAffichee = "Nom"; m_cmbChamp.SelectedValue = mappage.ProprieteCible; m_txtFormuleCondition.Init(process, typeof(CProcess)); m_txtFormuleCondition.Formule = mappage.FormuleCondition; }
/// //////////////////////////////////////////////////////// protected override CResultAErreur MyExecute(CContexteExecutionAction contexte) { CResultAErreur result = CResultAErreur.True; CContexteEvaluationExpression ctxEval = new CContexteEvaluationExpression(Process); object elementCible = null; if (FormuleElementCible != null) { result = FormuleElementCible.Eval(ctxEval); if (result) { elementCible = result.Data; } } if (elementCible == null) { result.EmpileErreur(I.T("Error in target element formula|20236")); return(result); } else if (elementCible is CObjetDonnee) { elementCible = ((CObjetDonnee)elementCible).GetObjetInContexte(contexte.ContexteDonnee); } CLigneTableParametrable ligne = null; if (FormuleRow != null) { result = FormuleRow.Eval(ctxEval); if (result) { ligne = result.Data as CLigneTableParametrable; } } if (ligne == null) { result.EmpileErreur(I.T("Error in table row formula|20238")); return(result); } //Identifie les colonnes à importer Dictionary <string, CDefinitionProprieteDynamique> dicMap = new Dictionary <string, CDefinitionProprieteDynamique>(); foreach (CMappageColonne mappage in Mappages) { if (mappage.ProprieteCible != null) { bool bPrendre = true; CColonneTableParametrable col = new CColonneTableParametrable(contexte.ContexteDonnee); if (col.ReadIfExists(mappage.IdColonne)) { if (mappage.FormuleCondition != null) { result = mappage.FormuleCondition.Eval(ctxEval); if (!result || result.Data == null) { bPrendre = false; } else { bool?bTmp = CUtilBool.BoolFromString(result.Data.ToString()); if (bTmp != null) { bPrendre = bTmp.Value; } else { bPrendre = false; } } } if (bPrendre) { object val = ligne.GetValue(col.Libelle); if (val != null || !m_bIgnorerLesValeursVides) { try { CInterpreteurProprieteDynamique.SetValue(elementCible, mappage.ProprieteCible, ligne.GetValue(col.Libelle)); } catch { } } } } } } return(result); }