K3工业单据介绍解析课件_第1页
K3工业单据介绍解析课件_第2页
K3工业单据介绍解析课件_第3页
K3工业单据介绍解析课件_第4页
K3工业单据介绍解析课件_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、版权所有 1993-2010 金蝶软件(中国)有限公司K/3工业单据平台结构介绍版权所有 1993-2010 金蝶软件(中国)有限公司K/工业单据平台简介单据模版介绍代码结构介绍工业单据序时簿序时簿模版介绍代码结构介绍工业单据打印单据打印介绍套打模版介绍打印代码结构介绍提 纲工业单据平台提 纲工业单据平台-简介工业单据平台和BOS平台的关系和特点工业单据平台是K/3 BOS平台产生之前的K/3工业统一单据平台主要应用于K/3工业链系统和制造系统早期开发的业务单据基于数据库模版配置动态构建三层架构模式涵盖了业务单据的设计、维护、打印、单据转换和列表查询等功能支持较丰富的二次开发接口和手段注意目前

2、处于维护已有单据阶段禁止创建新的业务单据类型,新的业务单据必须使用BOS实现,已有单据新增的业务功能尽量采用二次开发接口扩展实现,尽量减少对单据自身核心代码的改动(可扩展接口)其它本课件主要介绍工业单据平台的单据、序时簿和套打相关的模版表结构和代码处理结构,单据转换和二次开发等其他相关内容请参考相应主题的其它课件工业单据平台-简介工业单据平台和BOS平台的关系和特点工业单据平台-单据模版介绍表名作用ICTransactionType单据事务类型表,描述单据的整体性配置属性,类似BOS的ICClassTypeICTemplate单据头模版表,描述单据头字段的配置情况,类似BOS的ICClassT

3、ableinfoICTemplateEntry单据体模版表,描述单据体字段的配置情况,类似BOS的ICClassTableinfoICBillAction单据扩展Action配置表,描述单据参数化选择性Action配置方案工业单据平台-单据模版介绍表名作用ICTransaction工业单据平台-单据模版介绍ICTransactionType 单据事务类型表(一)字段说明FBrNo机构编码,未使用FID单据事务类型内部IDFRob红蓝字标记 :1表示该单据区分红蓝字 ,0表示没有红蓝字之分FName单据名称FType单据类别,代码中少数地方有判断使用,枚举值定义位置. CodeUltimateK

4、3INDUSTRYPublicPublic ModulesClientK3Enum.basFTempalteID单据模版IDFVchTempalteID凭证模版IDFHeadTable单据表头对应的数据库表名FEntryTable单据表体对应的数据库表名FCheckPro单据审核的二次开发组件(现通过二次开发模版配置)FFixCols单据的固定列数目(从左到右的锁定)工业单据平台-单据模版介绍ICTransactionType工业单据平台-单据模版介绍ICTransactionType 单据事务类型表(二)字段说明FObjectType权限对象类型FObjectID权限对象IDFBillPOS

5、HeadTable前台录单系统对应单据头表FBillPOSEntryTable前台录单系统对应单据体表FListTemplateID序时簿ID工业单据平台-单据模版介绍ICTransactionType工业单据平台-单据模版介绍ICTemplate 单据头字段描述表(一)字段说明FID 单据模版ID ,对应于ICTransactionType表中的FTemplateID字段FCtlIndex 表头控件编号(作为控件数组的索引,所以必须连续且唯一) FTabIndex 控件的Tab跳动次序 FCaption 控件标题 FCtltype 控件类型 0文本,1日期,2查找,3数量 ,4 编号,5 选

6、单 ,6 单据标题,7 单据分录,8 审核,9 制单,10 批号,11 金额,12 单价,13 税率,14 会计科目 ,15 生产订单状态,16 生产订单来源,17 要求缺省为空的日期,18 记账 , 20 汇率,21 含税价,22 当前操作员, 30 自定义单据使用的字符串类型,31自定义单据使用的数字类型,32自定义单据使用的日期类型,33自定义单据使用的整数类型40本位币金额类型 工业单据平台-单据模版介绍ICTemplate 单据头字段工业单据平台-单据模版介绍ICTemplate 单据头字段描述表(二)字段说明FLookUpCls 查找类别如果FCtltype为查找类型,则与表t_I

7、temClass(核算项目表)中的FItemClassID对应,或者为辅助资料的ID(t_SubMesType 中FtypeID,t_SubMessage中FTypeID)还有几种不属于以上类型的自定义的类型:18:批号 13:科目 12:币别 -8:分录审核人 -15:仓位-17:单据类型 -18:质检方案 -20:部门(车间特殊处理,现已无用)-24:对应代码 -35:选单关联关系列表 -99:辅助属性-100:工艺路线 -101:BOM调用 -102:生产类型-103:生产线 -110:BOM单组别 -108:虚仓批号V10版本增加对新单据平台的支持。一般辅助资料FLookUpCls 9

