单据开发

栏目:u9cloud知识作者:用友来源:用友发布:2024-08-20浏览:1

单据开发

 

培训示例界面:

1、配置UBF项目代码生成路径

第一次使用UBF开发项目需配置,以后不需要配置;

UBF代码生成路径,代码VS版本,在“工具”-“配置”中设置

 

2、UBF平台开发

2.1.建立解决方案

2.2、BE

2.2.1新建实体项目

 

2.2.2.修改解决方案的配件名

在模型视图中修改项目解决方案名称,命名规则为UFIDA.U9.Cust.项目名称,修改属性中的配件名。

 

建送货单实体:

 

建单据类型实体:

 

单据类型:

继承单据类型基类

送货单实体

 

 

2.2.3.添加U9两个基础实体引用

添加2个引用,在发布对象栏目中,在选择目录中,选择UBF下面的UFIDA.U9.Base.BaseBE.MetaData和APP下面的UFIDA.U9.CBO.PubBE.MetaData。

(注:在引用解决方案时,先要双击打开所引用的解决方案,然后拖到Reference中)

 

2.2.4.建立BE实体

1)设置主实体;

2)创建实体字段:设置编码、名称、类型(如果是U9系统类型,设置为相应类型的BE);

3)设置实体“业务主键”(发布后,如要修改,需要删掉原“业务主键索引”,才可修改)

4)建立表头和表体的对应关系将实体;

5)设置单据必须要继承单据基类,在“发布对象浏览器”页签中,找见“UFIDA.U9.Base.BaseBE.MetaData”,双击拖出DocBE下的单据基类实体到BE中,用“继承”箭头单据继承单据基类:

  1. 单据都是要有单据类型的(设置),因此需要单据建立单据类型的实体

 

  1. 设置完单据类型后,可设置送货单实体相关字段,新建送货单行,并与送货单做组合关系:

 

点击组合关系箭头,查看对应关系:

 

2.2.5.构造BE 

构造BE会相应生成:元数据、数据库表脚本、BE项目C#代码;

注:如构造产生异常的,做了相应修改后,异常情况还存在时,将对应生成的文件夹也删除。

注:单据开发,构造会报错,需要在构造后的**.Extend BE文件中加入如下代码才可编译通过:public override Base.Doc.DocType DocType

       {

           get { return this.SODocType; }//单据中单据类型字段

       }

3、UI

3.1、建立界面项目

将系统默认产生的界面数据删除

 

 

3.2、界面数据

点击解决方案,新建界面项目:

3.2.1建立界面数据

3.2.2修改UI项目配件名

 

3.2.2修改界面数据命名空间名称

3.2.3用户界面模型树设置

(1) 把BE中的表头实体、表体子实体拖到用户界面模型树里。

(注:在拖表体实体时,一定要将表体实体拖到表头实体里的表体行)

 

 

(2)在动作组右击,选择“应用缺省特性”。

3.3界面

3.3.1创建界面UIForm

.选择表单界面模板类型,并选择界面元数据,建立UIForm需要设置多卡单表

 

3.3.2界面栏位设置

1.3把要显示的内容拖到表头和表体中。

注意:每个容器(Card,Grid,TabPage等)绑定一个视图,拖拽字段时需要先将视图中Key和Sys下的ID和SysVersion属性拖拽到容器中,并且设置隐藏。如果漏掉此操作会引起实体视图无法正常保存。

 

2.3绑定按钮事件。

 

3.3. 添加UI的基础引用

UI->UFIDA.U9.CBO.Ref.BaseReferenceUI.MetaData UI->UFIDA.U9.CBO.Ref.CBOReferenceUI.MetaData

 

 

 

2.6.处理参照,绑定参照ID、Code、Name。

选中控件->属性->参照信息

(注:返回字段ID指向Key,Code指向Value,Name指向Text)

参照代码过滤:

private void this.Model.cRef.CurrentFilter.OPath + " Org=" + PDContext.Current.OrgID;

                            PDResource.GetDeleteConfirmInfo();

           //绑定注册弹出对话框到删除按钮

           PDFormMessage.ShowConfirmDialog(this.Page, message, "", this.BtnDelete);

           PDFormMessage.ShowConfirmDialog(this.Page, "确认放弃当前记录?", "", this.BtnCancel);

 

           //设置默认行号

           GetProfileValueProxy bpObj = new GetProfileValueProxy();

           bpObj.ProfileCode = "SysLineNo";

           PVDTOData pVTDOData = bpObj.Do();

           //行GRID

           ((IAutoRowNo)this.DataGrid5.Columns["RowNo"]).Sequence = true;

           ((IAutoRowNo)this.DataGrid5.Columns["RowNo"]).SequenceStep = Int32.Parse(pVTDOData.ProfileValue);

           ((IAutoRowNo)this.DataGrid5.Columns["RowNo"]).SequenceStart = Int32.Parse(pVTDOData.ProfileValue);

 

 

                   

       }

 

