/// <summary> /// Crea un procedure con todos los SDT seleccionados por el usuario. /// </summary> public static void CreateProcedureSDT() { IKBService kB = UIServices.KB; if (kB != null && kB.CurrentModel != null) { SelectObjectOptions selectObjectOption = new SelectObjectOptions(); selectObjectOption.MultipleSelection = true; KBModel kbModel = UIServices.KB.CurrentModel; Artech.Genexus.Common.Objects.Procedure proc = new Artech.Genexus.Common.Objects.Procedure(kbModel); string procName = "SDTForceGenerate"; proc.Name = procName; proc.ProcedurePart.Source = "// Generated by KBDoctor, to generate SDT source"; proc.SetPropertyValue("IsMain", true); proc.Save(); //MUESTRO LOS SDT A REGENERAR selectObjectOption.ObjectTypes.Add(KBObjectDescriptor.Get <SDT>()); foreach (KBObject kBObject in UIServices.SelectObjectDialog.SelectObjects(selectObjectOption)) { SDT sdtObj = (SDT)kBObject; CodeGeneration.AddSDTVariable(kbModel, proc, sdtObj); Application.DoEvents(); } proc.Save(); //Para cada uno de los generadores del environment, genero el proc con los SDT. GxModel gm = UIServices.KB.WorkingEnvironment.TargetModel.GetAs <GxModel>(); foreach (var gen in gm.Environments) { int generator = gen.Generator; KBObject copy = BLServices.KnowledgeManager.Clone(proc); copy.Name = procName + "_" + generator.ToString(); copy.SetPropertyValue(Artech.Genexus.Common.Properties.TRN.Generator, new EnvironmentCategoryReference { Definition = gen }); UIServices.Objects.Save(copy); GenexusUIServices.Build.Rebuild(copy.Key); do { Application.DoEvents(); } while (GenexusUIServices.Build.IsBuilding); copy.Delete(); } proc.Delete(); } }
public static void CleanObject(KBObject obj, IOutputService output) { int totalvarremoved = 0; KBDoctorOutput.Message("Cleaning object " + obj.Name); if (obj is Transaction) { KBDoctorCore.Sources.API.CleanKBObjectVariables(obj, output); CleanAllRules(obj); CleanAllWebForm(obj); CleanAllWInForm(obj); CleanAllEvents(obj); CleanAllVars(obj); obj.SetPropertyValue(Artech.Genexus.Common.Properties.TRN.MasterPage, WebPanelReference.NoneRef); } if (obj is Procedure) { CleanAllRules(obj); CleanAllProcedurePart(obj); CleanAllConditions(obj); CleanAllVars(obj); } if (obj is WebPanel) { CleanAllRules(obj); CleanAllWebForm(obj); CleanAllEvents(obj); CleanAllConditions(obj); CleanAllVars(obj); } if (obj is WorkPanel) { CleanAllRules(obj); CleanAllWInForm(obj); CleanAllEvents(obj); CleanAllConditions(obj); CleanAllVars(obj); } try { obj.Save(); } catch (Exception e) { KBDoctorOutput.Message("Can't clean " + obj.Name + " Message: " + e.Message + "--" + e.StackTrace); } }