8、99999。 工业单据平台-单据模版介绍ICTemplate 单据头字段工业单据平台-单据模版介绍字段说明FNeedSave是否需要保存FValueType保存到数据库中值的类型 0 字符串,1 数字,2 日期,3 整数,8 Bool型FSaveValue保存值的类型 0 名称,1 内部ID,2 代码前期版本存在类型3,已经没有使用了FFieldName 该字段对应在数据库表中的字段。在同一个单据的模版中不能重复。FEnable控件在各种单据操作下是否可录入:用一组二进制数表示,可录入则对应位为1否则为0。各位表示表如下(从左到右)ICTemplate 单据头字段描述表(三)工业单据平台-单据

9、模版介绍字段说明FNeedSave是否需要工业单据平台-单据模版介绍FEnable值说明操作订单确认新增修改查看审核下达单价金额修改位权6432168421如:48(110000)表示该字段在新增、修改状态下可以录入,其他状态下不可录入 工业单据平台-单据模版介绍FEnable值说明操作订单确认新工业单据平台-单据模版介绍ICTemplate 单据头字段描述表(四)字段说明FPrint是否打印FSelBill如果该控件可以选择其它单据作为数据的输入来源,则该值对应为被选择单据的叙事簿ID一般单据FSelBill999999。 FMustInput 是否必须录入 FFilter过滤条件。一般用于

10、选单或查找某类基础资料时过滤掉一些不符合选择条件的单据或基础资料。 这里只是静态条件,如果需要动态切换,需要在单据代码中实现FRelationID表示哪一个字段的改变会导致当前控件值的改变。值为对应字段的数据库字段名。如有多个这样的字段可以用逗号隔开。工业单据平台-单据模版介绍ICTemplate 单据头字段工业单据平台-单据模版介绍ICTemplate 单据头字段描述表(五)字段说明FAction 前面FRelationid定义的字段的改变时该执行什么样的操作。例如汇率这个字段,它的FRelationID为FCurrencyID ,FAction为 “.,FExchangeRate”表示当改

11、变币别时,把对应币别的默认汇率填入汇率栏中。FLockA 为1表示选单过来的数据不能再添加删除分录 FROB 1 只在蓝字单据中可见,2只在红字单据中可见3 在红蓝字单据中都可见FDefaultCtl 系统自带控件为1,自定义的为0 FVisForBillType 控件在各种单据操作下是否可见:用一组二进制数表示,可见则对应位为1否则为0。各位表示表如下(从左到右) 工业单据平台-单据模版介绍ICTemplate 单据头字段工业单据平台-单据模版介绍FVisForBillType 值说明操作导入可选数据倒入锁定字段并默认导出是否作为数据导入字段:K3BillsDataImport.vbp移动商

12、务默认字段移动商务可用新增修改查看审核下达位权5122561286432168421工业单据平台-单据模版介绍FVisForBillType 值工业单据平台-单据模版介绍ICTemplate 单据头字段描述表(六)字段说明FVBACtlType 自定义单据用来区分是什么类型的控件有Frame,Label,Kdtext三种 FRelateOutTbl 如果该控件为其它选择类型的属性则为1表示该字段在当前表中不存在,是属于关联的其他表例如:销售发票有个客户开户银行账号就是此类 FSystemMustInputItem 是否系统必录,如果为1,则自定义单据也不能把它变为非必录。FInEntryFor

13、SPrint 连续打印时打印在分录里 FMaxValue 字段最大值 FMinValue字段最小值FDefaultValue 字段默认值 CurrDate、CurrTime、CurrYear、CurrPeriod分别为当前日期、时间、年度、会计期间 工业单据平台-单据模版介绍ICTemplate 单据头字段工业单据平台-单据模版介绍ICTemplate 单据头字段描述表(七)字段说明FFormat 表示当前字段的格式或精度或长度如果当前字段为日期类型(FValueType=2),则0表示普通日期类型,1表示长日期类型(精确到时分秒)FLookUpType字段查找类别,主要用于查找字段下拉列表,

14、值枚举定义在.CodePublicK3BosPublic ModulesPubmodHYEnum.bas工业单据平台-单据模版介绍ICTemplate 单据头字段工业单据平台-单据模版介绍ICTemplateEntry 单据体字段描述表单据体字段描述表结构与单据头字段描述表结构类似,对应字段含义也非常相似特殊字段说明字段说明FCtlOrder该字段的值决定字段在单据自字段数组中的下标,FCtlIndex只是字段在界面上的显示顺序,和单据头字段描述表的FCtlInidex字段一样,要保持FCtlOrder的顺序和连续性,该字段值的先后顺序决定级联Action的触发顺序,此字段值顺序的修改可能影响

15、会导致单据Action的计算结果的不同FCtlType 分录列类型 0文本,1日期,2查找,3数量 ,4 编号,5 选单 ,6 单据标题,7 单据分录,8 审核,9 制单,10 批号,11 金额,12 单价,13 税率,14 会计科目 ,15 生产订单状态,16 生产订单来源,17 要求缺省为空的日期,18 记账 ,20 汇率,21 含税价, 30 自定义单据使用的字符串类型,31自定义单据使用的数字类型,32自定义单据使用的日期类型,33自定义单据使用的整数类型,40本位币金额类型 工业单据平台-单据模版介绍ICTemplateEntry 工业单据平台-单据模版介绍字段说明FLookUpCl

