最新K3BOS样例代码演示说明
K3WISE移动BOS部署指南
版权所有©1993-2013金蝶软件(中国)有限公司
P1
提纲
K3WISE移动BOS组合包安装配置
–
–
环境检测安装
轻应用包+临时补丁包安装
移动BOS设计时操作说明
–
– –
各控件的设计指南
移动列表和移动单据设计样列 移动报表设计
移动BOS运行时
– – 手机端展示 搜索功能
3、安装环境需配置IIS、 .NET FRAMWORK2.0 、.NET FRAMWORK4.0; 4、服务器能访问外网,且部署了花生壳或者有固 定公网IP;
P3
K3WISE移动BOS组合包安装指南
运行轻应用安装包setup.msi:
P4
K3WISE移动BOS组合包安装指南
安装设计时补丁
P5
提纲
P8
K3WISE移动BOS设计时操作说明
移动列表设计样例:
移动列表相当于普通单据的序时 簿,可以通过列表查看多条单据 信息,一般设计的都比较简洁明 了,设计时为了节省流量和体验 的流畅性,尽量避免插入图片和 背景;
P9
K3WISE移动BOS设计时操作说明
移动单据设计样例:
移动单据相当于普通单据的详情, 它的样式一般可以设计的更加丰 富,设计完成移动列表以后无需 进行发布,直接从手机端的列表 单击进入即可;
K3WISE移动BOS组合包安装配置
–
–
环境检测安装
轻应用包+临时补丁包安装
移动BOS设计时操作说明
–
– –
各控件的设计指南
移动列表和移动单据设计样列 移动报表设计
移动BOS运行时
– – 手机端展示 搜索功能
K3 WISE BOS元数据表结构
0.1. ICClassType(单据类型表)0.2. ICClassTypeEntry(单据分录模版表)0.3. ICClassTableInfo(单据字段模版表)0.4. ICClassMutex(BOS单据网络控制表)0.5. ICClassProfileEntry(过滤方案明细)0.6. ICClassProfile(过滤方案)0.7. ICClassUserProfile(单据设置用户配置信息)0.8. ICClassActionList(BOS扩展服务定义序列表)0.9. ICClassActionMessage(操作消息定义)0.10. ICClassActionPosition(菜单位置表)0.11. ICClassBillAction(业务对象动作)0.12. ICClassEnvironment(业务场景)0.13. ICClassKeyFieldMap(逻辑关键字字典)0.14. ICClassMenu(BOS菜单)0.15. ICClassMessage0.16. ICClassMessageUser0.17. ICClassPredefineAction(预定义动作)0.18. ICClassLinkCommit(钩稽关系表)0.19. ICClassLinkEntry(流程字段对应表)0.20. ICClassLink(业务对象流程表)0.21. ICClassWorkFlowBill(流程对象节点定义)0.22. ICClassWorkFlowJoin(流程对象关联定义)0.23. ICClassWorkFlow(业务流程定义)0.24. ICClassWriteBackID(反写逻辑表)0.25. ICClassWriteBackRelate(反写逻辑关系表)0.26. ICClassWriteBackTaskEntry(反写任务子表)0.27. ICClassWriteBackTask(反写任务表)0.28. ICClassCheckRecords(记录审核路线表)0.29. ICClassCheckStatus(记录审核状态表)0.30. ICClassMCFlowInfo(审核配置)0.31. ICClassMCMan(级次审核人)0.32. ICClassMCMessage(多级审核消息配置)0.33. ICClassMCRule(审核流转配置)0.34. ICClassMCTasks(审核流程节点)0.35. ICClassPack0.36. ICClassPackEntry0.37. ICClassAction(事件规则模版表)0.38. ICClassCondition(过滤条件对照表)0.39. ICClassConsts(BOS常量表)0.40. ICClassElementProperty(BOS元素属性)0.41. ICClassElements(BOS元素)0.42. ICClassDataRuleEntry0.43. ICClassDataRuleRight0.44. ICClassFieldRight0.45. ICClassGroupInfo0.46. ICCrossTab0.47. ICCrossTabColDat0.48. ICCrossTabDatSource。
实施专题-使用K3BOS自定义控件示例-件示例-实现助手视图87
使用K3BOS(v12+)实现助手视图[仅供内部开发研究交流]K3BOS 从V12 起提供了自定义控件支持. 下面我们开发一个控件, 加入BOS单据中, 实现的"助手视图"的功能.第一步, 我们先开发出一个控件.1. 启动VB, 利用BOS插件向导, 创建一个插件, 命名为K3TestDll.CBillPlugin.2. 添加一个"控件"工程, 命名为K3TestCtrl.CtlHelper3. 调整控件外观. 我们将把这个控件添加到单据上, 所以你想要在单据上展示什么, 就可以在控件上添加什么. 我添加了一个文本框txtInfo, 准备用于展示物料信息; 添加一张图片, 用于展示物料图片; 此外还添加了一些按钮, 用于调用其他附加的功能.修改控件的UserControl_Resize() 方法, 以免大小改变时, 控件界面发生混乱.4. 为了在控件中响应插件事件, 获取单据信息, 我们需要在控件中添加插件支持:** 引用k3classevents.dll, kfo10.dll, ms ado 2.8 库** 添加插件接口对象:Private WithEvents m_BillInterface As K3ClassEvents.BillEvent** 添加一个公开接口, 以便初始化插件接口对象:Public Function Init(ByVal obj As Object)On Error Resume NextSet m_BillInterface = objDebug.Assert Err.Number = 0End Function** 插件本身的初始化:Private WithEvents m_BillInterface As K3ClassEvents.BillEventPublic Sub Show(ByVal obj As Object)If UCase$(TypeName(obj)) = "BILLEVENT" ThenSet m_BillInterface = objElseMsgBox "Interface not supported!"End IfEnd Sub这样, 当单据加载时, 会初始化插件; 而插件又将单据接口对象委托给控件,我们可以在控件中处理单据的种种事件,获取单据信息。
K3 Cloud BOS平台特性及案例
更简单
更高效 更灵活
Second 移动BOS
移动互联时代企业信息化建设 O2O方案 连接一切,沟通协作扁平化
业务移动化
online
信息通知 业务处理 业务自助 管理报表
人际协作
沟通与业 务协作
组织成员
云之家 微信
offline
业务流程
ERP
CRM
HR
OA
其它系统
企业信息化系统
移动BOS,配置级的移动开发平台
K/3 Cloud平台化的业务架构
标准+开放 (交付转型) 质量与效率 (研发转型) 开放的ERP云平台 (运营转型) 持续创造应用价值 (客户应用转型)
全流程 驱动 预警 平台 权限
多核算 体系
多会计 准则智能会 计平台源自核销 平台核算 平台
辅助 属性
信用 管理
动态流程建模
动态服务建模
库存 管理
动态移动应用建模 动态报表建模
1、B-ONE没有 提供业务流程平 台 2、可支持审批 流设计、单据简 单扩展设计、套 打设计,但多数 不支持配置级的 处理,和cloud 的开发平台的差 距较大
总体来说,BOS平台较同行产品在开放、灵活性中有不同程度的领先优势,带 给客户更优异的开发体验。
平台优势聚焦
更专业 更标准
优势
基于独创的动态领域模型构建,真正的先平台再业务的产品,比之市场上其他产品从 业务抽象出平台的产品,技术领先一个数量级 丰富的业务抽象、模型库,高效支撑定制;比之市场同行产品,在二次开发效率上有 着天然的优势 图形化设计平台,拖拽式开发方式,我们更简单对业务开发人员技术要求更低; 1000多家客户的实践证明:“90%配置+10%开发”不是口号。 基于开放的界面服务接口开发的不同的前端,实现一次设计多“端”运行,开发效率 成倍增长。 独立的工作流平台、业务流程平台,将BPM和ERP完美融合,所有ERP的活动可根 据企业需要的流程进行组装,满足企业灵活多变的流程管控需求,实现无缝业务协同。
K3V12.0_精益版_BOS万能报表工具演示大纲
K/3 V12.0BOS万能报表工具演示方案BOS万能报表工具针对有个性化报表应用需求的K/3客户,能够帮助企业灵活实现复杂的、综合的业务报表,有效适应企业分行业、分角色报表分析的需要。
BOS万能报表工具具有标准报表与电子表格报表两大数据的报表。
电子表格报表具有多表页电子表格操作、跨账套取数、灵活的报表发布和权限控制、支持VBA编程等特性,可以通过报表取数据函数与数据查询SQL完成报表数据的填充;标准报表具有表头、表尾、页眉、页脚,分组首、分组尾、明细等区域,将放置在这些区域中的报表控件与单据字段的绑定完成报表数据的显示,也可以通过报表控件在报表上显示一些如公司名称、Logo、地址、联系方式等固定信息以及动态图片,支持多单据体、套打和普通打印等单据打印模板设计,支持列表、主从、分组汇总、交叉分析、图型(7类42种)常见报表样式的设计。
数据源管理和定义标准报表模板定义电子表格报表模板定义标准报表和电子表格的发布为帮助市场部、分公司、对本产品感兴趣的同事能够快速了解本产品,保证本产品在市场上的销售和推广,我们配合提供了相应的演示方案,该方案包括:1个演示账套:蓝海机械有限公司(K/3ERP数据演示账套)演示配置说明;标准报表对4类报表样式设置的演示说明:1.1演示配置说明:1.1.1安装及环境说明:具体的安装检查顺序如下:注意:Dotnet Framework 2.0必须在安装IIS后才能安装,如果在安装IIS前发现系统已经安装了Dotnet Framework 2.0,请先卸载,并在安装完IIS后再安装Dotnet Framework 2.0。
如果Dotnet Framework 2.0安装正确,在IIS的Web服务扩展中,会出现 V2.0.50727这一项,且状况值为允许(如下图)。
1.1.2服务端配置:1.演示账套恢复并注册在中间层;账套的编号如下:1.1.3演示账套说明:蓝海机械有限公司演示账套的报表说明1.1.4初次登陆设置:初次登陆须指定报表服务器中间层地址,如报表工具安装地址与中间层服务器地址为同一机器,输入127.0.0.1即可。
K3BOS多级审核样例代码
K3BOS多级审核样例代码‘场景:应收应付单据多级审核中间层插件'多级审核保存后事件'/*参数 :'/*@ nClassID Long, 业务对象事务类型'/*@ nFBillID Long, 业务单据内码'/*@ nFPage Long, 业务单据页码'/*@ nFBillEntryID, 业务单据分录内码'/*@ dctBillCheckRecord, 审核路线数据包,包含了客户端插件附加的数据'/*返回:如果返回假,则取消了多级审核(反审核)操作Public Function AfterMultiCheck(ByVal sDsn As String, _ByVal nClassID As Long, _ByVal nFBillID As Long, _Optional ByVal nFPage As Long = 1, _Optional ByVal nFBillEntryID As Long = 0, _Optional ByVal dctBillCheckRecord As KFO.Dictionary) As BooleanOn Error GoTo HErrorDim obj As ObjectDim cn As ADODB.ConnectionDim dictCondition As KFO.DictionaryInitDataEnv (sDsn)Dim strLanguage As StringstrLanguage = m_/doc/301334477.html,nguageIDDim bCancel As BooleanIf dctBillCheckRecord Is Nothing ThenErr.Raise EBS_E_MissingRequiredData, "ebsarBill.RPAudit.AfterMultiCheck", LoadMKDString(" 缺少参数:dctBillCheckRecord ", strLanguage)End IfIf Not dctBillCheckRecord.Lookup("FMode") ThenErr.Raise EBS_E_MissingRequiredData, "ebsarBill.RPAudit.AfterMultiCheck", LoadMKDString(" 缺少参数:FMode ", strLanguage)End IfIf Not dctBillCheckRecord.Lookup("OverBusinessLevel") ThenErr.Raise EBS_E_MissingRequiredData, "ebsarBill.RPAudit.AfterMultiCheck", LoadMKDString(" 缺少参数:OverBusinessCheck ", strLanguage)End IfbCancel = IIf(dctBillCheckRecord("FMode") = 2, True, False) '0审核,2反审核If Not dctBillCheckRecord("OverBusinessLevel") Then '业务审核GoTo HExitEnd IfDim ARP As Boolean '业务对象事务类型种类,true为应收,false 为应付Dim m_lngReturn As LongSelect Case nClassID '业务对象事务类型Case AR_NEWBILL_INVOICE, AR_NEWBILL_INVOICE_TAX, AR_NEWBILL_INVOICE_ALL, AR_NEWBILL_ARPBILL, _AR_NEWBILL_RECEIVEBILL, AR_NEWBILL_PREBILL, AR_NEWBILL_BACKBILL, AR_NewBill_ReceiveBill_AllARP = True '应收Case AP_NewBill_PayApplyBill, AP_NEWBILL_INVOICE, AP_NEWBILL_INVOICE_TAX, AP_NEWBILL_INVOICE_ALL, _AP_NEWBILL_ARPBILL, AP_NEWBILL_RECEIVEBILL, AP_NEWBILL_PREBILL, AP_NEWBILL_BACKBILL, AP_NewBill_ReceiveBill_AllARP = False '应付End SelectDim dctExt As ObjectSet dictCondition = New KFO.DictionarydictCondition("BatchCheck") = FalsedictCondition("FClassTypeID") = nClassIDSelect Case nClassIDCase AP_NewBill_PayApplyBillIf dctBillCheckRecord.Lookup("FCheckRecordExt") ThenSet dctExt = dctBillCheckRecord("FCheckRecordExt")If dctExt.Lookup("FApproveAmountFor") ThendictCondition("ApproveAmountFor") = dctExt("FApproveAmountFor") 'FApproveAmountFor:申请金额字段End IfEnd IfCase ElsedictCondition("ApproveAmountFor") = 0End SelectSet obj = GetObjectContext.CreateInstance("ebsarBill.RPAudit") '创建应收应付审核对象对当前单据进行审核Select Case nClassIDCase AR_NEWBILL_INVOICE, AR_NEWBILL_INVOICE_TAX, AP_NEWBILL_INVOICE, AP_NEWBILL_INVOICE_TAX, AR_NEWBILL_INVOICE_ALL, AP_NEWBILL_INVOICE_ALLm_lngReturn = obj.CheckBill(sDsn, CInt(IIf(ARP, 3, 4)), nFBillID, CLng(m_/doc/301334477.html,erID),CBool(ARP), CBool(bCancel), False, dict:=dictCondition) ', dictReturn:=dctCreditReturn)Case AR_NEWBILL_ARPBILL, AP_NEWBILL_ARPBILLm_lngReturn = obj.CheckBill(sDsn, 6, nFBillID, CLng(m_/doc/301334477.html,erID),CBool(ARP), CBool(bCancel), dict:=dictCondition) ', dictReturn:=dctCreditReturn)Case AR_NEWBILL_RECEIVEBILL, AR_NEWBILL_PREBILL, AR_NEWBILL_BACKBILL, _AP_NEWBILL_RECEIVEBILL, AP_NEWBILL_PREBILL, AP_NEWBILL_BACKBILL, _AR_NewBill_ReceiveBill_All, AP_NewBill_ReceiveBill_Allm_lngReturn = obj.CheckBill(sDsn, 7, nFBillID, CLng(m_/doc/301334477.html,erID),CBool(ARP), CBool(bCancel), dict:=dictCondition) ', dictReturn:=dctCreditReturn)Case AP_NewBill_PayApplyBillm_lngReturn = obj.CheckBill(sDsn, 11, nFBillID, CLng(m_/doc/301334477.html,erID), False, CBool(bCancel), dict:=dictCondition)End SelectSet obj = NothingHExit:GetObjectContext.SetCompleteAfterMultiCheck = TrueExit FunctionHError:GetObjectContext.SetAbortAfterMultiCheck = FalseErr.Raise Err.Number, "ebsarBill.RPAudit.AfterMultiCheck", Err.DescriptionEnd Function。
K3BOS插件开发入门教程
BOS插件开发入门教程本文主要针对初学者,介绍BOS插件开发与制作的基本流程与步骤,为入门所用。
以一个简单的插件开发需求为例:比如想在新开发的BOS单据上,增加一个自定义菜单按钮,按钮标题为“My BOS MenuBarButton”,位置放在编辑菜单下的驳回审核按钮之后,在工具栏上的退出按钮之前;当点击该自定义按钮时弹出提示框“Hello,This Is My First BOS Bill InterFace!”。
针对此需求,让我们一起看看如何一步一步通过BOS插件来实现:【第一步】:由于插件是基于VB语言开发,首先需要在装有金蝶K3的环境下安装Microsoft Visual Basic 6.0(简称VB6.0)开发工具。
【第二步】:安装好VB6.0之后,在开始菜单中找到VB6.0的快捷方式,打开VB之后将出现以下界面(如图1):图1在此界面一定要选择“ActiveX DLL”,再点击“打开”按钮,然后会进入以下工作界面(如图2):图2注意界面右上方的“插件开发向导”按钮。
有的环境可能会出现打开VB6.0后并没有“金蝶k/3-BOS”菜单的问题,解决方法如下:找到K3安装目录下的ADDIN文件夹,将此文件夹下的两个DLL文件(K3BOSPLUGINSADDIN.dll 和K3GLParaConsolePlugin.dll),在CMD命令行中用RegSvr32命令进行注册。
例如:K3安装目录为C:\Program Files\Kingdee\K3ERP,那么在cmd中输入命令就为:regsvr32 "C:\Program Files\Kingdee\K3ERP\ADDIN\K3BOSPLUGINSADDIN.dll"regsvr32 "C:\Program Files\Kingdee\K3ERP\ADDIN\K3GLParaConsolePlugin.dll"回车提示注册成功之后,再重新打开VB就会出现“金蝶k/3-BOS”菜单,如果还没出现需要再重启下电脑解决。
通过K3BOS新单插件调用老单单据的插件代码能正确新增工业单据
通过K3 BOS 新单插件调用老单单据的插件代码能正确新增工业单据通过K3 BOS 新单插件调用老单单据的插件代码能正确新增工业单据,但如何在调用的时候往单据中符值呢?下面是新单插件调用老单单据的插件,你可以参照此方法,在老单插件中调用。
'CallmdlCallIndustryBill.CallBills(5, 1804, 1, 1)'//////////////////////////// 单据调用/////////////////////////////////////// '参数说明' nTranType : 事务类型nInterID : 单据ID' nShowType :查看模式(0:新建;1:EDIT; 2:View)'nBillType : 单据调用模式(0: 普通;1:单据调单据)'StateParm :其他参数,目前主要为BOM 使用sNewBillType :' nSaleMode : 内销or 外销Private m_BillInterface As BillEvent Public Declare Function GetCurrentProcessId _Lib "kernel32" () As Long Public UserName As String PublicUserId As Long Public Function CallBills(ByVal nTranType As Long, _Optional ByVal nInterID As Long = 0, _Optional ByVal nShowType As Long = 2, _Optional ByVal nBillType As Long = 0, _Optional StateParm As Object, _Optional ByVal sNewBillType As String = "", _Optional ByVal nSaleMode As Long = 0) As BooleanDim objBill As ObjectDim nBillCls As Long ' 事务类别( ICTransactiontype.FType )On Error GoTo lError ' 得到单据事务类型的TypeIDIf nBillCls = 0 Then nBillCls = GetBillClsID(nTranType) If nBillCls = 0 ThenMsgBox " 单据系统模板错误"GoTo lErrorEnd If ' -------- 注意:此处参数有改动 -------- ' If nBillType = 0 ThenSet objBill = CreateObject("K3Bills.Bills")ElseSet objBill = CreateObject("K3BillsEx.Bills")End If ' -------------------------------- 'Dim dlg As ObjectSet dlg = CreateObject("CSystemDlg.Sys")Dim LocalCnStr As StringDim sSubID As StringDim sSubName As StringDim lModel As LongDim lModelDetail As Long LocalCnStr = dlg.LocalCnn Set dlg = Nothing With objBill .LocalCnn = LocalCnStr .SystemName = sSubName .SetOpt UserId, UserName IfNot .SaveVect(1).Lookup("sDsn") Then .SaveVect(1)("sDsn") = GetConn End If If nInterID <> 0Then .ListRecordset = SetBillRec(nInterID,nTranType) .ListRSFieldVect = SetBillVectEnd If If Len(sNewBillType) > 0Then .NewBillTransType = sNewBillType Else.NewBillTransType = VBA.CStr(nTranType) End If .Show nBillCls, nShowType ' 'Add By ChenLianli 用于判断是否单据改变了' bBillValueChaged = .BillValueChangedEnd With ' Set objReturn = objBill.BillReturnSet objBill = NothingCallBills = TrueExit FunctionlError: If Err.Number <> 0 Then MsgBox " 据调用出现异常错误。
《K3BOS练习》课件
《K3BOS练习》
多级审核定义-总体流程
多级审核流程
定义多级 审核级次、 业务审核 级次及审
核模式
基本 信息 配置
审核 用户 配置
消息 配置
流转 配置
选项 配置
保存 并启 用
《K3BOS练习》
演示
在寄存入库单上新增多级审核流程,多级审核级次为3, 业务审核级次为3 练习消息配置,开始审核级次为启动审核,结束审核级次 为启动审核,主题为”寄存入库单启动审核”,消息接受 用户为administrator、ceo 练习条件跳转, 当单据头金额小于10000时,一级审核 就直接到审核结束
多级审核跳转规则
多级审核消息配置
启动级次、结束级次 缺省消息接收人 消息内容 消息接收人
• 多级审核新增功能
• 可按用户组添加用户
• 可以批量审核
《K3BOS练习》
移动商务多 级审核信息
可回复
练习
在寄存入库单上新增多级审核流程,多级审核级次为3, 业务审核级次为3 练习消息配置,开始审核级次为启动审核,结束审核级次 为启动审核,主题为”寄存入库单启动审核”,消息接受 用户为administrator、ceo 练习条件跳转, 当单据头金额小于10000时,一级审核 就直接到审核结束
采购检验单
单据头.供应商
单据头.部门 单据头.业务人员 单据体1.物料代码
单据体1.单位 单据体1.收料仓库 单据体1.仓位 单据体1.数量 单据体1.数量 单据体1.单价 单据体1.金额 单据体1.生产/采购日期
寄存入库单
单据头.供应商
单据头.部门 单据头.业务人员 单据体1.物料代码
单据体1.计量单位 单据体1.收料仓库 单据体1.收料仓位 单据体1.应收数量 单据体1.实收数量 单据体1.单价 单据体1.金额 单据体1.生产/采购日期
K3 Cloud BOS演示案例
创建
无
单据类型
暂存、打印、预览、审核、反审核
审核中
无
所有字段
暂存、打印、预览、提交、反审核
已审核
审核人、审核日期
所有字段
暂存、提交、审核
重新审核 审核人、审核日期、清空
无
暂存、审核、反审核
8、 通过整单属性及单据体属性的菜单集合配置工具栏按钮; 为子单据体交货明细配置工具栏按钮如下表:
按钮名称
操作名称
1.2 业务流程
1.2.1.1 设置流程
1.2.1.2 演示案例及要求
¾ 案例数据 1) 在 BOS IDE 新建的两张单据“c 采购”、“c 入库”,并建立【c 采购→ c 入库】的单据转换规则。
K/3 Cloud V1.0 蓝海机械集团演示大纲 2) 流程管理员在蓝海柴油机本部组织中新建业务流程“c 采购流程”,建立【c 采购→ c 入库】的业
K/3 Cloud V1.0 蓝海机械集团演示大纲
表头基本信息页签:单据类型、单据编号、采购日期、供应商、采购员、单据状态 表头其他信息页签:创建人、创建日期、审核人、审核日期 表体明细信息页签:添加单据体含物料编码、物料名称、单位、数量、单价、金额、交货日期等字段 表体交货安排页签:添加子单据体,设置父分录为明细信息,含交货日期、交货数量 ¾ 演练要求 1、 通过属性窗口对整单属性、字段属性,控件属性进行规则设置,包括编码规则、单据状态、菜单集合; 2、 点击菜单栏【编辑】‐【网络控制】按钮,设置单据网络控制; 3、 点击视图栏【新建】按钮,创建单据视图; 4、 点击工具栏【发布】‐【发布到主控台】按钮,将业务单据发布到客户端主控台; 5、 登录套打设计平台,为业务单据新建套打模板;
单价 计量单 数量
金蝶K3 BOS培训—IDE
单据头 空运、陆运、海运
单据头
单据头
单据头
单据体
单据体
单据体
单据体 单据体 单据体
金额=数量*单价 金额=数量*单价
练习— BOS销售出库单
字段
单据编号 交货日期 客户 制单人 审核人 审核日期 仓库 物料代码 物料名称 单位 单价 数量 金额
类型
单据编号 日期 基础资料—客户 制单人 基础资料—用户
K/3 BOS培训—IDE
常州金蝶开发部 谷牧
Байду номын сангаас
提纲
• 开发流程 • IDE讲解 • 练习 • 一些问题处理
K/3 BOS标准开发流程
K/3 BOS
需求 分析
业务 抽象
业务对 象定义
流程 定义
定制 插件
报表 定义
部署
发布
提纲
• 开发流程 • IDE讲解 • 练习 • 一些问题处理
案例— BOS销售订单
所在页
特殊要求
单据头
单据头
单据头
单据头
单据头
单据头
单据体
单据体
单据体
单据体 单据体 单据体
金额=数量*单价 金额=数量*单价
BOS设计器演示
添加系统、子系统 BOS销售订单、BOS销售出库单定义
讲解单据、字段属性 讲解常用字段 讲解核算项目类别、核算项目和组合字段 讲解数量、单价和小数、整数字段 讲解审核人和审核日期
单据头
单据头
单据头
单据体
单据体
单据体
单据体 单据体 单据体
金额=数量*单价 金额=数量*单价
案例— BOS销售出库单
字段
单据编号 交货日期 客户 制单人 审核人 审核日期 物料代码 物料名称 单位 单价 数量 金额
K3 BOS插件调试方法
Step 1:
写好插件,并且编译成为dll.
在编写插件时,你不必从头开始,因为BOS已经为您提供了很好的工具—“BOS插件开发向导”,可以为你生成你的插件的整体代码框架,如下图:
一般情况下你打开VB,新建好工程后,插件向导会出现在你的工具栏上,
如果你的工具栏上看不到的话,可以从VB的菜单“Add-Ins” “Add-In Manager”上进行设置,因为插件向导本身是VB的插件,设置界面如下:
选中“K/3 BOS PlugIns Maker VB AddIn”,将Load Behavior中的前两项选中,如上图,这样,下次你启动VB时就可以在工具栏和菜单栏上看到插件开发向导了。
PS:如果以上都不成功,那么可能是你插件向导的组件没有正确安装或注册,在K3ERP目录下的ADDIN文件夹下找到“K3BOSPLUGINSADDIN.dll”,并用regsvr32重新注册一下即可。
Step 2:
1,在想要调试的地方打好断点,如下图:
2,设置工程的兼容性为二进制兼容,如下图:
3,按下“F5”,出现如下图,点击“确定”即可
Step 3 :
1,在BOS单据中正确配置插件,如下图:
在配置时注意区分插件的类型,如果配置了不正确的类型,那么加载单据时就会报“Automateion错误”
2,保存单据,按“F5”测试单据,在单据上执行相应的操作。
程序在你下的断点处停了下来,这样你就可以进行插件的调试了,如下图:。
第二节 K3 BOS 详解
无须开发即能实现权限管理,大 大提升个性化业务应用的安全性
P12
版权所有 ©1993-2006 金蝶软件(中国)有限公司
操作管理
主要功能
对BOS基础资料或业务单据的操 作可以进行个性化定义
客户价值
BOS基础资料或单据生成时自动 生成一系列的操作如新增、修改、 删除等,可以重新定义操作的名 称或增加新的操作内容,以满足 特定的业务需求。
审核 流程 定义
单据 流程 定义
报表 定义
插件 开发
部署
发 布
运行已定义好的功能 将已配置信息发布到应用环境中
在K/3可主灵视界活化面的的上定定可义义以检业按斤务角业单色务据配报置表已开发的功能
可视化的定义检斤业务流程
P6
版权所有 ©1993-2006 金蝶软件(中国)有限公司
K/3 BOS的三大产品特性
封装K/3附件服务,若业务对象添加了 此字段类型,其值将自动显示对应业 务对象的附件数量
P28
版权所有 ©1993-2006 金蝶软件(中国)有限公司
业务单据定义-属性定义_字段通用属性1
属性类型 外观控制
属性名 繁体名称 简体名称 英文名称 边框 边框颜色 标题宽度 标题颜色 文本颜色 字体 宽度 高度 上 左
前置字段 可录入
无
是
无
否
无
否
无
否
有字段参与组合 是
无
否
无
否
说明
单据的单据体,可以是单分录,也可 以是多分录。
提供单据编号服务,用户可以设置单 据编号规则及自动填补断号等选项。
业务对象的制单人字段,其值为当前 系统登录用户。
对K/3系统用户信息的封装,如审核人 字段。
K3BOS插件开发常见技巧
1、如何在工具栏上添加多级审核的按钮?在m_BillInterface_MenuBarInitialize事件里添加如下代码即可。
Set oTool = m_"mnuEditMultiCheck")With oTool.Caption = "多级审核".ToolTipText = "多级审核".Description = "多级审核".BeginGroup = False.ToolPicture = App.Path + "\Checker.bmp".SetPicture 0, vbButtonFaceEnd WithSet oBand = oMenuBar.BOSBands("BandToolBar")"mnuFilePrint", oTool '将菜单对象插入指定工具栏2、如何在显示一张Bos单据的同时给它赋值?要想在显示Bos单据的同时给它赋值,关键是在显示前要购建m_Billinterface的data包,这样在显示这张同据的时候,程序会解析data包,并将里面的值赋到单据界面上来。
Dim dctData As kfo.DictionaryDim datasrv as objectDim oTableinfo as objectSet DataSrv = m_"K3ClassTpl.DataSrv")DataSrv.ClassTypeID = lClassTypeID 'lClassTypeID 需要弹出单据的IDSet oTableInfo = DataSrv.TableInfoSet dctData = DataSrv.GetEmptyBill '然后将当前单据数据包中需要的数据填充到dctdata的对应字段' 在以上语句执行后,dctdata(“page2”)里只有一行表结构(即表体只有一行)'赋表头的值dctData("Page1")(oTableinfo("map")("FText"))("FFLD") = m_BillInterface.GetFieldValue("FText")dctData("Page1")(oTableinfo("map")("FDeptID"))("FFLD") = m_BillInterface.GetFieldValue("FDeptID", -1, Enu_ValueType_FFLD)dctData("Page1")(oTableinfo("map")("FDeptID"))("FFND") = m_BillInterface.GetFieldValue("FDeptID", -1, Enu_ValueType_FFND)dctData("Page1")(oTableinfo("map")("FDeptID"))("FDSP") = m_BillInterface.GetFieldValue("FDeptID", -1, Enu_ValueType_FDSP)'赋表体的值Dim oPage2 As ObjectFor i = 1 To m_BillInterface.Data("Page2").UBound - 1Set oPage2 = dctData("Page2")(1).CloneAlldctData("Page2").Add oPage2 '添加到 dcDatadctData("Page2")(i + 1)(oTableinfo("map")("FIndex2"))("FFLD") = i + 1 '更改分录号NextFor i = 1 To m_BillInterface.Data("Page2").UBound'物料 FItemIDdctData("Page2")(i)(oTableinfo("map")(" FItemID "))("FFLD") = m_BillInterface.GetFieldValue("FItemID ", i, Enu_ValueType_FFLD)dctData("Page2")(i)(oTableinfo("map")(" FItemID "))("FDSP") = m_BillInterface.GetFieldValue("FItemID ", i, Enu_ValueType_FDSP)dctData("Page2")(i)(oTableinfo("map")(" FItemID "))("FFND") = m_BillInterface.GetFieldValue("FItemID ", i, Enu_ValueType_FFND)'物料名称 fbasepropertydctData("page2")(i)(oTableinfo("map")("fbaseproperty"))("FFLD") = m_BillInterface.GetFieldValue("fbaseproperty", i, Enu_ValueType_FFLD)dctData("Page2")(i)(oTableinfo("map")("fbaseproperty"))("FDSP") = m_BillInterface.GetFieldValue("fbaseproperty", i, Enu_ValueType_FDSP)dctData("Page2")(i)(oTableinfo("map")("fbaseproperty"))("FFND") = m_BillInterface.GetFieldValue("fbaseproperty", i, Enu_ValueType_FFND)'计量单位 FUnitIDdctData("Page2")(i)(oTableinfo("map")(" FUnitID "))("FFLD") = m_BillInterface.GetFieldValue("FUnitID ", i, Enu_ValueType_FFLD)dctData("Page2")(i)(oTableinfo("map")(" FUnitID "))("FDSP") = m_BillInterface.GetFieldValue("FUnitID ", i, Enu_ValueType_FDSP)dctData("Page2")(i)(oTableinfo("map")(" FUnitID "))("FFND") = m_BillInterface.GetFieldValue("FUnitID ", i, Enu_ValueType_FFND)'数量 FQtydctData("Page2")(i)(oTableinfo("map")("FQty"))("FFLD") = m_BillInterface.GetFieldValue("fqty", i, Enu_ValueType_FFLD)NextSet obj = CreateObject("K3SingleClassBill.ClassInfoManager")With obj.datasrv = datasrv.ISCheckRight = True.Show , , , dctDataEnd With3、如何在插件中实现选单的功能?调用Bos单据m_ lClassTypeID '(原单的ClassTypeID)调用工业单据m_ lClassTypeID '(原单的ClassTypeID)4、在插件中以新增、修改和查看方式打开另一单据'********************************************'功能:显示BOS单据,显示的方式为新增、修改和浏览'参数:lClassTypeID—显示BOS单据的ID''********************************************Private Sub ShowBill(ByVal lClassTypeID As Long)Dim oDataSrv As ObjectDim oBill As ObjectOn Error GoTo err_ctrSet oDataSrv = m_"K3ClassTpl.DataSrv")oDataSrv.ClassTypeID = lClassTypeIDSet oBill = CreateObject("K3SingleClassBill.ClassInfoManager")With oBill.DataSrv = oDataSrv.ISNetControl = True.ISCheckRight = True.Show'**********************'Show 参数类型'第一个参数 Optional ByVal lID As Long = 0 ;描述修改或查看的单据ID'第二个参数 Optional ByVal bShowGroup As Boolean = False ;如是基础资料时,是否显示分组'第三个参数 Optional ByVal BillStatus As Long = Enu_BillStatus_New ;显示方式 0—查看;1—新增;2—修改'第四个参数 Optional ByVal dctData As KFO.Dictionary '单据初始值'**********************End WithSet oDataSrv = NothingSet oBill = NothingExit Suberr_ctr:Set oDataSrv = NothingSet oBill = NothingEnd Sub5、显示BOS序时簿并返回选中的值'********************************************'功能:显示BOS序时簿并返回选中的值'参数:lClassTypeID—显示BOS单据的ID''********************************************Private Function ShowListByReturn(ByVal lClassTypeID As Long) As Object Dim oDataSrv As ObjectDim objLookup As ObjectOn Error GoTo err_ctrSet oDataSrv = m_"K3ClassTpl.DataSrv")oDataSrv.ClassTypeID = lClassTypeIDIf oDataSrv.showfilter ThenSet objLookup = CreateObject("K3ClassLookUp.BillLookUp")objLookup.ClassTypeID = lClassTypeIDSet objLookup.DataSrv = oDataSrvobjLookup.LookupSet ShowListByReturn = objLookup.VectReturnEnd IfSet oDataSrv = NothingSet objLookup = NothingExit Functionerr_ctr:Set oDataSrv = NothingSet objLookup = NothingEnd Function6、如何在序事簿中得到选中行的记录集值?Dim vectSelect as kfo.vectorDim rs as adodb.recordsetSet vectSelect=m_Listinterface.GetSelectedBillInfoSet rs=m_Listinterface.datasrv.GetBillDetail(vectSelect(1)("FID"))7、将当前单据转化为另一单据,并无界面保存数据'********************************************'功能:将当前单据转化为另一单据,并无界面保存数据'参数:lClassTypeID—显示BOS单据的ID'********************************************Private Sub NoUISaveBill(ByVal lClassTypeID As Long)Dim oDataSrv As ObjectDim oTableInfo As ObjectDim oBill As ObjectDim oData As ObjectDim oSrv As ObjectDim oPage2 As ObjectDim i As LongOn Error GoTo err_ctrSet oDataSrv = m_"K3ClassTpl.DataSrv")oDataSrv.ClassTypeID = lClassTypeIDSet oTableInfo = oDataSrv.TableInfoSet oData = oDataSrv.GetEmptyBillFor i = 1 To m_BillInterface.Data("Page2").UBound - 1Set oPage2 = oData("Page2")(1).CloneAlloData("Page2").Add oPage2 '添加到 dcDataoData("Page2")(i + 1)("_-0001_FIndex2")("FFLD") = i + 1 '更改分录号NextFor i = 1 To m_BillInterface.Data("Page2").UBoundoData("Page2")(i)(oTableInfo("map")("FItemID"))("FFLD") =m_BillInterface.GetFieldValue("FItemID", i, Enu_ValueType_FFLD) oData("Page2")(i)(oTableInfo("map")("FItemID"))("FFND") =m_BillInterface.GetFieldValue("FItemID", i, Enu_ValueType_FFND) oData("Page2")(i)(oTableInfo("map")("FItemID"))("FDSP") =m_BillInterface.GetFieldValue("FItemID", i, Enu_ValueType_FDSP)NextSet oSrv = CreateObject("K3MClass.BillUpdate")i = oSrv.Save(MMTS.PropsString, oDataSrv.ClassType, oDataSrv.ClassTypeEntry,oDataSrv.TableInfo, oData, oDataSrv.dctLink)Set oDataSrv = NothingSet oBill = NothingExit Suberr_ctr:MsgBox Err.DescriptionSet oDataSrv = NothingSet oBill = NothingEnd Sub【备注】1、K/3 BOS保存方法Save的参数描述:'Public Function Save(ByVal sDsn As String, _' ByVal dctClassType As KFO.Dictionary, _' ByVal vctClassTypeEntry As KFO.Vector, _' ByVal dctTableinfo As KFO.Dictionary, _' ByRef dctData As KFO.Dictionary, _' ByVal dctLinks As KFO.Dictionary) As Long'/********************************************************************/'/*描述:单据保存'/*参数:'/*@ dctClassType KFO.Dictionary 单据整体信息模板'/*@ dctData KFO.Dictionary 单据数据包'/*@ dctLink KFO.Dictionary 选单关系模板,无选单为Nothing'/*@ dctTableInfo KFO.Dictionary 单据字段模板信息'/*@ sDsn String K/3标准数据库连接串'/*@ vctClassTypeEntry KFO.Vector 单据体模板信息'/*备注:'/********************************************************************/2、使用此方法时插件要添加MMTS。
K3BOS培训—插件
BOSTools 重点
– Function Add(ToolName As String) As BOSTool
• 与ActiveBar的Tools的Add相比
– 可以在任何的BOSTools对象中调用 – 不需要考虑ToolID重复的问题
– Sub InsertBefore(Index, oTool As BOSTool)
BillEntrys\BillEntry
分录相关信息
• 单据体对象
– 包含了和单据体相关 的属性 – 通过这些属性可以在 运行时操作单据体
– 可以通过 Add 方法来新建BOSBand 对象。
BOSTools\BOSTool
BOSTool Alignment BeginGroup Caption CaptionPosition Checked Description Default Enabled ToolName ShortcutKey Style SubBand Tag ToolID TooltipText Visible ToolPicture
– …….
• 完成无法通过 K/3 BOS 标准功能实现 的个性化需求
开发环境 • 插件开发环境
– 金蝶K/3 v11
• 必选安装客户端、K/3 BOS,推荐同时安装中间层
– Microsoft Visual Basic
• 推荐使用 v6.0 版本,并且安装 SP5
– Microsoft Windows 2000 Server(及以上版 本)
– 是 PublicNotCreatable 对象 – 在BillEvent对象中包含使用。例如:
Dim oHead As K3ClassEvents.BillHead Set oHead = BillEventObject.BillHeads(1)
金蝶K3BOS12.1简介1-6
第1章系统概述金蝶K/3 BOS(Business Operating System,业务操作系统),是一个开放的集成与应用平台,是金蝶ERP解决方案、合作伙伴解决方案以及客户定制应用的技术基础。
金蝶K/3 BOS能够为企业灵活而迅速的设计、构建、实施和执行一套随需应变的ERP系统;并能够与现有的IT基础设施无缝地协同运作;为不同行业不同企业的不同的应用阶段,提供随需应变的ERP解决方案。
企业用户可以通过K/3 BOS根据自己的需要方便的进行业务配置,也可以通过K/3 BOS高效的集成开发工具来进行个性化、行业化定制,使K/3持续满足客户的需要,打造企业客户随需应变的ERP系统,为客户带来持久的信息化投资收益。
1.1 关于本系统K/3 BOS关注于客户应用中业务逻辑部分:业务对象设计、界面定义、流程定义、业务规则设计、报表设计、部署等环节,同时允许通过插件开发来扩展K/3 BOS现有的功能,提供K/3 BOS SDK来使K/3 BOS开发的业务对象与K/3业务系统进行个性化集成。
在V10.1及其之后的版本都提供了多语言支持,满足国际化应用的需要。
K/3 BOS V12.1在业务系统开发的完整性、产品的易用性等方面进行了重大改进,使其更能适应客户化开发的需要,标准版V12.1主要增加或完善了以下主要功能:⏹支持工作流⏹支持审批流⏹实现office集成,支持邮件审批⏹支持单据体联动⏹EBOS支持单据转换⏹支持汇率类型设置及通过action自动取值⏹业务操作消息支持自定义变量1.1.1 K/3 BOS完整应用流程K/3 BOS关注业务系统开发中最关键的部分,提供了完整的开发流程,如图1-1:图1-1⏹业务对象定义:提供单据和基础资料定义功能,方便的提供了基础资料、权限、网络控制、业务规则、消息、动作、操作、操作消息、操作日志以及各种业务字段等的定义功能,可快速的满足企业实际应用的需要。
同时在定义好业务对象后,也完成对应序时簿的定义;⏹业务服务定义:提供扩展服务定义和配置功能,通过对业务规则进行抽象后生成扩展服务,业务对象可通过配置引用,从而达到快速构建复杂单据的目的;⏹流程定义:提供多级审核流程定义、单据转换定义等功能,方便的多级审核控制功能,单据转换定义功能打通了新老单之间的流程控制,能根据客户的实际情况对K/3原有流程进行K/3 BOS重新定义来满足实际业务需要;⏹定制插件:K/3 BOS集成开发平台抽象了许多业务规则,能通过简单的配置满足实际业务需要,在此基础上,通过插件开发接口、插件调试工具、插件开发向导等方式,为客户更丰富的个性化功能开发提供支撑,满足产品快速开发、可扩展性特点;⏹报表定义:提供交叉分析报表、直接SQL报表、万能报表和报表设计分析平台功能四类报表,客户根据实际情况选择自定义报表类型来实现业务报表需求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
K3B O S样例代码演示说明K/3 BOS样例代码演示说明金蝶软件(中国)有限公司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 如果单据没有生成凭证,在序时簿上单击凭证,依据单据内容汇总生成一张凭证 96.4 如果选中的第一条单据已经生成凭证,调用凭证查看界面,其打开模式为只读。
(10)七、选单和反写 (10)7.1 增加一条选单线路,[应收合同]-〉[产品入库通知单]的钩稽选单,具体参数设置请查看BOS演示功能.单据转换流程. [应收合同]-〉[产品入库通知单]; (10)7.2 增加一条选单线路,[销售订单]-〉[产品入库通知单]的钩稽选单,具体参数设置请查看BOS演示功能.单据转换流程. [销售订单]-〉[产品入库通知单]; (10)7.3 增加一条选单线路, [产品入库通知单]->[ (老)产品入库]的钩稽选单,具体参数设置请查看BOS演示功能.单据转换流程. [产品入库通知单]->[(老)产品入库]; (10)八、打包 (11)8.1、通过BOS打包工具完成对应信息的发布 (11)8.2、无法通过打包工具完成的,提供对应SQL (11)附录:BOS高级应用 (12)版本:K/3 BOS V10.4数据库:K/3BOS演示帐套一、需求1 总体需求:客户个性化需求:在产品入库单之前增加一个[产品入库通知]的流程,该流程要求能从应收合同或销售订单关联生成,并最终能在产品入库单反映其来源合同和订单,该流程有凭证需求。
2 需求分解2.1 通过单据界面定义一张[产品入库通知单]2.2 通过Action定义常用单位、常用单位数量、基本单位数量、单价、金额、汇总金额等一系列单据动作。
2.3 通过[多极审核]流程完成单据审核操作。
2.4 通过序时簿菜单[单据变更]完成单据审核后允许变更的功能。
2.5 通过序时簿菜单[凭证]完成凭证生成和察看功能2.6 通过[单据流程转换]完成应收合同->销售入库通知单、销售订单->销售入库通知单、生产通知单->销售入库通知单的业务流程转换定义;2.7 通过单据上增加菜单[合同察看]完成合同序时簿和单据调用2.8 通过发布向导完成发布功能二、单据界面定义功能1、单据类型编码为:3000000002、单据由单据头和单据体两部分组成,对应得数据表为:t_BOSShow和t_BOSShowEntry3、单据头的显示字段存储在页签中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:update ICClasstableinfo set FFilter='FSPGroupID = (SELECT FSPGroupID FROM t_Stock WHERE FItemID = GetFldValue(FDCStockID,1))' where FKey='FDCSPID' and FClassTypeID=3000000003.9根据输入的物料、仓库、仓位过滤批次号时。
1从[常规字段库]拖入1个[批次]类型字段至单据体;2 在微软查询分析器中输入如下SQL:update ICClassTableinfo set FFilter='(FItemID=GetFldValue(FItemID,1) and FStockID=GetFldValue(FDCStockID,1) andFStockplaceID=GetFldValue(FDCSPID,1))' where FKey='FBatchNo' and FClassTypeID=3000000003.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的操作更新单据头[本位币总额]。