K3 BOS样例代码演示说明.docx
- 文档编号:10628997
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:16
- 大小:73.42KB
K3 BOS样例代码演示说明.docx
《K3 BOS样例代码演示说明.docx》由会员分享,可在线阅读,更多相关《K3 BOS样例代码演示说明.docx(16页珍藏版)》请在冰豆网上搜索。
K3BOS样例代码演示说明
K/3BOS样例代码演示说明
金蝶软件(中国)有限公司
K/3产品事业部
2007年4月
目录
一、需求4
二、单据界面定义功能4
三、单据Action需求和实现方式4
3.1录入或修改币别时,金额和本位币金额类型字段依据币别的精度自动调整显示和录入精度4
3.2录入或修改币别时,汇率自动调整5
3.3录入或修改物料时,在[物料]列显示物料代码,在[物料名称]列显示其物料名称5
3.4录入或修改物料时,携带销售单位至[计量单位]5
3.5录入或修改物料时,[数量]和[基本数量]类型字段依据物料的[物料精度]和[价格精度]自动调整数量和价格的显示和录入精度。
5
3.6录入或修改物料时,携带销售单位至[基本计量单价],同时根据[计量单位]与该计量单位所在计量单位组的换算率自动计算对应的常用单位单价。
5
3.7录入或修改物料时,携带默认仓库至[仓库]、默认仓位至[仓位]。
5
3.8录入仓库后,依据仓库的仓库组过滤仓位。
6
3.9根据输入的物料、仓库、仓位过滤批次号时。
6
3.10录入或修改[计量单位]时,自动换算录入的[数量]和[单价]。
6
3.11录入或修改[数量]和[单价]时,自动调整计算相应的[基本数量]和[基本单价]6
3.12录入或修改物料、数量、单价自动计算[金额],并将[金额]汇总值填入[总额]6
3.13录入或修改[金额]时,倒算[单价]和[基本数量单价],并将[金额]汇总值填入[总额]6
3.14录入或修改币别、汇率、物料、数量、单价、金额后自动计算[本位币金额],并将[本位币金额]汇总值填入[本位币总额]7
四、多极审核功能7
4.1、设置一级审核;7
4.2、在单据过滤条件中增加[审核状态]的扩展过滤条件7
4.3、单据一级审核后调用业务审核,在业务审核中设置状态Fstatus为1(已审核)8
五、单据审核后允许进行单据变更,其中单据备注信息,任何时候都允许修改8
六、展现凭证生成和察看功能9
6.1序时簿上增加[凭证]按钮9
6.2单据录入时增加[借方科目]和[贷方科目]9
6.3如果单据没有生成凭证,在序时簿上单击凭证,依据单据内容汇总生成一张凭证9
6.4如果选中的第一条单据已经生成凭证,调用凭证查看界面,其打开模式为只读。
10
七、选单和反写10
7.1增加一条选单线路,[应收合同]-〉[产品入库通知单]的钩稽选单,具体参数设置请查看BOS演示功能.单据转换流程.[应收合同]-〉[产品入库通知单];10
7.2增加一条选单线路,[销售订单]-〉[产品入库通知单]的钩稽选单,具体参数设置请查看BOS演示功能.单据转换流程.[销售订单]-〉[产品入库通知单];10
7.3增加一条选单线路,[产品入库通知单]->[(老)产品入库]的钩稽选单,具体参数设置请查看BOS演示功能.单据转换流程.[产品入库通知单]->[(老)产品入库];10
八、打包11
8.1、通过BOS打包工具完成对应信息的发布11
8.2、无法通过打包工具完成的,提供对应SQL11
附录:
BOS高级应用12
版本:
K/3BOSV10.4
数据库:
K/3BOS演示帐套
一、需求
1总体需求:
客户个性化需求:
在产品入库单之前增加一个[产品入库通知]的流程,该流程要求能从应收合同或销售订单关联生成,并最终能在产品入库单反映其来源合同和订单,该流程有凭证需求。
2需求分解
2.1通过单据界面定义一张[产品入库通知单]
2.2通过Action定义常用单位、常用单位数量、基本单位数量、单价、金额、汇总金额等一系列单据动作。
2.3通过[多极审核]流程完成单据审核操作。
2.4通过序时簿菜单[单据变更]完成单据审核后允许变更的功能。
2.5通过序时簿菜单[凭证]完成凭证生成和察看功能
2.6通过[单据流程转换]完成应收合同->销售入库通知单、销售订单->销售入库通知单、生产通知单->销售入库通知单的业务流程转换定义;
2.7通过单据上增加菜单[合同察看]完成合同序时簿和单据调用
2.8通过发布向导完成发布功能
二、单据界面定义功能
1、单据类型编码为:
300000000
2、单据由单据头和单据体两部分组成,对应得数据表为:
t_BOSShow和t_BOSShowEntry
3、单据头的显示字段存储在页签中
4、从[核算项目字段库]中往单据头分别拖入[客户]、[部门]、[职员]、[业务员]、[借方科目]、[贷方科目]6个字段。
5、设置单据头字段的[标题宽度]为840(4个中文字符)
三、单据Action需求和实现方式
3.1录入或修改币别时,金额和本位币金额类型字段依据币别的精度自动调整显示和录入精度
首先从[常用字段库]拖入[币别]字段至单据头、然后从[常规字段库]拖入2个金额类型的字段到单据体分别将其中文名改为:
[金额](字段名设为:
FAmount,关联币别字段设为:
币别)、[本位币金额](字段名设为FStdAmount),[总额](字段名设为:
FTotalAmount,关联币别字段设为:
币别)和[总额本位币](字段名设为:
FStdTotalAmount),BOS系统将在[币别]的[加载值更新事件]和[值更新事件]增加相应的系统内嵌操作”SetDecimal{FAmount,FTotalAmount}”,由该操作实现该功能(本位币自动处理)。
3.2录入或修改币别时,汇率自动调整
从[常规字段库]拖入[小数]类型字段增加[汇率]字段,然后在[币别]的[值更新事件]增加[携带当前字段基础资料属性到指定列]操作:
[单据头.汇率]=[单据头.币别.汇率]。
3.3录入或修改物料时,在[物料]列显示物料代码,在[物料名称]列显示其物料名称
从[核算项目字段库]拖入[物料],然后从[常规字段库]拖入[基础资料属性],[来源]属性设为[物料],并将其名称改为[物料名称]。
BOS将在[物料]的[加载值更新事件]和[值更新事件]增加相应的系统内嵌操作”TakeBaseData{FBaseProperty}”,由该操作实现该功能。
3.4录入或修改物料时,携带销售单位至[计量单位]
1、从[常用字段库]
(2)中拖入[计量单位]至单据体;
2、在[物料]的[值更新事件]的[携带当前字段基础资料属性到指定列]操作增加[单据体.计量单位]=[销售单位]
3.5录入或修改物料时,[数量]和[基本数量]类型字段依据物料的[物料精度]和[价格精度]自动调整数量和价格的显示和录入精度。
1、从[常规字段库]拖入1个[数量]类型字段和2个[基本数量]类型字段至单据体,分别将其改名为:
[数量]、[基本数量]和[发票关联基本数量];
2、从[常规字段库]拖入2个[单价]类型字段(不用基本单价类型字段的原因在于其处理不甚完整),分别将其改名为[单价]和[基本单位单价]。
3、BOS将在[物料]的[加载值更新事件]和[值更新事件]增加相应的系统内嵌操作”SetDecimal{FInvoiceQty_Base,FPrice,FPrice_Base,FQty,FQty_Base}”,由该操作实现该功能。
3.6录入或修改物料时,携带销售单位至[基本计量单价],同时根据[计量单位]与该计量单位所在计量单位组的换算率自动计算对应的常用单位单价。
1、在[物料]的[值更新事件]的[携带当前字段基础资料属性到指定列]操作增加[单据体.基本计量单价]=[销售单价](因K3定义的单价都指的是基本计量单价)
2、在[物料]的[值更新事件]的[计算定义公式的值并指定到对应列]操作增加[单据体1.单价]=[单据体1.基本单位单价]*[单据体1.计量单位.换算率]
Calculate{FPrice=FPrice_Base*FUnitID.FCoefficient}
3.7录入或修改物料时,携带默认仓库至[仓库]、默认仓位至[仓位]。
1从[常规字段库]拖入1个[仓库]类型字段至单据体,从[常用字段库]拖入一个[仓位]类型字段至单据体;
2在[物料]的[值更新事件]的[携带当前字段基础资料属性到指定列]操作增加[单据体.仓库]=[默认仓库]、[单据体.仓位]=[默认仓位]
3.8录入仓库后,依据仓库的仓库组过滤仓位。
在微软查询分析器中输入如下SQL:
updateICClasstableinfosetFFilter='FSPGroupID=(SELECTFSPGroupIDFROMt_StockWHEREFItemID=GetFldValue(FDCStockID,1))'whereFKey='FDCSPID'andFClassTypeID=300000000
3.9根据输入的物料、仓库、仓位过滤批次号时。
1从[常规字段库]拖入1个[批次]类型字段至单据体;
2在微软查询分析器中输入如下SQL:
updateICClassTableinfosetFFilter='(FItemID=GetFldValue(FItemID,1)andFStockID=GetFldValue(FDCStockID,1)andFStockplaceID=GetFldValue(FDCSPID,1))'whereFKey='FBatchNo'andFClassTypeID=300000000
3.10录入或修改[计量单位]时,自动换算录入的[数量]和[单价]。
在[单位]的[值更新事件]的[修改计量单位自动换算单价或数量]操作钩选[数量]和[单价]字段。
3.11录入或修改[数量]和[单价]时,自动调整计算相应的[基本数量]和[基本单价]
1、在[物料]的[值更新事件]的[计算定义公式的值并指定到对应列]操作增加[单据体1.基本单位数量]=[单据体1.数量]*[单据体1.计量单位.换算率]
2、在[物料]的[值更新事件]的[计算定义公式的值并指定到对应列]操作增加[单据体1.基本单位单价]=[单据体1.单价]/[单据体1.计量单位.换算率]
3.12录入或修改物料、数量、单价自动计算[金额],并将[金额]汇总值填入[总额]
1、分别在[物料]、[数量]、[单价]的[值更新事件]的[计算定义公式的值并指定到对应列]操作增加[单据体1.金额]=[单据体1.数量]*[单据体1.单价]
2、分别在[物料]、[数量]、[单价]的[值更新事件]的[按公式计算表体的值并填入表头目标字段]操作增加”CalcAggregate{FTotalAmount=sum(FAmount)}”
3.13录入或修改[金额]时,倒算[单价]和[基本数量单价],并将[金额]汇总值填入[总额]
1、在[金额]的[值更新事件]的[计算定义公式的值并指定到对应列]操作增加[单据体1.单价]=[单据体1.金额]/[单据体1.数量]
2、在[金额]的[值更新事件]的[计算定义公式的值并指定到对应列]操作增加[单据体1.基本单位单价]=[单据体1.单价]/[单据体1.计量单位.换算率]
3、在[金额]的[值更新事件]的[[按公式计算表体的值并填入表头目标字段]操作增加”CalcAggregate{FTotalAmount=sum(FAmount)}”
3.14录入或修改币别、汇率、物料、数量、单价、金额后自动计算[本位币金额],并将[本位币金额]汇总值填入[本位币总额]
1、在[本位币金额]的[值更新事件]的[按公式计算表体的值并填入表头目标字段]操作增加”CalcAggregate{FStdTotalAmount=sum(FstdAmount)}”;
2、依据币别符号,在插件中增加[本位币金额]=[金额]*(/)[汇率]的处理;
3、在插件中增加对该列[本位币金额]的Change事件的触发,用1的操作更新单据头[本位币总额]。
说明:
该功能涉及插件开发,相关函数清单:
BOSShow.CBill_BOSShow.m_BillInterface_Change
BOSShow.CBill_BOSShow.CalcStdAmount
四、多极审核功能
4.1、设置一级审核;
如图:
4.2、在单据过滤条件中增加[审核状态]的扩展过滤条件
如图:
SQL:
Updateicclasstableinfosetflock=-1,fconditionext=1000000wherefclasstypeid=300000000andfkey='Fchecker'
说明:
fconditionext=1000000对应的内容为ICClassCondition表中FID=1000000内容,察看该条记录的FDataSource_CHS简体中文信息为:
”全部;None~已审核;isnull(@Field,0)>0~未审核;isnull(@Field,0)<=0”。
全部:
对应得解析条件为None,说明该过滤条件不起作用
已审核:
对应得isnull(@Field,0)>0,通过判断Fchecker字段的值是否大于0,来判断其是否审核;
未审核:
对应得isnull(@Field,0)<=0,通过判断Fchecker字段的值是否小于等于0,来判断其未审核。
P.S:
如果现有的扩展过滤条件不满足条件需要增加,请不要紧接着系统定义的Fid开始扩展,以免被系统升级时清除,可像单据类型一样从200000000开始。
4.3、单据一级审核后调用业务审核,在业务审核中设置状态Fstatus为1(已审核)
1、从[常规字段库]往单据上拖入一个下拉列表字段,设置其名称为一个单据状态字段,下拉列表内容为:
保存值0:
未审核保存值1:
已审核,其显示状态为:
782序时簿和过滤条件中可见。
2、设置多级审核后业务组件名为:
K3MBOSShow.CBill_Show;
3、在K3MBOSShow.CBill_Show.AfterMultiCheck事件中处理多级审核,详细代码请查看K3MBOSShow.vbp
五、单据审核后允许进行单据变更,其中单据备注信息,任何时候都允许修改
1、设置单据上除[备注]字段以外所有锁定状态不为-1(任何情况都锁定)的字段的锁定属性为4(审核后锁定)
2、通过[操作管理]功能在序时簿上增加[变更]菜单项
3、因BOS多级单据审核结束后单据不能修改和删除(只有查看状态没有修改状态),这时我们通过赋予[修改]状态来实现变更功能,因单据已经结束审核流程,根据锁定状态的设置,用户只能修改[摘要]字段(其锁定状态为0,即任何时候都不锁定)。
4、在单据界面初始化事件m_BillInterface_AfterLoadBill增加保存按钮的显示
说明:
该功能涉及插件开发,相关函数清单:
BOSShow.CList_BOSShow.m_ListInterface_MenuBarClick
BOSShow.CBill_BOSShow.m_BillInterface_AfterLoadBill
六、展现凭证生成和察看功能
6.1序时簿上增加[凭证]按钮
6.2单据录入时增加[借方科目]和[贷方科目]
6.3如果单据没有生成凭证,在序时簿上单击凭证,依据单据内容汇总生成一张凭证
1、凭证的[财务日期]和[业务日期]都等于单据日期,多张单据生成凭证时取最小的单据日期作为整张凭证的日期;
2、借方科目从单据头上的借方科目取数,贷方科目从单据头上的贷方科目取数
3、以[最小单据日期]、[单据头币别],[单据头汇率],[单据头借方科目],[单据头贷方科目],[客户],[部门],[业务员],[物料],[物料对应的单位组的缺省物料单位]为[汇总依据]汇总[金额]、[本位币金额]、[基本计量单位数量]后生成凭证,单价为汇总后的[金额]/汇总后[基本计量单位数量]
4、为方便凭证打印,借方科目分录摘要为:
[物料名称]-[数量](此需求的目的为方便凭证打印)
说明:
该功能涉及插件开发,相关函数清单:
BOSShow.CList_BOSShow.m_ListInterface_MenuBarInitialize
BOSShow.CList_BOSShow.m_ListInterface_MenuBarClick
BOSShow.CList_BOSShow.GetVoucherData
BOSShow.CList_BOSShow.EditVoucher
BOSShow.CList_BOSShow.ViewVoucher
6.4如果选中的第一条单据已经生成凭证,调用凭证查看界面,其打开模式为只读。
七、选单和反写
7.1增加一条选单线路,[应收合同]-〉[产品入库通知单]的钩稽选单,具体参数设置请查看BOS演示功能.单据转换流程.[应收合同]-〉[产品入库通知单];
7.2增加一条选单线路,[销售订单]-〉[产品入库通知单]的钩稽选单,具体参数设置请查看BOS演示功能.单据转换流程.[销售订单]-〉[产品入库通知单];
7.3增加一条选单线路,[产品入库通知单]->[(老)产品入库]的钩稽选单,具体参数设置请查看BOS演示功能.单据转换流程.[产品入库通知单]->[(老)产品入库];
因此时生成的业务流程,钩稽关系不受控制,为了完整的控制,须增下以下操作
1、调整此业务流程过滤条件,当[产品入库单]行钩稽完毕后不允许选单:
在微软查询分析器中输入如下SQL:
updateICClassLinksetfcondition='FChecker>0andFCommitQty_base 此SQL将会导致用户在录入[产品入库单]选[产品入库通知单],已经钩稽完毕的[产品入库通知单]将不被过滤出来,已经钩稽完毕的[产品入库通知单]分录将不允许下推[产品入库单]; 2、因目前老单保存前校验,通过增加老单中间层保存插件提供单据保存或修改时的超额的校验。 updatet_ThirdPartyComponentsetfcomponentname='K3MBOSShow.CBill_Show',fcomponentsrv='K3MBOSShow.CBill_Show',FDescription='选单超额判断' whereftypedetailid=2andfindex=0 说明: 该功能涉及插件开发,相关函数清单: K3MBOSShow.CBill_Show.BeginSave K3MBOSShow.CBill_Show.EndSave 八、打包 8.1、通过BOS打包工具完成对应信息的发布 因K/3BOS对子系统的新建通过[发布功能]实现,因此须 1、通过[发布功能]发布[1BOS_ShowInstall_创建子系统.Exe]以创建子系统和主控台发布信息; 2、通过[元数据发布]和[发布插件]发布BOS插件和元数据信息; 8.2、无法通过打包工具完成的,提供对应SQL 1、修改[产品入库通知单]的帮助文档为K3BOS.CHM(BOS帮助手册); 2、通过手工插入模板完成总帐凭证查询的功能模块的归属模板; 3、增加[产品入库单]单据保存前判断的插件。 附录: BOS高级应用 以下都是目前无法通过BOSIDE直接配置实现的功能,但能够参考以下方式完成相应的功能。 1、改变FTab的标签总数为2和名称: SQL: updateICClassctlsetfcaption_chs='基本信息|备注信息',FCaption_CHT='基本信息|备注信息',FCaption_En='BaseInfo|TextInfo',Ftabs=2 wherefclasstypeid=300000000 说明: ICClassctl为常用控件的存储表,其中FTabs是存储[页签]控件标签总数的数值。 FCaption_chs、FCaption_cht、FCaption_En是分别存储控件的简体中文、繁体中文和英文内容的字段,而不同标签的名称BOS程序通过|字符来区别。 2、将[单据编号]字段放入[页签][基本信息]中 SQL: updateicclasstableinfosetFContainer='FTab,0'wherefclasstypeid=300000000andfkey='FBillNo' 说明: FBillNo是BOS自定义的字段无法通过BOSIDE删除,为了实现这个功能目前只能通过变更元数据的方式来进行实现, FContainer: BOS控件容器,说明该字段隶属哪个控件容器。 3、过滤界面增加[审核状态]的扩展下拉列表 SQL: Updateicclasstableinfosetflock=-1,fconditionext=1000000wherefclasstypeid=300000000andfkey='Fchecker' 说明: fconditionext=1000000对应的内容为ICClassCondition表中FID=1000000内容,察看该条记录的FDataSource_CHS简体中文信息为: ”全部;None~已审核;isnull(@Field,0)>0~未审核;isnull(@Field,0)<=0”。 全部: 对应得解析条件为None,说明该过滤条件不起作用 已审核: 对应得isnull(@Field,0)>0,通过判断Fchecker字段的值是否大于0,来判断其是否审核; 未审核: 对应得isnull(@Field,0)<=0,通过判断Fchecker字段的值是否小于等于0,来判断其未审核。 P.S: 如果现有的扩展过滤条件不满足条件需要增加,请不要紧接着系统定义的Fid开始扩展,以免被系统升级时清除,可像单据类型一样从200000000开始。 4在序时簿上增加凭证字号的显示 SQL: Updateicclasstableinfosetfconditionext=1000002wherefclasstypeid=300000000andfkey='FVchInterID' 说明: 类同4 5、输入仓库后,按仓库对应的仓库组过滤出对应的仓位 updateICClasstableinfosetFFilter='FSPGroupID=(SELECTFSPGroupIDFROMt_StockWHEREFItemID=GetFldValue(FDCStockID,1))'whereFKey='FDCSPID'andFClassTypeID=300000000 6、根据输入的物料、仓库、仓位过滤过率批次号时 updateICClassTableinfosetFFilter='(FItemID=GetFldValue(FItemID,1)andFStockID=GetFldValue(FDCStockID,1)andFStockplaceID=GetFldValue(FDCSPID,1))'whereFKey='FBatchNo'andFClassTypeID=300000000 7、更新BOS元数据缓存 SQL: UpdateICClasstypesetFid=fid 说明: BOS10.2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- K3 BOS样例代码演示说明 BOS 代码 演示 说明