16、s 如为查找类型 则与表t_ItemClass(核算项目表)中的FItemClassID对应,或者为辅助资料的ID(t_SubMesType 中FtypeID,t_SubMessage中FTypeID)还有几种不属于以上类型的自定义的类型:18:批号 13:科目 12:币别 -8:分录审核人-15:仓位 -17:单据类型 -18:质检方案-20:部门(车间特殊处理,现已无用)-24:对应代码-35:选单关联关系列表 -99:辅助属性 -100:工艺路线 -101:BOM调用 -102:生产类型-103:生产线 -110:BOM单组别 -108:虚仓批号V10版本增加对新单据平台的支持。一般辅助

17、资料FLookUpCls 999999。 ICTemplateEntry 特殊字段说明(二)工业单据平台-单据模版介绍字段说明FLookUpCls 如为工业单据平台-单据模版介绍字段说明FNeedCount该分录列是否需要合计,1:需要 0:不需要。应用于单据界面的合计显示。 FSaveRule该列值的保存规则,例如“U:0”表示该列的值不能为0。FSaveRule的详细含义需要在代码中查询FStatCount是否汇总类字段(与FNeedCount类似,但使用于程序内部的拆分、打印、合并打印等处理)ICTemplateEntry 特殊字段说明(三)模板维护注意:尽量保持FCtlOrder和FC

18、tlIndex字段的一致性尽量采用以前版本维护脚本文件中采用的模块化SQL片段工业单据平台-单据模版介绍字段说明FNeedCount该分录工业单据平台-单据模版介绍工业单据Action简介单据Action是一种自动计算机制,计算种类非常广泛,例如录入物料携带名称,修改数量重算金额等单据Action大多采用被动方式触发,一小部分为主动方式单据Action支持级联触发单据基本的Action都配置在单据头模版和单据体模版中,有些需要根据系统参数和单据选项采用不同Action的方案保存在ICBillAction表中,该表结构后续讲解单据支持单据头字段修改影响到单据体的Action单据Action支持对

19、触发源的选择性使用工业单据平台-单据模版介绍工业单据Action简介工业单据平台-单据模版介绍工业单据Action详解单据Action由Action标示符,选择性触发源字段列表和Action计算参数列表三部分组成,每部分之间用逗号分隔,一个字段也可以配置多个Action,Action之间用分号分隔,如采购发票的换算率字段:FRelationID值:FItemID,FSecQtyFAction值:.,FSecCoefficient;Cal,FSecQty&A=B/C,FQty,FSecQty;ControlLocked,FSecUnitID,=,True这个Action表达式共包含了3个Acti

20、onAction1Action标志符:. Action含义:携带基础资料属性到当前字段Action选择性触发源:空,表示FRelationID字段中列出的所有字段修改都会触发此Action(触发源和参数间用&分隔,多个触发源之间用|分隔)Action参数列表:FSecCoefficient结合参数,该Action含义为:携带触发源字段的辅助换算率属性到当前字段,因为触发源中的FSecQty不是基础资料,此Action自动失效Action2Action标志符:CalAction含义:按照自定义公式计算结果并填入当前字段Action选择性触发源:FSecQty,表示只有FSecQty字段值修改才会

21、触发此Action工业单据平台-单据模版介绍工业单据Action详解工业单据平台-单据模版介绍工业单据Action详解(序上页) .,FSecCoefficient;Cal,FSecQty&A=B/C,FQty,FSecQty;ControlLocked,FSecUnitID,=,TrueAction2(续上页)Action参数列表参数1:A=B/C 自定义计算公式,含义:当前字段A结果=参数2/参数3参数2,3(FQty,FSecQty)按顺序分别对应为B和C的取值来源,常数计算项直接写入计算公式,不需要增加参数Action3Action标志符:ControlLocked Action含义:

22、根据计算结果锁定/放开字段Action选择性触发源:空,表示FRelationID字段中列出的所有字段Action参数列表:FSecUnitID ,=,True,共4个参数FSecUnitID 判断界面取值来源字段,这里为辅助计量单位= 判断逻辑,这里为判断相等 ,比较参考值,这里为 (空)True 返回值结合所有参数,此Action含义为如果辅助计量单位字段为空则返回True(应用到当前字段的FEnabled属性上)工业单据平台-单据模版介绍工业单据Action详解(序上页)工业单据平台-单据模版介绍ICBillAction从之前的单据模版可以看到单据模版对每个字段只能配置一套Action计

23、算公式,但是有些业务单据要求同一字段在不同的情况下采用两套或几套完全不同的Action计算方案,比较典型的如销售发票的折扣字段在“是否启用整单折扣”和“折扣基础是否含税”这两个参数的组合情况下有4套不同的计算逻辑,ICBillAction表就是为了满足类似要求而建立,在单据加载或选项切换时,单据平台会抛出Action加载事件,负责该表内容解析的公共单据插件就会根据传来的参数组合情况从该物理表中加载指定单据不同的Action方案,并以此替换从单据模版中得到的Action计算方案,从而在修改触发时能应用不同配置的Action方案字段说明FID数据内码FTransType单据类型,该表也用于配置新单