按钮控制:

 #region 控制按钮状态

 

       ///

 

       /// 控制按钮状态

       ///

 

       private void SetControlStatus()

       {

           //如果页面是通过TitleLink进入则显示确定取消按钮

           if (NavigateManager.IsTitleLink(this))

           {

                this.BtnOk.Visible = true;

                this.BtnClose.Visible = true;

 

 

           }

           else if (NavigateManager.IsModelPopup(this))

           {

                this.BtnOk.Visible = false;

                this.BtnClose.Visible = false;

 

 

           }

           else

           {

                this.BtnOk.Visible = false;

                this.BtnClose.Visible = false;

 

           }

 

 

           if (this.Model.CustSO.FocusedRecord.ID < 0L)

                this.Card4.ReadOnly = false;

           else if (this.Model.CustSO.FocusedRecord.Status == 2)

                this.Card4.ReadOnly = true;

 

           //下列暂时隐藏     

           this.BtnCopy.Enabled = true;//复制

           this.BtnSubmit.Enabled = true;

           this.BtnApprove.Enabled = true;

           this.BtnUndoApprove.Enabled = true;// 弃审

           this.BtnDelete.Enabled = true;

           this.BtnSave.Enabled = true;

 

           //Opened 0     System::Int32  开立 

           //Approving 1  System::Int32  审核中 

           //Approved 2   System::Int32  已审核 

           switch (this.Model.CustSO.FocusedRecord.Status)

           {

                case -1:

                case 0:

                    this.BtnApprove.Enabled = false;

                    this.BtnUndoApprove.Enabled = false;

                    if (this.Model.CustSO.FocusedRecord.ID < 1)

                    {

                        this.BtnCopy.Enabled = false;

                        this.BtnSubmit.Enabled = false;

                    }

                    break;

                case 1:

                    this.BtnSubmit.Enabled = false;

                    this.BtnApprove.Enabled = true;

                    this.BtnUndoApprove.Enabled = false;

                    //this.BtnSave.Enabled = false;

 

                    break;

                case 2:

                    this.BtnSubmit.Enabled = false;

                    this.BtnApprove.Enabled = false;

                    this.BtnDelete.Enabled = false;

                    this.BtnSave.Enabled = false;

                    break;

                default:

                    break;

           }

           ((UFSoft.UBF.UI.ControlModel.IUIFieldBindingDataBindControl)this.Status143).ReadOnly = true;

 

           this.DataBind();

           this.DataCollect();

           if (this.Model.CustSO.FocusedRecord != null)

           {

                string code = this.SODocType_DocHeaderSequenceStyle597.Value.ToString();

                if (this.Model.CustSO.FocusedRecord.SODocType_DocHeaderSequenceStyle == 0)

                   ((UFSoft.UBF.UI.ControlModel.IUIFieldBindingDataBindControl)this.DocNo170).ReadOnly = true;

                else

                   ((UFSoft.UBF.UI.ControlModel.IUIFieldBindingDataBindControl)this.DocNo170).ReadOnly = false;

           }

       }

       #endregion

 

CallBack计算值:

 #region 数量金额联动

       #region 回调注册/处理专区

       ///

 

       /// 注册表格单元格内容改变的回调事件

       ///

 

       private void AllotQtyChangedCallBack()

       {

           AssociationControl gridCellDataChangedASC = new AssociationControl();       //基本固定代码

           gridCellDataChangedASC.SourceServerControl = this.DataGrid5;

           gridCellDataChangedASC.SourceControl.EventName = "OnCellDataChanged";

 

 

           //CallBack处理方案

           ((IUFClientAssoGrid)gridCellDataChangedASC.SourceControl).FireEventCols.Add("Price");

           ((IUFClientAssoGrid)gridCellDataChangedASC.SourceControl).FireEventCols.Add("Qty");

 

           ClientCallBackFrm gridCellDataChangedCBF = new ClientCallBackFrm();

           gridCellDataChangedCBF.ParameterControls.Add(this.DataGrid5);

 

           gridCellDataChangedCBF.DoCustomerAction += new ClientCallBackFrm.ActionCustomer(AllotQtyChange);

           gridCellDataChangedCBF.Add(gridCellDataChangedASC);

           this.Controls.Add(gridCellDataChangedCBF);

 

       }

       ///

 

       /// 表格的CallBack处理方式

       ///

 

       ///

       ///

       private object AllotQtyChange(CustomerActionEventArgs args)

       {

           this.Model.CustSO.ClearErrorMessage();

           UFWebClientGridAdapter grid = new UFWebClientGridAdapter(this.DataGrid5);

 

           //取表格数据(当前行)

           ArrayList list = (ArrayList)args.ArgsHash[UFWebClientGridAdapter.ALL_GRIDDATA_SelectedRows]; //基本固定代码

           int curIndex = int.Parse(list[0].ToString());

           Hashtable table = (Hashtable)((ArrayList)args.ArgsHash[this.DataGrid5.ClientID])[curIndex];

           decimal Qty = decimal.Parse(table["Qty"].ToString()); //数量

           decimal Price = decimal.Parse(table["Price"].ToString());  //单价

           decimal Money = Qty * Price;

 

           //金额

           grid.CellValue.Add(new object[] { curIndex, "Amont", new string[] { Money.ToString(), Money.ToString(), Money.ToString() } });

           args.ArgsResult.Add(grid.ClientInstanceWithValue);

           return args;

       }

       #endregion

 

 

5.布置发布 

5.1、配置文件设置

参见档案开发部署,同档案发布部署步骤完全一致

 

单据开发

 培训示例界面:1、配置UBF项目代码生成路径第一次使用UBF开发项目需配置,以后不需要配置;UBF代码生成路径,代码VS版本,在“工具”-“...
点击下载文档
标签: # U9C
分享:
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息