K3ERPwise老单开发手册_第1页
K3ERPwise老单开发手册_第2页
K3ERPwise老单开发手册_第3页
K3ERPwise老单开发手册_第4页
K3ERPwise老单开发手册_第5页
已阅读5页,还剩181页未读 继续免费阅读

下载本文档

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

文档简介

203/203供给链开发帮助手册金蝶软件(中国)有限公司研发中心K/3供给开发组解释目录 K/3老单单据平台开发手册 4 整体框架和设计思路 4一、 设计思路 4二、 UML图 4 模版 5一,单据构造模版: 5二、选单模版 9三,单据控制 10四,单据套打 10 单据调用接口 11一、 客户端调用接口 11二、 中间层调用接口 13 单据流程 15一、 新建单据流程 15二、 查看或修改单据流程: 16三、 录单流程: 17四、 单据的保存流程 22五、 对下一版本的一些建议 24 单据选单的实现说明 25一,实现思路: 25二,实现方式: 25 单据模板Action说明文档 28一、 概述 28二、 关键词 28三、 分类 28四、 功能标准定义 28五、 标准过程指南 31 单据打印、连续打印、合并打印实现说明 32一、 GUI上单据打印的实现方式: 32 常见问题分析 32一、 对于KDInputTool.DLL组件的日期控件的日期格式 32二、 对于Spread控件的取值赋值 33三、 模板数据冗余: 33四、 选单结构不灵活: 34五、 ICTemplate表、ICTemplateEntry表的问题 34六、 单据选单的关联关系: 34 单据二次开发手册 34 属性 35 方法 36 用户可实现自己功能的事件 37 中间层事件 40 应用例如 41 K/3序时簿开发手册 45 整体框架和设计思路 45 模版 45一、 ICListTemplate:该表反映了供需链所有序时簿的总体情况。 45二、 ICChatbilltitle:该表反映了所有序时簿的显示的字段详细情况。 46三、 ICListToolbar:该表反映了序时簿菜单和工具栏详细情况。 47四、 ICTableRelation:选单中涉及的所有表之间的连接关系。 47 接口函数描述 48一、 相关组件 48 序时簿二次开发 48一、 创立一个中间层组件,实现一个接口 48二、 注册组件 49 常见问题分析 50一、 模板数据冗余: 51二、 序时簿几种状态 51 采购价格管理开发手册 51 流程 51 表结构 51 代码结构 51 销售价格/折扣管理开发手册 51 流程 51 表结构 51 代码结构 52 进出口开发手册 52 流程 52 表结构 52 代码结构 52 发票钩稽开发手册 52 流程 52 表结构 52 代码结构 52 盘点开发手册 52 盘点作业 52 盘点方案查询 53 盘点方案新建 54 盘点方案删除 54 备份盘点数据 55 盘点数据引入/引出 57 盘点选单 57 生成盘点单据 57 序列号开发手册 59 流程 59 表结构 59一、 序列号流转表ICSerialFlow表结构: 59二、 序列号表ICSerial 59三、 ICSerial_FXXX 60 根本操作 61一、 新增单据 61二、 审核单据: 62三、 删除单据: 62四、 作废单据: 62五、 更新库存后序列号状态单据类型对应表: 63 代码结构 63 入库核算开发手册 64 流程 64 表结构 64 代码结构 64 委外核销开发手册 64 流程 64 表结构 64 代码结构 64 出库核算开发手册 64 表说明 64 算法说明 65 代码结构 65一,所有计价方法的入口函数: 65二,每一种计价方法的处理逻辑: 66 核算常见问题汇总 69 出库核算核算报错问题 70 凭证开发手册 72 表说明 72 凭证模版 72 代码结构 74 凭证常见问题说明 75 分销开发手册 75 流程 75 表结构 75 代码结构 81 门店开发手册 81 流程 81 表结构 81 代码结构 81 销售前台开发手册 81 流程 81 表结构 81 工业报表开发手册 81 简介: 81 主要函数: 82 处理过程顺序图: 83 代码结构 83 门户报表开发手册 83 流程 错误!未定义书签。 表结构 错误!未定义书签。 代码结构 错误!未定义书签。 VB编程经验总结开发手册 86 VB中精确数据的四舍五入处理 86 假设VB中有如下的变量声明: 87 VB中的对象是自动回收的,类似java 87 对对象变量赋值应该用setobj=AnOtherObj这种方式 88 VB中字符串的内部存储格式是Unicode,它可以自动转化为ANSI字符(单字节字符)或者DBCS字符(双字节字符) 88 字符串的比较应该是用strCmp函数,而不是简单的用=号 89 VB中字符串处理的函数有三种版本: 89 VB程序代码中的以下标识符不能含有双字节字符: 91K/3老单单据平台开发手册整体框架和设计思路设计思路UML图模版单据主要是在模版的基础上实现的。单据的模版有以下几张表:ICTransactionType,ICTemplate,ICTemplateEntry,ICSelBills,ICTableRelation。前三张表用于构造显示单据,后两张表用于选单。一,单据构造模版:1.ICTransactionType:该表反映了供需链所有单据的总体情况。ICTransactionTypeFbrNoFID单据事务类型内部IDFROB红蓝字标记:1表示该单据区分红蓝字,0表示没有红蓝字之分Fname单据名称Ftype单据类别FtempalteID单据模版ID(与ICTemplate,ICTemplateEntry表中的FID对应FvchTempalteID(未用)FheadTable单据表头对应的数据库表名FentryTable单据表体对应的数据库表名FcheckPro(未用)FformWidth单据录入时的缺省宽度FformHeight单据录入时的缺省高度FfixCols单据的固定列数目2.ICTemplate:该表反映了所有单据的表头的详细情况。ICTemplateFID单据模版IDFctlIndex表头控件编号,连续且唯一FtabIndex控件的Tab跳动次序Fcaption控件标题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自定义单据使用的整数类型FlookUpCls如为查找类型则与表t_ItemClass(核算工程表)中的FItemClassID对应。或者为辅助资料的ID(t_submestype中的FtypeID)FneedSave是否需要保存到数据库中FvalueType值的类型0字符串,1数字,2日期,3整数FsaveValue保存值的类型0名称,1内部ID,2代码FfieldName该字段对应在数据库表中的字段。在同一个单据的模版中不能重复。Fleft该单据头控件的位置FtopFwidthFheightFenable控件在各种状态下是否可录入:新增、修改、观察、审核、下达、单价金额修改。用一个六位的二进制数表示,可录入则对应位为1否则为0。常用值:0、32、48。Fprint是否打印(暂未用)Ffontname字体类型FfontSize字体大小FselBill如果该控件可以选择其它单据作为数据的输入来源,则该值对应为被选择单据的叙事簿ID(ICListTemplate表中的FID)FmustInput是否必须录入Ffilter过滤条件。一般用于选单或查找某类基础资料时过滤掉一些不符合选择条件的单据或基础资料。FrelationID表示哪一个字段的改变会导致当前控件值的改变。它的值为对应字段的数据库字段名。如有多个这样的字段可以用逗号隔开。Faction为前面Frelationid定义的字段的改变时该执行什么样的操作。例如汇率这个字段,它的FrelationID为FcurrencyID,Faction为“.,FExchangeRate〞表示当改变币别时,把对应币别的默认汇率填入汇率栏中。FlockA为1表示选单过来的数据不能再添加删除分录FROB1只在蓝字单据中可见,2只在红字单据中可见3在红蓝字单据中都可见FdefaultCtl系统自带控件为1,自定义的为0FvisForBillType控件在各种状态下的可见性:新增、修改、观察、审核、下达。用一个五位的二进制数表示,可见则对应位为1,否则为0。常用值:0、31。FVBACtlType自定义单据用来区分是什么类型的控件有Frame,Label,Kdtext三种FrelateOutTbl如果该控件为其它选择类型的属性则为1例如:销售发票有个客户开户银行账号就是此类FSystemMustInputItem如果是系统规定必须输入,即使自定义单据也不能把它变为非必录。3.ICTemplateEntry:该表反映了所有单据的分录的详细情况。ICTemplateEntryFID单据模版IDFctlOrder分录列的排列前后顺序FctlIndex分录列编号,连续且唯一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自定义单据使用的整数类型FlookUpCls如为查找类型则与表t_ItemClass(核算工程表)中的FItemClassID对应。或者为辅助资料的ID(t_submestype中的FtypeID)FneedSave是否需要保存到数据库中FvalueType值的类型0字符串,1数字,2日期,3整数FsaveValue保存值的类型0名称,1内部ID,2代码FfieldName该字段对应在数据库表中的字段。在同一个单据的模版中不能重复。Fenable该分录列在各种状态下是否可录入:新增、修改、观察、审核、下达、单价金额修改。用一个六位的二进制数表示,可录入则对应位为1否则为0。常用值:0、48、49。Fprint是否打印该列(暂未用)FheadCaption该分录列的表头标题Fwidth该分录列的宽度FneedCount该分录列是否需要合计,1:需要0:不需要FrelationID表示哪一个字段的改变会导致当前列值的改变。它的值为对应字段的数据库字段名。如有多个这样的字段可以用逗号隔开。Faction为前面Frelationid定义的字段的改变时该执行什么样的操作。例如金额这个字段,它的FrelationID为“FauxQty,FAuxPrice〞,Faction为“(),FAuxQty,*,FAuxPrice〞表示当数量或单价改变时,计算数量与单价的乘积,并填入金额列中。FmustInput是否必须录入Ffilter过滤条件。一般用于查找某类基础资料时过滤掉一些不符合选择条件的基础资料。FSaveRule该列值的保存规则,例如“U:0〞表示该列的值不能为0。FdefaultCtl系统自带分录列为1,自定义的为0FvisForBillType该列在各种状态下的可见性:新增、修改、观察、审核、下达。用一个五位的二进制数表示,可见则对应位为1,否则为0。常用值:0、31。FRelateOutTbl如果该分录列为其它选择类型的属性则为1例如:销售发票有个客户开户银行账号就是此类FSystemMustInputItem如果是系统规定必须输入,即使自定义单据也不能把它变为非必录。单据构造模版的根本用途是:根据要显示哪一种单据,首先去ICTransactionType表中获取该种单据的总体信息,包括表头模版号、分录模版号、单据宽高等等。然后根据表头模版号去查表头模版ICTemplate,构造该种单据的表头,根据分录模版号去查分录模版ICTemplateEntry,构造单据的分录。函数:Bills.SetPropDescFSaveRule说明:操作符功能例子备注@该字段不能为空@该字段不能为空U该字段不能=某个值U:0该字段不能=0〉该字段必须〉某个值1.>:0;2.>:Fqty1.该字段必须>0;2.该字段>FQty^该字段必须〉0^该字段必须〉0~该字段大于等于0并且小于某数或者某列的值1.~;2.~:Fqty;3.~:1001.该字段必须>0;2.该字段<FQty;3.该字段<100#该字段必须〉0#V该字段必须大于单据头日期V:Fdate该字段必须大于单据头Fdate$该字段不能与某字段同时=0$:FAuxQty该字段不能与FAuxQty同时=0D该字段不能大于另个日期的值D,FStartWorkDate该字段不能大于FStartWorkDate!几列不能全部为空!,FWorkerID,FDeviceIDFWorkerID,FDeviceID不能全部为空A:DEPEND依赖的某一列不能为空FDCSPID保存规则:A:DEPEND,FStockIDFStockID不能为空二、选单模版ICSelbills:选单要取得哪些值,这些值是如何而来的,以及需回填到哪个对应的控件里。ICSelbillsFID单据的模版IDFFieldName单据上可以选单的字段的字段名FdstCtlField回填的目标字段名FselType目标字段的类型:0表示单据分录字段,2表示单据头字段,1表示该目标字段的当前值将会作为选单序时薄的过滤条件。FDK用于表头控件,表示对于同一个目标字段,该回填值是作为FID或Fname或Fnumber。0:FID1:Fname2:FnumberFcolName源字段的别名Fname源字段名FtableName源表名FtableAlias源表别名Faction用于处理一些需对字段值进行判断,或需要在字段之间进行一些运算的情况。 重点事项:单据头的字段如果有选单数据来源,则必须有三行,分别填入对应的ID,名称,代码。如果没有ID,代码,则随便传入一个数。而且这个顺序不能改变。 2.ICTableRelation:选单中涉及的所有表之间的连接关系。ICTableRelationFtypeid用于序时薄模版FinterID用于序时薄模版FtableName表1名FtableNameAlias表1的别名FfieldName表1的字段名Ftablename11表2名FtableNameAlias11表2的别名FfieldName11表2的字段名Flogic表1和表2的两个字段之间的关系FBillID选单模版号,与ICSelbills中的FID相对应FFieldID选单字段名,与ICSelbills中的FFieldName相对应选单的根本过程是:由当前录入的是哪一种单据,以及是在哪一个控件上进行选单(即需要选何种单据),得到选单模版号FID、FieldName。从ICSelbills和ICTableRelation中选出对应的模版信息,拼装成一个SQL语句,执行取得相应的记录集。再根据ICSelbills中的数据回填信息,将该记录集的值回填到对应的目标字段中。三,单据控制 1、ICBillNo ICBillNoFBillID单据ID,对应于ICTransactiontype中的FIDFBillName单据名称FPreLetter前缀名FSufLetter后缀名FCurNo当前单据序号FFormat当前序号的格式FPos 2、ICMaxNum ICMaxNumFTableName表名FMaxNum当前最大的FInterID四,单据套打 1、GLNoteType:单据套打表,记录单据与套打编号的关系。GLNoteTypeFTemplateID单据ID,对应于ICTransactiontype中的FTemplateIDFnoteType单据套打名称FnoteTypeID单据套打ID 2、GLNoteCitation:单据套打关系表,记录单据套打字段的属性。GLNoteCitationFTemplateID单据ID,对应于ICTransactiontype中的FTemplateIDFID在同一单据套打模板中,作为唯一的序列号FNoteTypeID套打ID,对应于GLNoteType中的FNoteTypeIDFcode数据来源字段名FCitationName套打模板取数名称FIsEntry当前字段是否是分录FIsMoney当前字段是否是金额FCtlIndex当前字段在单据中的位置(已经没用)FIsSum当前字段是否要合计FKeyFieldName扩展字段。表示要取FtableName表中的FextFieldName字段,通过FkeyFieldName字段与当前字段关联FExtFieldNameFTableNameFRelationID当前字段的属性标识1:表头2:表体3:汇总4:扩展表头5:主计量单位6:主计量单位数量7:主计量单位单价8:扩展分录 相关说明:FRelationID与FIsEntry不同,FIsEntry是用来在套打定义中区分表头、表体(如:在表头栏里只显示表头字段、表体栏里只显示表体字段),FRelationID是套打在填充数值时,判断字段属性用的。单据调用接口客户端调用接口组件K3Bills.Bill,K3Bills.Bills方法PublicPropertyLetRemoteCnn(ByValstrCnnAsString) 单据的远程SQLServer数据库连接字符串 PublicPropertyLetLocalCnn(ByValstrCnnAsString) 单据的本地ACCESS数据库连接字符串,主要用于套打PublicPropertyLetListRecordset(ByValrsAsADODB.Recordset) 由序时薄等进入单据时,将序时薄上显示的纪录作为一个Recordset传给单据。单据在实现上一条、下一条的浏览功能时,就根据该Recordset去移动与构造。PublicPropertyLetListRSFieldVect(ByValvDataAsKFO.Vector)与ListRecordset相配套,主要用于说明该Recordset中哪个字段代表FinterID(单据内码),哪个字段代表FtranType(单据事务类型)。 ListRSFieldVect是包含若干KFO.Dictionary的一个KFO.Vector,每个Dictionary包含有两个值:FcolName和FISPrimary。当FISPrimary=1时,对应的FcolName的值为单据内码字段名;当FISPrimary=3时,对应的FcolName的值为单据事务类型字段名。PublicPropertyLetbillValueChanged(ByValValueChangedAsBoolean) 设置单据是否经过修改。PublicPropertyGetbillValueChanged()AsBoolean 返回单据是否经过修改,从而可确定显示时是否需刷新数据。PublicPropertyLetNewBillTransType(ByValtranstypeAsLong) 由序时薄新增单据时,新增单据的事物类型。PublicSubSetOpt(ByValIDAsLong,OptionalByValNameAsString) 设置操作员的ID和Name。PublicPropertyLetTheSaleMode(ByValvNewAsEnu_SaleMode)销售方式内销0;外销1;PublicPropertyLetShowForModeExt(ByValvDataAsInteger) 单据显示状态。有六种状态0:ShowForSelectBill,新增单据1:ShowForModifyBill,修改单据2:ShowForViewBill,查看单据3:ShowForCheckBill,审核单据4:ShowForConveyBill,下达单据5:ShowForPriceCal,核算时单据的单价金额修改PublicSubShow(ByValeBillClsAsEnu_BillCls,ByValShowTypeAsEnu_ShowBillType)显示想要调用的单据EbillCls:单据的类型PublicEnumEnu_BillClsBillBuyReq=100 采购申请单据billBuyOrder=101 采购订单BillBuyRec=102 采购收货单据BillBuyCancel=112 采购退货单据BillBuyInvoice=103 采购发票BillCheckedInStock=200 验收入库单据BillSendMaterials=201 领料发货单据BillStockMove=202 仓库调拨单据BillStockAdjust=204 库存调整单据BillProductOrder=207 生产订单BillSellOrder=300 销售订单BillSellSendBackGoods=311 销售退货单据BillSellSendGoods=301 销售发货单据BillSellInvoice=302 销售发票BillReqForPrice=400 询价问价单据BillAdjustPrice=500 调价单据billAll=1000 所有单据EndEnumEshowType:单据的状态PublicEnumEnu_ShowBillTypeShowinput=0 录入Showedit=1 修改Showview=2 查看Showcheck=3 审核showconvey=4 生产订单下达EndEnum中间层调用接口组件BillDataAccess.SaveData方法SaveBillEx(ByValsDsnAsString,ByValBillVectAsKFO.Vector)AsObject参数sDsn:连接字符串BillVect:KFO.Vector的对象,对象包含多少个元素可由Size()方法获得。第一个元素为KFO.Dictionary对象;第二个元素为KFO.Vector对象,保存二次开发组件传递的信息。对于第一个元素,其中保存着单据的一些根本信息,相应的关键字见下面说明:TransType:单据类型,为long型BillInterID:单据内码,新增单据时为0,为long型IsROBBill:单据是否区分红蓝单,为boolean型IsRedBill:单据是否为红单,为boolean型TableHeadName:单据表头对应的物理表名,为string型TableEntryName:单据表体对应的物理表名,为string型AutoBillNO:系统自动生成的单据编码,为string型BillNo:单据编码,为string型BillNoFldName:单据编码对应的物理字段名,为string型IsAppendItemBill:单据能否追加物料,为boolean型,默认值为FalseEntryKeyWord:分录关键字,为string型UserID:操作者ID,为long型,默认值为16394UserName:操作者名称,为string型AppendItem:是否追加了物料,为boolean型SplitBill:是否拆单,为boolean型AcctName:帐套名称,为string型CurBillUpStockWhenSave:保存库存单据时,是否更新库存,为long型,0表示否,从已有单据的FUpStockWhenSave字段获得,默认为0。。IgnoreCredit:是否进行信用控制,为boolean型,默认值为TrueEntrySQL:单据体数据的SQL语句的数组,记录单据保存时,提交的数据库更新SQL语句,为单据体SQL,为Variant型HeadSQL:单据头数据的SQL语句,记录单据保存时,提交的数据库更新SQL语句,为单据头SQL,为string型JustForAccInput:本钱核算系统单据调用时的特殊控制参数,用来控制保存和界面处理。Boolean型ReSave:重新保存单据时的状态,每个字位代表一个意思,为long型,中间层若取不到值,默认值为7。 1:表示忽略负库存、2:忽略库存警告、4:忽略锁库检查、8:忽略所有检查返回值: 为KFO.Dictionary对象,相应的关键字见下面说明: Success:保存是否成功,为boolean型 RetCode:返回的代码值,为long型。3:信用提示、2:最高最低库存提示、1:负库存提示、-200:锁库物料为负库存、-201:库存数缺乏以锁库、-204:销售最低限价提示、-205:采购最高限价提示 ReturnMsg:返回的信息,为string型 BillInterID:单据内码,为long型 ReturnBillNo:单据编码,为string型 CheckItemInfo:超出最高最低平安库存时存储相应的物料,为KFO.Vector对象单据流程新建单据流程新建单据时,首先设置单据的属性值(包括RemoteCnn、LocalCnn、SetOpt、TheSaleMode、ShowForModeExt、NewBillTransType),然后再调用过程PublicSubShow(ByValeBillClsAsEnu_BillCls,ByValeShowTypeAsEnu_ShowBillType),显示想要新建的某种单据,对于新建单据,参数eShowType应传值为0。过程Show通过激发窗体frmBill的Form_Load()事件,显示新建的单据样式。Form_Load()事件主要完成以下操作:调用函数FillBillTypeCtl(ByValctlAsObject,OptionalByValtranstype),从表ICTransactionType中取出新建单据类(可能包括多种单据)的根本属性值,包括单据名称、单据模版号、单据对应的数据库表名、单据窗体宽高等等。将每种单据的属性值拼成一个字符串,作为cmbTransType(comboBox控件)的一个列表值,依次添加到cmbTransType中。激发cmbTransType的cmbTransType_Click()事件,根据当前cmbTransType的列表值,取出该种单据有关属性值,设置窗体的宽高及固定列,再由该属性列表值通过调用过程BuildBill(ByValstrTemplateIDAsString)建立整张单据(包括单据头及单据分录)。设置菜单及工具条的Visible以及Enabled属性。设置套打的本地、远程的连接属性,以及套打模版号。过程BuildBill(ByValstrTemplateIDAsString)是构建单据的关键。它完成以下操作:根据传过来参数strTemplateID取得单据模版号、单据表头对应的数据库表名、单据分录对应的数据库表名、单据事务类型内部ID。根据单据模版号,从表ICTemplate中取得表头模版,从表ICTemplateEntry中取得分录模版。根据分录模版,调用过程BuildEntryCtls()构造单据的分录。根据表头模版,调用过程BuildHeadCtls()构造单据的表头。过程BuildEntryCtls(rsTmpEntryAsADODB.Recordset)完成单据分录的构造工作,参数rsTmpEntry是从ICTemplateEntry取出的一个记录集,它反映了该单据所有分录列的属性值,也就是该单据的分录模版。该过程主要是将分录模版信息存储在分录属性数组TentryCtl中,并根据这些模版信息去设置单据分录的列数、列宽、列标题、数据类型等属性。过程BuildHeadCtls(RstmpAsADODB.Recordset)完成单据头的构造工作,参数rsTmp是从ICTemplate取出的一个记录集,它反映了该单据所有表头的属性值,也就是该单据的表头模版。该过程主要是将表头模版信息存储在表头属性数组THeadCtl中,并根据这些模版信息去设置单据表头控件的大小、位置、标题、数据类型等属性。查看或修改单据流程:对于由报表或序时薄进入单据,首先设置单据的属性值(包括RemoteCnn、LocalCnn、SetOpt、TheSaleMode、ShowForModeExt、NewBillTransType,以及ListRecordset、ListRSFieldVect),然后再调用过程PublicSubShow(ByValeBillClsAsEnu_BillCls,ByValeShowTypeAsEnu_ShowBillType),显示想要修改的某种单据。如果是修改单据,参数eShowType传值为1;如果是查看单据,参数eShowType传值为2。查看或修改单据的主要操作也是在窗体frmBill的Form_Load()事件中完成。流程如下:函数PublicFunctionFillBillData(ByValInterIDAsLong,ByValtranstypeAsInteger)AsInteger完成将某张单据数据填入空白单据的操作,参数InterID指该张单据的内码,参数transtype指该张单据的事物类型。这两个参数可确定唯一一张单据。FillBillData的流程如下:录单流程:在录单的过程中,表头控件及分录列都设置了一定的属性,即只能录入特定的数据。对于基础资料和选单,都有两种录入方式:按F7或F8选取或手工直接录入。其它的如数量、单价、单据号码等,就只能手工录入。过程PrivateSubLookUp(OptionalByValbQuickViewAsInteger=1)实现了按F7或F8键查看并选取某项基础资料数据的功能。参数bQuickView=0表示是查看基础资料详细的树状图,对应的是F7键;bQuickView=1表示是查看基础资料编码列表,对应的是F8键。LookUp的主要流程如下:函数PublicSubFillBillDataExt(_ByValRsTransAsADODB.Recordset,_ByValBillTemplateIDAsString,_ByValFieldNameAsString,_OptionalByValSelBillData,_OptionalByValAction)完成将选单返回数据填入到表头控件及分录列中。参数说明如下:RsTrans:选单返回数据记录集BillTemplateID:选单模版号FieldName:选单控件名SelBillData:选单返回单据的内码及分录号数据集Action:选单控件需执行的某些操作,如是否需要按BOM展开返回的物料,是否需要将物料进行合计。根本流程如下:对于手工录入选单号码进行选单,首先是根据录入的单据号码,构造一个KFO.Vector对象。该对象同由序时薄选单返回的对象性质是一致的,都包含了所选单据的FInterID和FEntryID。余下的过程两者都一致,即由该对象取得选单返回数据集,再调用函数FillBillDataExt,将记录集数据依次填入到相应的表头控件及分录列中。对于查找类型的控件,当离开该控件时,要进行一系列的合法性检查(表头控件激发Validate事件,分录控件激发Validate事件和LeaveCell事件)。这些事件里主要通过函数PrivateFunctionGetData(CancelAsBoolean,_bChangedAsBoolean,_OptionalByValbEntryAsBoolean=False,_OptionalByValcolAsLong,_OptionalByValRowAsLong)AsBoolean实现数据合法性检查。该函数通过调用存储过程GetItemDetail返回一个记录集,如果该记录集为空记录集,则控件里的数据不合法,要求重新输入数据或恢复以前合法数据;如果该记录集不为空,则记录集里包含了与当前控件值有关的所有辅助信息。(比方当前控件为物料栏,则该记录集包含了该物料的所用属性值,包括计量单位内码及名称等等。)。对应于当前控件是表头控件或分录列,记录集里的某些值会填入到相应的表头控件数组TheadCtl中或分录控件数组TentryCtl中。在Validate事件或LeaveCell事件中,还会调用一个重要的过程DoActions。该过程完成的操作就是根据当前控件填入的值,在其它与它相关的控件也填入相应的值。(例如录入供给商带出计算方式,录入物料代码带出物料名称,计量单位等等,录入单价,数量后算出金额等等)。DoActions的根本操作是根据填入到THeadCtl数组和TEntryCtl数组中的模版信息FrelationID,找出与当前控件相关的所有控件,将这些控件按照FCtlIndex升序排序,然后按照这个顺序依次调用过程DoAction,完成在某个控件中填入适当的数操作。过程PrivateSubDoAction(ByValParentIDAsLong,ByValIndexAsLong,ByReforiObjAsObject,objTypeAsEnu_ObjType)中定义了模版Faction中每种符号的实际操作意义。参数ParentID指明是哪一个控件激发了DoAction事件,从而导致其它控件的值变化;Index表示当前是轮到处理哪一个控件;oriObj传递表头控件数组或分录控件的引用,objType指明ParentID所指控件是表头控件还是分录控件。DoAction定义了以下模版操作符号的意义:“.〞:取基础资料的附属属性值。例:FrelationID为“FitemID〞,Faction为“.,Fname〞,表示由物料代码带出物料名称。“.A〞:取基础资料附带的其他基础资料属性。例:FrelationID为FitemID,Faction为“.A,FunitID,t_MeasureUnit〞,表示由物料代码带出计量单位的内码、名称、代码。“V>=K〞:表示某分录控件的值应大于或等于某表头控件的值。例:表头模版ICTemplate中FrelationID为“FDate〞,Faction为“V>=K,Fdate〞,表示分录里的日期应大于等于表头的日期。“=〞:处理是否允许录入批次。例:FrelationID为“FitemID〞,Faction为“=,Ftrack,80”,表示物料计价方法为分批认定时(Ftrack=80),锁定控件不让录入,否则允许录入。“<=〞:表示当前控件的值应小于等于某值。例:FrelationID为“FDescount〞,Faction为“<=,100〞,表示当前格的值应小于等于100。“!〞:取分录某几列的值,从左到右依次进行四则运算。运算式中不能包含常量。例:FrelationID为“FAuxQty,FAuxPrice,FQty〞,Faction为“!,FAuxQty,*,FAuxPrice〞,表示当数量、单价、根本单位数量任一个发生改变时,计算数量x单价的值,填入当前格(金额)。注:“!〞完全可被“!1〞取代。“!1〞、“()〞:取分录某几列的值,从左到右依次进行四则运算。运算式中可包含常量。例:FrelationID为“FAuxQty,FAuxPrice,FQty〞,Faction为“!,FAuxQty,*,FauxPrice,+,0”,表示当数量、单价、根本单位数量任一个发生改变时,计算数量x单价+0的值,填入当前格(金额)。注:“()〞最多只能定义三项之间的运算。主要是用于自定义单据中。 而“!1”则不受限制。可考虑将两者统一。“!2〞:特殊计算,由折扣率或折扣额之一计算金额(折扣率或折扣额中某一列必不可见)。例:Faction为“!2,FAmount,*,FTaxRate,/,100;!2,FAuxQty,*,FUniDiscount〞,表示当使用折扣率时,计算金额x折扣率/100的值;当使用折扣额时,计算数量x单位折扣额的值。“!3〞:前一项与后几项的运算结果进行运算。 例:Faction为“!3,FAuxPrice,*,100,+,FTaxRate,/,100”,表示计算单价x(100+税率/100)的值。注:任何“!〞、“!1〞式子都可改装为“!3〞的式子,因此,可考虑用“!3〞替换“!〞、“!1〞。“!4〞前一项与后几项的运算结果进行运算,但数据是取界面上显示的数。注:因为VaSpread的特殊性,界面上看见的数与实际表格里面的数可能有尾差,从而有可能导致计算上的误差,例如在发票上金额与税额的和不等于价税合计。故引入“!4〞解决该问题。“&〞:取基础资料附带的其他基础资料属性。例:FrelationID为“FcustID〞,Faction为“&,FSetID,FSetName,FSetNumber〞,表示由供给商带出结算方式的内码、名称、代码。注:可考虑与“.A〞合并。“~〞:方案价调价单据中,得到物料的记价方法为方案价调价的当前库存数。“*〞:处理其他入库单单据头只能录供给商和部门中的一种,其他出库单单据头只能录客户和部门中的一种。“A〞:在录入盘赢盘亏单时自动带出某种物料在某个仓库中的帐存数量。“A*〞:在录入盘赢盘亏单时仓库改变时自动带出录入的所有物料在该仓库中的帐存数量。“A1〞:当数量改变时,相应的改变根本单位数量。“A2〞:当根本单位数量改变时,相应的改变数量。单据的保存流程单据保存之前,首先调用函数PreventDirtyData(),以确保当前单据上的数据是正确有效的,然后再调用函数Save()保存单据。函数Save()的主要流程如下:单据的审核、下达在单据录入或修改完成以后,可在单据界面直接完成审核与反审核,下达与反下达,结案与反结案的操作(发票除外)。这些操作都是调用中间层K3McheckBill.DLL实现的,具体的操作可参看类K3MCheckBill.CheckNow中的函数CheckBill()的说明。在单据审核或下达完毕以后,要调用过程InitMenuAndBar(),使某些菜单、控件锁定或解锁,以控制输入。对下一版本的一些建议在本版中,因为生产任务单没有分录,所以很多地方需要进行特殊处理。在下一版中,所有单据都有分录,故可去掉对生产任务单的特殊判断。单据选单时,参加过滤条件及排序条件,便于快速查找。可考虑做成一个通用过滤排序条件,对所有选单起作用(主要是日期过滤排序)。本版中,审核、下达两种单据显示状态都未用上,单据的修改界面上就可进行审核或下达。下一版中可考虑去掉审核、下达两种单据状态。同时将ShowForModeExt和ShowBillType合并,单据显示类型有以下四种: (1).Showinput=0 录入 (2).Showedit=1 修改 (3).Showview=2 查看(4).ShowForPriceCal=3 核算时单据的单价金额修改目前单据的DoAction较混乱,有的功能定义比较不通用,或功能不够强大(如表头和分录之间的关联动作较欠缺)。下一版中可改造过程DoActions()和DoAction(),以及模版ICTemplate和ICTemplateEntry中的Action和RelationID字段,定义更具通用性的动作关联,以便于自定义。还可参加一个是否使用公式选项,以控制某些关联动作。目前单据较慢,一个主要原因是较多的调用了中间层。下版中应尽量减少中间层的调用次数,或将调用合并。改造单据保存的逻辑控制。单据构造时,从中间层取得模版,保存单据时,又将该模版传回中间层,显得有些冗余。对于数据的合法性校验,一般都是在客户端做的,中间层做的极少。可考虑加强中间层的数据校验功能。自定义单据中,应参加一个恢复功能,即当用户的自定义操作影响到现有单据的正确性时,可快速恢复原单模版。这样用户也可放心使用。单据选单的实现说明选单生成是指从已有的一张单生成另一类型的新单的过程。一,实现思路:通过模板方式实现,模板记录源单的表、字段,和与新单之间的字段对应关系,以及其他要用到的信息。通过模板记录的源单的表字段信息,构建源单数据记录集;通过字段对应关系信息,可以确定源单数据记录集中的字段与新单字段的对应关系,并通过这种对应关系回填单据。二,实现方式:建立选单关系模板 选单模板包括ICSelBills,ICTableRelation两张表。 1、ICSelBills: 记录源单和新单之间的字段对应关系和要使用的关键字段。一种选单关系可以根据单据模板(ICTemplate)的FID和FFieldName来确定:FID表示新单的模板号,FfieldName表示源单(具体表示是那种单由FselBill字段的内容确定,参见:单据模板说明文档)。选单关系的具体内容就由ICSelBills来记录,由ICSelBills的FID、F确定。对于一个新增的选单结构,以下几个字段是必须的:FselTypeFDKFcolNameFNameFTableNameFTableAlias-200-1FInterID-100-1FEntryID-1-1FQtyDecimal-1-1FPriceDecimal-1-1FTrack-1-1FItemID-1-1FBillNO具体的FID,FfieldName,FName,FtableName等其他信息可根据实际情况填写。对于FtableAlias模板规定主表使用v1,从表使用u1,t_ICItem使用t4。单据头的字段如果有选单数据来源,则必须有三行,分别填入对应的ID,名称,代码。如果没有ID,代码,则随便传入一个数。而且这个顺序不能改变。对于表体的字段,如果是查找类型,也必须有三行,分别填入对应的ID,名称,代码。 2、ICTableRelation:记录ICSelBills中某一选单关系中有关联关系的表的关联信息。具体内容由FbillID(与FID相同)、FfieldID(与FfieldName相同)确定。需要具体说明的是,表示关联方式的字段Flogic使用的是“=*〞、“*=〞来表示右连接、左连接。例如:发票选定单的选单关系中,主表和从表是通过FInterID关联的,则可添加记录FtableNameFtableNameAliasFfieldNameFtableName11FtableNameAlias11FfieldName11FLogicFBillIDFFieldIDPOOrderV1FInterIDPOOrderEntryU1FInterID=I02FOrderInterID 选单关系模板结构参见:单据模板说明文档 二、调用单据组件接口,生成新单据 调用接口如下: LocalCnn属性(String):连接本地数据库的连接字符串,主要用于单据套打。 SystemName属性(String):当前调用单据的系统。 采购:"Purchase"销售:"SaleIn"方案:"Plan"车间:"ShopFloor"仓存:"Stock"核算:"Calculate" SetOpt(用户ID,用户名称)方法:设置当前的操作员,两个参数用户ID和用户名称。 BuildFromSelBill属性(Boolean):说明当前单据的生成方式。为真说明单据是选单生成 SelBillVect属性(KFO.Vector):当BuildFromSelBill为真时,传递单据的必要参数。该参数的结构如下:该Vector包括三个Item,第一个是字符型,为当前单据的模板号,即ICTransactionType中的FTemplateID;第二个是字符型,为当前单据的选单号,即上述关系模板中(ICSelBills表)中的FfieldName对应的值。第三个是一个Vector,是包含分录信息的集合:必须包含至少两个信息,FInterID、FentryID,该信息用kfo.Dictionary保存并打包到Vector中。 BillROB属性(长整型):表示当前单据是红单还是兰单,1表示兰单,-1表示红单,默认是兰单 NewBillTransType属性(字符型):为要生成单据的事物类型,即ICTransactionType中的FID。 Show(ByValeBillClsAsLong,ByValeShowTypeAsLong)方法:该方法根据上面的参数设置,调起单据界面。EBillCls为要生成的单据的类型ID,即ICTransactionType中的Ftype;EshowType为单据的显示方式,0–新增、1–修改、2–查看、3–审核、4–下达、5–作废、6–关闭。这里一般使用0。 BillValueChanged属性(Boolean型):在单据调用完成后,返回单据是否更新的标志,为true时,表示当前单据修改保存成功 BillInterID属性(长整型):单据完成之后,获取当前单据的数据的InterID。三、ICSelBills的特殊使用方式 参见“通过记录集直接调用单据接口生成单据〞说明文档四、增加一套选单的模板例子五、改良v10增加了旧单据选单对新单据的支持,参看文档单据模板Action说明文档概述介绍单据Action实现的方式以及各种Action的说明。关键词单据、模板。分类 功能标准定义一、Action的实现方式 与Action的应用相关的字段FCtlIndex、FRelationID 由FCtlIndex定义了Action的执行顺序,通过访问FRelationID确定需要执行Action的字段,然后调用DoAction函数执行相关字段的Action。 对于一些需要关联计算的字段,大致有两种情况:一、如供给商改变,要改变携带的单价,而单价的改变又要影响金额。二、如单价改变影响金额,而金额的改变又要影响税额。对于第一种情况,第一项(供给商)和第三项(金额)没有必然的联系,只有在携带单价后,再次调用DoActions,进行计算。对于第二种情况,可以使用变通的方法,如:将税额的计算公式改成由金额的计算公式所涉及到的字段来计算,而不是直接使用金额进行计算。 关于rsItem:rsItem属性是在对当前触发字段进行校验时(即GetData中)生成的临时属性记录集,然后在随后的DoAction中使用,并在DoActions中(GetData结束前)清空。二、Action介绍类别标准过程备注“.〞携带一般附属信息,后面跟的是要携带信息在记录集rsItem中的字段名。触发的条件是:触发字段的rsItem属性不为空。然后,读取该Action记录的值。如:当FItemID触发时,对于字段FItemName的值就是直接在记录集rsItem中取Faction对应字段的值。.A1设置仓位的信息,格式为“.A1,FDCStockID,FSPID,t_StockPlace,FSPID“处理物料默认仓位的携带。FDCStockID:获取仓库信息,控制物料设置的默认仓库和单据录入的仓库是否一致。FSPID:获取物料信息(t_ICItem)的默认仓位信息t_StockPlace:当前FSPID取数的关联表FSPID:当前关联表的关键字,用于FSPID的过滤=设置物料是否进行批次管理。格式为“=,Ftrack,80”B*录入物料或仓库时若物料的仓存和默认仓库不一致时报警提示。格式为:“B*,FDCStockID〞A1当数据改变时,更改对应的根本数据。一般格式为:“A1,FAuxQty〞,A1后面跟的就是改变的数据对应的字段名。KFDate设置是否允许录入生产/采购日期KFPeriod设置是否允许录入保质期.A3如果用户自定义的取数是核算工程的自定义字段或自定义核算工程的自定义字段,单据模版的Action要用.A3规则。规则:.A3,主表ID的值,关联表1,关联表1的Key,关联表1与关联表2的连接字段,关联表3,关联表3的关键字。两种情况分别是:固定核算工程的自定义属性是取核算工程或辅助资料(从t_itempropdesc中可以查到他的取数的关联表);自定义核算工程的自定义字段。三、举例说明: 1.表头仓库发生改变:(10.2中表头仓库移到表体)顺序Action说明1B*检查仓库和物料默认仓库是否一致2.B,FEmpID,t_Emp将仓库的默认保管等填充到表尾的“仓管〞3.A1,FDCStockID,FSPID,t_StockPlace,FSPID将仓库的默认仓位携带出4.A,FStockPlaceID,t_stockplace,fspid带关联附属信息 2.物料发生改变顺序Action说明1#,FDCStockID,FItemID,FBatchNo,FAuxQty,FUnitID2.B*,FDCStockID3P*,FSupplyID,FCurrencyID,FExchangeRate,FItemID,FUnitID,FAuxQty,FAuxPrice,FTaxRate4.,Fname5.,Fmodel6.,FPlanPrice7!,FAmount,/,FAuxQty8=,Ftrack,809.,FUnitName,FUnitID10A1,FAuxQtyMust11A1,FAuxQty,FQty12P*,FSupplyID,FCurrencyID,FExchangeRate,FItemID,FUnitID,FAuxQty,FAuxPrice,FTaxRate13.,FPlanprice14(),FAuxQty,*,FAuxPlanPrice15KFDate16.,FKFDate17KFPeriod18.,FKFPeriod19.A1,FDCStockID,FSPID,t_StockPlace,FSPID设置仓位信息20.A,FStockPlaceID,t_stockplace,fspid21MI22MI23.,FMapName24.,FIsSNManage25.,FSecUnitName,FSecUnitID26.,FSecCoefficient27标准过程指南(1)需求分析1.标准2.范例(2)设计编码1.标准2.范例(3)测试1.标准2.范例单据打印、连续打印、合并打印实现说明GUI上单据打印的实现方式: 1、标准打印:使用Ledger控件的Printer实现。 实现思路:1、设置Ledger控件的属性,直接设置表头的数据。 2、调用Ledger的预览功能,使用Ledger的FillRow事件填充数据。 实现:1、调用PrintBills函数,该函数对当前单据上的表头数据,区分头数据(Header)和脚数据(Footer),按每一数据的Top,Left排序,分别赋值给Ledger.Printer.Header和Ledger.Printer.Footer,同时设置分录的数量(Ledger..Face.Rows)。2、直接调用Ledger.Printer.Preview,或Ledger.Printer.PrintDirect进行打印预览或打印,控件将触发Ledger_FillRow事件,在该事件编写代码填充分录数据。 2、套打: 使用Note控件实现。 实现思路: 1、使用套打文件。 2、在预览或打印时,使用Note的QueryData事件填充数据。 实现: 1、在Form_Load事件中初始化Note控件,为其设置套打文件。2、预览或打印时,执行Note.Action=KN_PrintPreview或Note.Action=KN_PrintDirect动作,显示或打印套打文件。此时将触发QueryData事件,根据该事件返回的参数,填充套打数据。 3、连续打印 4、合并打印常见问题分析 单据现有模板存在两个比较大的问题有待改良:对于KDInputTool.DLL组件的日期控件的日期格式"d"Theone-ortwo-digitday."dd"Thetwo-digitday.Single-digitdayvaluesareprecededbyazero."ddd"Thethree-characterweekdayabbreviation."dddd"Thefullweekdayname."h"Theone-ortwo-digithourin12-hourformat."hh"Thetwo-digithourin12-hourformat.Single-digitvaluesareprecededbyazero."H"Theone-ortwo-digithourin24-hourformat."HH"Thetwo-digithourin24-hourformat.Single-digitvaluesareprecededbyazero."m"Theone-ortwo-digitminute."mm"Thetwo-digitminute.Single-digitvaluesareprecededbyazero."M"Theone-ortwo-digitmonthnumber."MM"Thetwo-digitmonthnumber.Single-digitvaluesareprecededbyazero."MMM"Thethree-charactermonthabbreviation."MMMM"Thefullmonthname."t"Theone-letterAM/PMabbreviation(thatis,AMisdisplayedas"A")."tt"Thetwo-letterAM/PMabbreviation(thatis,AMisdisplayedas"AM")."yy"Thelasttwodigitsoftheyear(thatis,1996wouldbedisplayedas"96")."yyyy"Thefullyear(thatis,1996wouldbedisplayedas"1996").对于Spread控件的取值赋值 1、取值:Spread取值必须使用Variant变量进行GetText读取 2、Spread的赋值,必须格式化成对应的数据类型,才能成功赋值 对于日期赋值,建议使用value,使用MMDDYYYY的格式进行赋值,这样就算系统改变了日期格式,Spread显示的会和系统一致。如果使用Text进行日期赋值,必须保证当前单元格的日期格式设置要和Text所赋值的日期格式一致,否则会错误。Date"10/29/2001""10292001"

Whensetting,providedatevalueas"MMDDYYYY".模板数据冗余:当前单据模板的模板数据是对应每一张单存在的,所以有许多相同类型的单据的共有数据被重复使用,如:库存单据的收料仓库、日期、审核、制单、验收、多级审核、记账、保管等等。由此导致的另一问题就是,用户无法针对每一类型的单据自定义一个字段,例如:用户要自定义一个A字段,应用于所有库存单据,他必须在每一种库存单据上进行自定义才能实现,这也造成的数据表在物理结构上的冗余。选单结构不灵活:当前单据的选单实现,是一个字段对应一种选单关系,也就是说:一张单如果可以由十张单关联生成,则必须在该单据的物理表上增加十个记录关联关系的字段。无法实现灵活的控制,同时也导致自定义业务流程的无法实现。ICTemplate表、ICTemplateEntry表的问题FCtlIndex字段的用途:lFCtlIndex字段用来标识模板各字段的内部顺序(如:单据中Action的执行顺序)和控件索引,由于此关系存在,导致它的值在同一模板中必须唯一且连续,由此造成维护复杂、繁琐、易出错。Flookupcls字段的统一:lFlookupcls的来源为t_ItemClass、t_SubMessage、t_SubMesType,但存在一些没有标准处理的FLookupCls,对程序的统一处理带来问题,也影响了自定义的标准处理FAction字段的使用:Action的定义和使用,是单据中的核心问题之一,单据界面上的大局部信息处理,都要通过该功能实现。该功能现有的优点是灵活、易维护。但同时也存在一些严重的缺陷:l、执行顺序不易控制,计算容易造成混乱(如:字段在不同情况下的计算问题)。2、公式不够灵活,每有一种处理(特别是计算公式),就要新增一种Action,造成Action过多,不易整理。而且对于同一字段在不同条件下的不同计算公式,必须在程序中作特殊处理,造成控制不统一。单据选单的关联关系:由于是通过程序解析生成,整个生成的SQL语句的执行效率很低,并且有些还使用了非标准的语法(如:*=、=*)。单据二次开发手册概述单据二次开发是针对现目前单据的一些功能无法满足一些客户的特殊要求,同时分公司又有能力进行二次开发而提出的,这样既可以在现有的系统不做变动的情况下面满足用户的需求,同时也增强了系统的稳定性。注意:本篇所介绍所用到的动态连接库名为:K3BillTransfer.dll通过该说明文档,你可以了解到1.如何通过K3BillTransfer组件在录单过程中对单据上各工程加以控制。2.如何通过K3BillTransfer组件实现自定义功能菜单。3.如何通过K3BillTransfer组件控制数据的保存。4.应用例如。该文档阅读的适用对象需要在K/3工业供需链系统单据上进行二次开发的开发者。属性1.PropertyCnnstringAsString当前数据库的MMTS.PropsString连接串。2.PropertySystemNameAsString当前系统名称。3.PropertyLastInfoAsString最后一次系统返回的各种信息4.PropertyBillFormAsObject整个单据窗体对象。可通过该对象访问单据上的任何一个对象,包括控件,菜单。共有的方法有:InsertRow(),在Grid的当前行追加一行,它没有参数。5.PropertyBillFuncasObject代表单据对象。目前没什么用途。6.PropertyHeadAsObject单据表头控件,是一个KDText控件数组7.PropertyGridAsObject单据分录控件,为FpSpread控件8.PropertySumGridAsObject单据分录合计控件,为FpSpread控件9.PropertyHeadCtlAsVariant对应表头控件数组,记录每个表头工程各属性的数组如果要改变HeadCtl中的某个属性值,需先对HeadCtl做一个备份,然后修改此备份的相应属性值,再将此备份赋值给HeadCtl。10.PropertyEntryCtlAsVariant对应分录各列,记录每个分录列各属性的数组如果要改变EntryCtl中的某个属性值,需先对EntryCtl做一个备份,然后修改此备份的相应属性值,再将此备份赋值给EntryCtl。11.PropertySaveVectAsKFO.Vector二次开发外部数据存取接口。在录单过程中,用户可将某些数据保存在此Vector中,在单据保存时,再通过二次开发中间层组件,将此Vector中的数据保存到指定位置。SaveVect.Item(1)为一个KFO.Dictionary对象该对象包含以下四个系统数据SaveVect.Item(1).Value("FInterID"):单据内码SaveVect.Item(1).Value("FTransType"):单据事务类型SaveVect.Item(1).Value("ISRedBill"):是否红字单据SaveVect.Item(1).Value("BillChecked"):是否审核。方法1.FunctionAddUserMenuItem(ByValCaptionAsString,[ByValRootMenuCaptionAsString=""])说明:添加一个用户自定义菜单项,系统一共预设了五个菜单项供二次开发使用参数:Caption:菜单名称RootMenuCaption:根菜单名称。缺省为“自定义菜单〞2.FunctionGetGridText(ByValRowAsLong,ByValColAsLong)AsString说明:获取分录某单元格的值参数:Row:分录行Col:分录列3.FunctionGetHeadNumber(ByValCtlIndexAsLong)AsString说明:获取表头某项的代码参数:CtlIndex:表头控件索引4.FunctionGetHeadText(ByValCtlIndexAsLong)AsString说明:获取表头某项的文本参数:CtlIndex:表头控件索引5.FunctionGetSumGridText(ByValRowAsLong,ByValColAsLong)AsString说明:获取合计行某列的值参数:Row:行。一般为1Col:分录列6.FunctionSetGridText(ByValRowAsLong,ByValColAsLong,ByValValue,[ByValInterIDAsLong=0],[ByValsNameAsString=""])AsBoolean说明:设置分录某单元格的值,当分录为查找类型时,会把相应的信息一起携带到相应的位置,如当为物料代码时,它会携带物料的一些根本信息物料名称等。参数:Row:

温馨提示

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

评论

0/150

提交评论