24、的Action方案FPage单据字段所在页索引,用于新单FOrder执行顺序FFieldName字段名,新单为字段FKey工业单据平台-单据模版介绍ICBillAction字段说明F工业单据平台-单据模版介绍ICBillAction字段说明FRelationID触发源,同于单据模版(新单不使用)FActionAction,同于单据模版FFuncID功能标示(方案条件标志),目前使用的值:1:启用整单折扣,折扣率计算基础为含税金额2:启用整单折扣,折扣率计算基础为不含税金额3:不启用整单折扣,折扣率计算基础为含税金额4:不启用整单折扣,折扣率计算基础为不含税金额FClassActionID新单使

25、用的功能标示工业单据平台-单据模版介绍ICBillAction字段说明F工业单据平台-代码结构介绍工业单据采用三层架构,各层又根据业务功能分为不同的组件,主要有如下这些:组件名所在层说明代码路径K3Bills.dll客户端单据显示和客户端逻辑. CodeUltimateK3INDUSTRYPublicClientDLLsK3BILLSK3Bills.vbpK3BillPlugin.dll客户端单据扩展Action方案处理公共插件. CodePublicK3INDUSTRYPublicClientDLLsK3BillPluginK3BillPlugin.vbpK3MBillsPackage.dl

26、l中间层单据数据包处理组件. CodePublicK3INDUSTRYPublicServerK3MBillsPackageK3MBillsPackage.vbpBillDataAccess.dll中间层单据数据处理组件. CodeUltimateK3INDUSTRYPublicServerBillDataAccessBillDataAccess.vbp工业单据平台-代码结构介绍工业单据采用三层架构,各层又根据业工业单据平台-代码结构介绍K3Bills介绍功能K3bills是工业单据平台最重要的客户端组件,主要负责单据界面的显示、控制、单据功能调用以及与二次开发接口的交互等代码调试要求(除了安

27、装K3通用的Spread和ActiveBar控件之外的要求)注册单据使用的需要授权控制的控件,主要包括Ledger50.ocx和KDNote.ocx将K3安装目录下的ErpSwitch.sss文件拷贝到K3bills代码目录和要调用单据的组件的工程目录下,如K3List.vbp和K3ReportView.vbp等主要代码组成部分和功能类/模块功能Bills.cls单据对外接口类,外部代码可以通过该类调起单据Bill.cls单据控制类,界面数据操作,数据包的维护等frmBill.frm单据界面类,界面显示,菜单工具条命令响应等clsBillPackage.cls单据数据包控制类,负责业务数据和单

28、据模板数据包的构造和维护等工业单据平台-代码结构介绍K3Bills介绍类/模块功能Bi工业单据平台-代码结构介绍K3Bills主要业务介绍单据的加载外部调用者创建单据组件,设置单据属性,调用单据接口显示接口并按要求传入相应的参数单据显示接口:工业单据平台-代码结构介绍K3Bills主要业务介绍外部调用工业单据平台-代码结构介绍K3Bills主要业务介绍单据的加载外部调用示例(主控台): 工业单据平台-代码结构介绍K3Bills主要业务介绍工业单据平台-代码结构介绍K3Bills主要业务介绍单据的加载单据加载流程Bills.Show创建单据窗体frmbill并设置属性调用窗体加载方法,显示单据界

29、面Frmbill. Form_Load调用InitControls初始化界面字体和菜单名称设置单据控制类ThisBill的属性如果是新增单据调用,则需要设置单据的事务类型,这个设置动作会引起单据界面上单据类型控件cmbTransType的值更新,在这个值更新事件处理函数cmbTransType_Click中会完成单据界面菜单的初始化和单据界面控件的构造和布局如果是打开已有单据,除了和新增一样完成单据界面的构造和布局之外还需要调用MoveBill方法在传入的记录集中查找要显示的单据,加载单据数据,并调用ThisBill填充数据的FillBillData_New完成界面数据的填充工业单据平台-代码

30、结构介绍K3Bills主要业务介绍工业单据平台-代码结构介绍K3Bills主要业务介绍单据的加载单据加载流程Frmbill. cmbTransType_Click函数功能:单据类型控件值切换函数,在单据加载的时候会自动调用初始化单据控制类对象ThisBill和单据界面图片、菜单工具条等一些控件的属性调用ThisBill的BuildBill方法构造单据界面和布局初始化单据二次开发插件设置单据菜单的可见性和可用性加载单据的打印设置Bill.cls BuildBill函数功能:构造单据先循环设置单据头字段控件全部不可见清除单据头和单据体字段控件属性数组调用单据数据包控制类clsBillPackage

