Beispiel #1
0
        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;
        }
Beispiel #2
0
        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);
        }