private void CreateNewVersionAction_Execute(object sender, SimpleActionExecuteEventArgs e) { View view = View; Frame frame = Frame; object currentObj = View.CurrentObject; IVersionBusinessLogicSupport currentVersObj = View.CurrentObject as IVersionBusinessLogicSupport; if (currentVersObj == null) { DevExpress.XtraEditors.XtraMessageBox.Show("Документ не поддерживает создание версий", "Система версионирования документов"); return; } this.ObjectSpace.CommitChanges(); IObjectSpace objectSpace = Application.CreateObjectSpace(); IVersionBusinessLogicSupport passedCurrentObj = objectSpace.GetObject(currentObj) as IVersionBusinessLogicSupport; // Новая версия: IVersionSupport newVers = passedCurrentObj.CreateNewVersion(); //IVersionSupport newVers = ((IVersionBusinessLogicSupport)currentObj).CreateNewVersion(); //objectSpace.CommitChanges(); // Показ новой версии // Определяем DetailView string DetailViewId = frame.Application.FindDetailViewId(newVers.GetType()); // Показываем: TargetWindow openMode = TargetWindow.Current; //CommonMethods.ShowConcreteDetailViewInWindow(frame, objectSpace, DetailViewId, newVers, openMode); DetailView dv = frame.Application.CreateDetailView(objectSpace, DetailViewId, true, newVers); //DetailView dv = frame.Application.CreateDetailView(objectSpace, DetailViewId, true, passedCurrentObj); //DetailView dv = frame.Application.CreateDetailView(objectSpace, newVers, true); //DetailView dv = frame.Application.CreateDetailView(objectSpace, newVers, true); ShowViewParameters svp = new ShowViewParameters() { CreatedView = dv, TargetWindow = openMode, Context = TemplateContext.View, CreateAllControllers = true }; e.ShowViewParameters.Assign(svp); ////object passedNewObj = this.ObjectSpace.GetObject(newVers); //DetailView dv = frame.Application.CreateDetailView(this.ObjectSpace, DetailViewId, true, newVers); //e.ShowViewParameters.CreatedView = dv; ////e.ShowViewParameters.CreatedView.CurrentObject = newVers; // passedNewObj; }
private void VersionApprove_Execute(object sender, SimpleActionExecuteEventArgs e) { View view = View; Frame frame = Frame; // Запускаем метод Approve текущего объекта VersionRecord currentObj = View.CurrentObject as VersionRecord; if (currentObj == null) { DevExpress.XtraEditors.XtraMessageBox.Show("Документ не поддерживает операцию утверждения"); return; } IVersionBusinessLogicSupport mainObj = currentObj.MainObject as IVersionBusinessLogicSupport; if (mainObj == null) { DevExpress.XtraEditors.XtraMessageBox.Show("Документ не поддерживает операцию утверждения"); return; } // Паша: добавил сохранение объекта перед Approve, иначе только что созданная версия не находиться в списке версий:( view.ObjectSpace.CommitChanges(); mainObj.Approve(currentObj); view.ObjectSpace.CommitChanges(); // Прежняя концепция (с SimpleContract и т.д.) предполагала, что главный объект показывается пользователю со списком // его версий. Новая концепция предполагает вместо показа главного объекта всегда показывать его Current версию, а если // таковой нет, то версию со статусом NEW. // Замечание. Наличие записи сос статусом NEW означает, что Currentу главного объекта и есть эта запись со статусом NEW //Type objType = (System.Type)((System.Reflection.MemberInfo)((mainObj).GetType())); //string DetailViewID = Application.FindDetailViewId(objType); //IObjectSpace objectSpace = frame.Application.CreateObjectSpace(); //object passedDisplayedObject = objectSpace.GetObject(mainObj); // Основной объект: //object DisplayedObject = currentObj.MainObject; object DisplayedObject = (mainObj as crmContractDeal).Current; // Определяем DetailView string DetailViewId = frame.Application.FindDetailViewId(DisplayedObject.GetType()); IObjectSpace objectSpace = Application.CreateObjectSpace(); object passedDisplayedObject = objectSpace.GetObject(DisplayedObject); // Показываем //CommonMethods.ShowConcreteDetailViewInWindow(frame, objectSpace, DetailViewId, passedDisplayedObject, TargetWindow.Current); TargetWindow openMode = TargetWindow.Current; DetailView dv = frame.Application.CreateDetailView(objectSpace, DetailViewId, true, passedDisplayedObject); ShowViewParameters svp = new ShowViewParameters() { CreatedView = dv, TargetWindow = openMode, Context = TemplateContext.View, CreateAllControllers = true }; e.ShowViewParameters.Assign(svp); }