31、的GetBillPackage方法加载单据数据包(如果是新增单据则只加载单据模版数据,如果有实际单据内码则还会同时加载单据的实际数据包)工业单据平台-代码结构介绍K3Bills主要业务介绍工业单据平台-代码结构介绍K3Bills主要业务介绍单据的加载单据加载流程Bill.cls BuildBill(序上)根据加载的单据类型的属性数据判断如果单据存在单据体则调用BuildEntryCtls方法构造单据体,如果不存在单据体则设置窗体的单据体表格控件不可见调用BuildHeadCtls构造单据头BuildEntryCtls和BuildHeadCtls分别完成单据体和单据头控件属性数组的构造,函数内部

32、逻辑大致类似,基本都是根据单据数据包控制类加载的单据的模版数据重建用于描述单据头和单据体控件属性的结构数组,并在数组构造完成之后根据数组的描述信息生成与数组内各个字段相对应控件或者表格列,再根据属性信息设置这个控件或者表格列的相应属性(主要包括锁定性、控件编辑类型、显示隐藏、格式控制、默认值设置等)工业单据平台-代码结构介绍K3Bills主要业务介绍工业单据平台-代码结构介绍K3Bills主要业务介绍单据加载单据模版和数据包的加载单据模版和数据包由单据数据包控制类clsBillPackage负责构造维护,在单据加载时控制类通过中间层接口获得指定单据的数据并构造成指定结构的数据包,在保存时根据界

33、面数据的变化修改单据数据包中的数据并根据单据数据的前后变化生成数据库更新SQL,会同数据包一起交给单据中间层完成数据的更新保存需要注意的是虽然工业单据平台维护的有数据包,但是这个数据包中的数据并不是随时与界面数据一致,界面上查找类别的字段的值修改时单据控制类会更新数据包中的内容与界面保持一致,但是普通文本、数字和日期等类型字段的界面值的修改只有在触发保存重新对界面打包的时候界面数据的实际值才会反映到单据的数据包中,在单据交互过程中,这些类型字段的实际值只能从界面控件中获得另外一点,单据在执行保存之前会对界面数据进行打包更新,但是在完成保存之后并不会再次读取数据库中保存的数据重建数据包和更新界面

34、,所以对于在中间层额外修改的数据需要注意处理界面和数据库的一致性工业单据平台-代码结构介绍K3Bills主要业务介绍单据模工业单据平台-代码结构介绍K3Bills主要业务介绍单据加载单据模版和数据包的加载clsBillPackage. GetBillPackage函数功能:加载单据数据并构造单据数据包判断如果需要加载单据数据则调用K3MBillsPackage.clsReadPackage的GetBillPackage方法获得单据数据包新增单据只需要调用GetBillEmptyPackage获得空的单据数据包GetBillEmptyPackage函数逻辑如果单据类型没有变化(界面新增调用)只是

35、需要获得一个空的单据数据包而不需要更新模版数据则调用K3MBillsPackage.clsReadPackage的GetBillDataEmptyPackage方法获得空的单据数据包如果单据类型有变化则调用K3MBillsPackage.clsReadPackage的GetBillTemplatePackage方法获得新的单据类型的模版数据包如果获得的单据数据包不为空,则对单据数据包中的数据执行计算类型的Action(主要是在单据数据包中构造需要通过界面计算获得而又不需要保存的字段的值)工业单据平台-代码结构介绍K3Bills主要业务介绍工业单据平台-代码结构介绍K3MBillsPackage

36、主要业务介绍单据模版和数据包的加载clsReadPackage. GetBillTemplatePackage函数功能:加载并构造单据模版数据包读取单据事务类型模版数据并构造数据包填充到单据数据包的事务类型信息包中读取单据头模版数据并构造数据包填充到单据数据包的单据头信息包中读取单据体模版数据并构造数据包填充到单据数据包的单据体信息包中额外附加特殊操作需要的其他隐藏字段的数据包信息clsReadPackage. GetDataPackage函数功能:加载制定单据的业务数据并进行打包根据指定单据的模版结构和读取条件拼接SQL获得单据头数据,拼接SQL的时候已经根据字段的属性对需要扩展取数的字段进

37、行了关联处理(比如资料属性类字段的取数)根据指定单据的模版结构和读取条件拼接SQL获得单据体数据,拼接SQL的时候已经根据字段的属性对需要扩展取数的字段进行了关联处理(比如资料属性类字段的取数)对单据数据包中的数据执行计算类型的Action工业单据平台-代码结构介绍K3MBillsPackage主要工业单据平台-代码结构介绍K3Bills主要业务介绍单据的Action处理工业单据平台的Action是单据业务逻辑自动处理的一种实现方式,比如数量修改重新计算金额就是一种典型的计算Action单据的Action由模版中配置在字段上的FRelationID中的字段的值更新动作触发,触发时会引起这个字段

38、相关的所有Action的执行,即当一个字段的值发生改变并验证生效后就调用单据控制类的Action计算函数,该函数会循环整个单据的字段属性结构数组,解析每个字段属性结构中配置的FRelationID字符串,如果该字符串中的触发源包含有当前修改字段的字段名,则计算该字段的所有Action(选择性触发源的另外判断)单据Action代码逻辑字段值修改事件函数frmbill.frm vsEntrys_LeaveCell(以单据体为例) 通过单据控制类对象ThisBill的MainActions函数调用DoActions函数和DoAction函数完成单据的Action的触发计算(如果当前字段是单据头字段,

39、可能还会调用DoActionHeadToEntry函数触发计算单据头到单据体的Action,此类Action一般是单据头字段的修改引起整个单据体某些字段的重算或者对某些字段进行锁定)Bill.cls MainActions循环字段控件属性数组,判断FRelationID内容,触发需要计算的Action工业单据平台-代码结构介绍K3Bills主要业务介绍工业单据平台-代码结构介绍K3Bills主要业务介绍单据Action代码逻辑触发指定字段上Action的计算 Bill.cls DoAction()根据传入的触发源字段和目标字段的属性获得目标字段的Action列表循环目标字段的每个Action,

40、判断如果该Action不满足触发条件则退出处理解析每个Action的标志符,并根据Action的参数列表获得Action执行所需的参数,按照Action规则执行处理工业单据平台-代码结构介绍K3Bills主要业务介绍工业单据平台-代码结构介绍K3Bills主要业务介绍单据Action处理说明单据平台Action处理支持级联处理,如果不希望级联则需要考虑改变相关Action和FRelationID的配置单据平台的Action执行机制包含了死循环处理,一般可以避免Action处理陷入死循环基本所有Action的标志符的解析代码都包含在函数Bill.cls DoAction()中,导致此函数经常超出

41、VB单一函数最大行数限制,对于新加入的Action标志的处理要求新增函数完成业务逻辑处理,此函数中只能加入对新增Action执行函数的调用,如果此函数仍然超长则需要先将函数中较长处理分支中的代码进行分离函数的处理,分离函数时需要注意函数变量的上下文引用和设置对于新增的字段计算逻辑尽量采用新增单据二次开发插件,在插件的Change事件中完成业务逻辑处理的方式来实现对于在Bill.cls模块外循环访问ThisBill.TEntryCtl数组的要求先在循环外定义局部变量并使用ThisBill.TEntryCtl对变量进行赋值在循环中访问此局部变量而不是直接访问ThisBill.TEntryCtl如果

42、对变量有更新需要及时赋值回ThisBill.TEntryCtl如果在循环中直接访问ThisBill.TEntryCtl会造成明显的性能问题工业单据平台-代码结构介绍K3Bills主要业务介绍工业单据平台-代码结构介绍K3Bills主要业务介绍查找类型字段动态设置过滤条件有很多单据的查找类型字段会要求在单据运行时根据某一个的值或者某一些条件来动态设置查找字段的过滤条件,比如入库单的仓库,要求根据分录行的检验属性限定当前行的可录入仓库是良品仓还是不良品仓,控制点包括F7查询结果界面,仓库字段下拉列表和手工录入编码后有效性验证等。这个可以通过动态设置仓库字段过滤条件来实现根据业务需求增加过滤条件SQ

43、L片段拼接函数,在函数中根据当前行字段的值构造不同的过滤条件片段在F7查询函数frmbill.frm LookUp中显示界面之前调用此函数,完成额外过滤条件的动态追加在根据编码获取指定资料的值并进行数据有效性验证的函数frmbill.frm GetData中调用此函数,完成额外过滤条件的动态追加在查找类型字段处理下拉列表的函数frmbill.frm KDCtl_ButtonClick中调用此函数,完成额外过滤条件的动态追加工业单据平台-代码结构介绍K3Bills主要业务介绍工业单据平台-代码结构介绍K3Bills主要业务介绍单据保存单据保存由单据界面的保存菜单/按钮触发,主要完成对单据界面数据

44、的打包,有效性验证,调用中间层执行保存并对界面进行控制等功能代码处理流程Frmbill.frm mnuFileSave_Click 保存菜单事件函数在保存前执行单据整体性特殊业务检查调用单据控制类对象ThisBill.Save函数完成单据保存处理单据保存后界面的特殊控制,但据特殊业务逻辑的处理和权限及网络控制的转移Bill.cls Save单据控制类单据保存函数单据特殊业务逻辑检查单据通用控制逻辑检查单据保存前二次开发接口调用和结果应用获取单据数据包根据返回值和用户的选择重复调用单据数据包控制类clsBillPackage的SaveBill方法保存数据并处理返回值的解析,完成用户交互完成单据保

45、存后的特殊业务逻辑处理工业单据平台-代码结构介绍K3Bills主要业务介绍工业单据平台-代码结构介绍K3Bills主要业务介绍单据保存代码处理流程Bill.cls GetBillData获取单据数据包构造单据数据包,打包单据整体属性和参数设置值获取单据头数据包循环单据头控件,使用界面值更新单据数据包中的对应值获取单据体数据包循环单据体分录重新打包该分录各字段数据并更新到数据包中,但是需要记录各分录老的ID号并分配新的ID号clsBillPackage.cls SaveBill 保存单据数据更新单据保存数据包中的整体性属性值和参数设置值根据单据数据包调用GetBillSQL获取单据更新SQL根据

46、单据头数据包数据拼接单据头更新SQL循环单据体数据包,比较单据老的备份数据包拼接要删除的单据分录的删除SQL根据分录的修改方式和单据分录字段的修改内容拼接单据分录的UPDATE个功能新SQL或INSERT插入SQL(单据变更保存使用UPDATE,普通新增修改保存使用INSERT)处理单据编号后调用中间层BillDataAccess.SaveData的SaveBillEx方法完成单据保存工业单据平台-代码结构介绍K3Bills主要业务介绍工业单据平台-代码结构介绍K3Bills主要业务介绍单据保存代码处理流程SaveData.cls SaveBillEx单据保存中间层服务函数解析单据整体属性和参

47、数设置分配单据内码如果是单据修改则先以删除的方式调用反写接口还原单据关联反写数据分支处理订单变更保存,完成订单变更的数据检查,单据更新和关联数据更新如果是普通修改保存则单独分支处理如果是库存单据修改则根据库存更新实际判断处理库存的反向更新调用信用更新接口,还原信用数据执行单据更新SQL完成相关数据的同步更新调用反写接口完成新的关联反写如果是库存单据调用库存更新接口使用新的数据更新库存更新其他相关数据更新信用数据检查信用调用二次开发接口工业单据平台-代码结构介绍K3Bills主要业务介绍单据序时簿-序时簿介绍K/3的工业单据序时簿是对工业单据的一种列表展示序时簿采用模版配置的三层架构模式序时簿界

48、面的显示字段内容、菜单配置和数据显示条件等都可以进行配置序时簿提供了灵活强大的业务数据过滤条件配置功能,用户可以根据需要对要展示的数据进行筛选并可以将配置好的过滤条件保存为过滤方案,之后继续使用序时簿界面提供有限的二次开发接口,用户可以通过接口在序时簿界面上添加自己的功能菜单并完成自己功能的调用对于系统预设功能,序时簿在中间层提供了很多二次开发接口,利用这些接口,客户可以介入系统的预设功能如单据审核、作废、拆分等操作过程,按条件终止或者完成附加操作等序时簿客户端对外封装为控件形式,用户可以根据需要在自己的窗体上放置序时簿控件以便调用功能显示单据列表并处理返回结果序时簿调用方式可参见代码:.Co

49、dePublicK3ManufacturePublicPublic ModulesClientfrmList.frm.CodePublicK3ManufacturePublicClientDllsK3ICMOTrackQuerymodTrackQuery单据序时簿-序时簿介绍K/3的工业单据序时簿是对工业单据的一单据序时簿-序时簿模版介绍类别表名用途序事簿类型ICListTemplate序事簿类型模板表,该表的内容也会作为单据型交叉分析报表可用字段的来源序事簿字段ICChatbillTitle记录序事簿字段配置信息,有些功能也会借用序事簿字段模板,如盘点数据报告和打印等序事簿表关系ICTabl

50、erelation和单据关联采用相同的模板表,记录序事簿展示需要用到的表与表之间的关联关系菜单工具条t_MenuToolBar序事簿菜单元素模板表,二次开发的菜单也在这里注册菜单工具条t_MenuBand菜单/工具栏项目表菜单工具条v_tools序时簿菜单方案视图菜单工具条t_BandToolMapping菜单元素和菜单条的映射关系模板表序事簿过滤ICListFilter记录过滤界面快捷过滤组合框过滤项目的配置信息,适用于序事簿的选单显示和一般显示,有些在代码里特殊控制单据序时簿-序时簿模版介绍类别表名用途序事簿类型ICList单据序时簿-序时簿模版介绍ICListtemplate字段说明FI

51、D模版唯一内码FTemplateID模版IDFFontID字体FLogicStr逻辑字符串,保存序时簿对菜单的特殊设置,菜单模版表中有对菜单项默认是否可见的设置,这里可以针对单据作特殊设置FToolBarVis工具条是否可见FHeadVis序时簿题头是否可见FBottomVis状态栏是否可见FSourceType数据源类型1:序时簿,2:自定义报表,数据来源于FSourceSQL的取数结果单据序时簿-序时簿模版介绍ICListtemplate字段说单据序时簿-序时簿模版介绍ICListtemplate字段说明FSourceSql自定义报表的取数SQLFGroupID分组IDFBillTempl

52、ateID对应的单据模版IDFNeedCount是否需要计数FType模版类型,0:序时簿,1001:自定义报表FMenuID菜单方案ID单据序时簿-序时簿模版介绍ICListtemplate字段说单据序时簿-序时簿模版介绍ICListtemplate字段说明FBillCls单据类别FFilter数据过滤条件FRptTemplateID报表模版IDFMasterTable主要表别名列表FNeedStatistic是否需要统计FSubSysID子系统ID单据序时簿-序时簿模版介绍ICListtemplate字段说单据序时簿-序时簿模版介绍ICChatbillTitle字段说明FInterID内码

53、,相同序时簿内不重复FTypeID序时簿模版ID,对应ICListTemplate中的FTemplateIDFColCaption标题,以$结束FHeadSecond双列头的第二列头标题FColName字段列标示,相同序时簿内不重复FTableName字段数据来源表名FColType列类型FVisible是否可见,0:不可见,1:默认不可见,可以设置为可见,3:默认可见,可以设置为不可见单据序时簿-序时簿模版介绍ICChatbillTitle字段单据序时簿-序时簿模版介绍ICChatbillTitle字段说明FItemClassID字段F7查找类别FVisForQuest过滤表格是否可见FRe

54、turnDataTypeF7返回数据类型FCountPriceType计数类型FCtlIndex显示序号FName来源字段名FTableAlias来源表别名(和ICTableRelation中一致)FAction字段额外计算逻辑(此字段有值,则该字段不能用于自定义报表)FNeedCount是否需要计数单据序时簿-序时簿模版介绍ICChatbillTitle字段单据序时簿-序时簿模版介绍ICChatbillTitle字段说明FIsPrimary字段业务类型标志符FStatistical统计类型FMergeable是否可合并显示FVisForOrder排序叶签是否可见注意FInterID要保持在相

55、同FTypeID范围内不重复,该字段的值有范围区分1-899 用于单据预设字段900-999用于多级审核相关字段显示大于1000用于用户自定义字段FTypeID为1,3,4的数据用于盘点数据界面单据序时簿-序时簿模版介绍ICChatbillTitle字段单据序时簿-序时簿模版介绍ICTablerelation字段说明FTypeID类别ID,对应于ICListTemplate表中的FTemplateID,如果为0则数据用于选单路线FInterID内码,相同序时簿或者相同选单路线内唯一FTableName左表名FTableNameAlias左表别名FFieldName左表关联字段名FTableNa

56、me11右表名FTableNameAlias11右表别名FFieldName11右表关联字段名FLogic关联操作符单据序时簿-序时簿模版介绍ICTablerelation字段单据序时簿-序时簿模版介绍ICTablerelation字段说明FBillID目的单据类型ID,用于选单路线FFieldID选单路线标志,用于选单路线FCondition连接条件,用于多字段关联的多个条件之间的拼接FLogicOperator操作符FISConst是否常量FConstType常量类型FSubFilter子过滤条件单据序时簿-序时簿模版介绍ICTablerelation字段单据序时簿-序时簿模版介绍ICTa

57、blerelation该表用于配置取数SQL的表关联关系片断的内容需要根据取数SQL的FROM片断按顺序解析表关联关系填写模版表数据支持表之间的多个字段关联方式,第一个关联字段的数据按正常逻辑填写,其他后续的关联条件需要配置当前关联条件和上一条关联条件之间的连接关系支持表字段和常量之间比较关系的关联条件,这类关联条件左表、左表字段和FLogic按正常数据配置,右表和字段配置为比较常量,同时设置该条数据的FIsConst和FConstType,设置FLogicOperator单据序时簿-序时簿模版介绍ICTablerelation单据序时簿-序时簿模版介绍t_MenuToolBar字段说明FTo

58、olID菜单项IDFName菜单名称FCaption标题FImageName菜单图片ID,图片定义于序时簿自定义控件界面的ImageList控件中FToolTip菜单提示内容FVisible默认是否可见FEnable默认是否可用FChecked默认是否选中单据序时簿-序时簿模版介绍t_MenuToolBar字段说明单据序时簿-序时簿模版介绍t_MenuToolBar字段说明FShortCut热键FShortChar快捷键字符FIndex顺序FToolCaption工具条标题该表只是配置通用的菜单项的基本配置,要应用到单据上还需要在t_BandToolMapping表中将菜单项配置到单据使用的菜

59、单/工具条上单据序时簿-序时簿模版介绍t_MenuToolBar字段说明单据序时簿-序时簿模版介绍t_BandToolMapping字段说明FID配置内码FBandID菜单/工具条IDFToolID菜单项IDFSubBandID子菜单/工具条ID(菜单条可以配置多级)FIndex位置索引FComName处理组件类名称,序时簿预设菜单只需要设置菜单功能标志符即可FBeginGroup是否开始新的分组二次开发也可以在序时簿的这些菜单配置表中增加新的菜单项并配置到指定的单据上,在FComName中配置好菜单处理组件即可在序时簿上通过该菜单调用组件功能,具体可参见单据二次开发的相关课件v_tools是

60、序时簿加载单据菜单方案的数据源,可以据此查看单据的菜单配置情况单据序时簿-序时簿模版介绍t_BandToolMapping单据序时簿-序时簿模版介绍ICListFilter字段说明FInterID内码FDestBillTranType目的单据类型ID,适用于选单过滤界面FListID序时簿ID,对应于ICListTemplate表中的FIDFListShowStatus序时簿显示状态FBillROB红兰单标识FCboTimeCaption组合框”时间”的简体标题FCboTimeList组合框“时间”的可选项简体列表FCboTimeValue组合框“时间”的默认值单据序时簿-序时簿模版介绍ICL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论