金蝶 - k3 - BOS开发百问百答

更新时间:2024-03-11 11:33:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

金蝶 k3 BOS开发百问百答

一、基础资料篇

单据自定义无法看到bos定义的基础资料

在调出基础资料序时簿时,过滤出需要的基础资料 插件实现过滤从过去时间到现在的所有基础资料 查找某个物料在某个仓库中的数量和精度 插件中K3Lib.GetStockQty函数的使用

二、业务单据篇

K3BOS单据(新)中的数量字段怎样才能控制到两个小数 单据上显示各级审核人和审核日期

多层的BOS单据,能否将人员权限按层划分 自动启动审核和自动选单

只能删除和修改本人制作的单据。 获取Bos单据单据体已录信息的条数

插件中获取单据上控件的位置、尺寸信息 关联自定义核算项目

是否允许插件自定义查询条件 填充分录行

在Bos单据按F7查询供应商信息,按F9查询采购价格管理信息。 如何可以取到单据编号的组件

是否可以直接在数据库表中直接修改Bos单据中的字段类型 锁定单据字段

删除符合条件的单据 动态过滤基础资料 单据保存出错

标准序时簿过滤条件对话框(和K3 老单据一样) 如何再次添加新插件

单据分录数达到 3000 条,单据保存会不会出错 文本字段录入完毕回车不跳转 不能实现记录选择。 如何删除空行。 数量精度和单价精度 计算公式如何定义 批次过滤

应收应付系统合同是否能超额执行

基础资料录入代码时不马上显示相关的列表 在插件中以新增、修改和查看方式打开另一单据 显示BOS序时簿并返回选中的值

将当前单据转化为另一单据,并无界面保存数据 隐藏选单时序时簿不需的菜单和工具栏

在单据体中让下一条分录自动携带上一条分录的数据

在Bos插件中如何处理隐身的二次登录 如何在插件中获取当前系统字符连接串 BOS单据插件里取分录的合计值

带有辅助属性的字段的值更新事件中调用辅助属性,计算公式运行有误 事务处理

基本单位数量在录入完数量后仍然为空 10.1 单据插件中如何向单据体逐行插入数据 BOS单据选单返回时自动在表体添加一行分录 只有工具条及菜单栏的浏览数据窗口 K3Bos表体如何设置合计

收款单的套打设置里面怎么取到通过Bos自定义的字段 如何隐藏Bos单据中的层 如何调用打印功能

BOS 单据如何控制表体行数

如何在Bos单据中引用自定义核算项目

关于核算项目字段[相关属性]为核算项目类型的值更新携带变通处理方案 如何调用BOS单据序事簿的刷新事件

关于因网络控制导致BOS单据无法并发运行的问题的解决办法 关于插件取值报类型不匹配的答复31 如何实现在Bos单据中物料多选31 如何实现在Bos单据中物料多选32

如何在Bos单据的工具栏上显示“复制”按钮 32 bos分录值合计33

BOS单据物料字段信息没显示全33 BOS颜色控制33

从BOS如何能调用VB控件(MSCOMM) 34

序时簿工具栏新增一个按钮,如何编写插件实现审核后对单据修改功能 34 销售订单下推生成BOS单据,无法制定流程 35 BOS序事簿插件调用数据库35 客户端单据打不开36

BOS老单据,新增核算项目,增加自定义字段相关属性为部门,在BOSIDE中值更新事件中无法更新指定部门=自定义核算项目.部门 36

关于如何在销售发票业务审核后仍能修改摘要字段的做法 调拨单中的调拨类型无法单据中显示

序时簿查件分录中,如何通过插件取其中一个时间字段。 新单中如何写删行的函数

如何自定义金额字段的“小数位长度”

新单增加的单据如何携带到老单据(典型问题) 新单据如何从Excel批量引入单元格数据

新增bos单据怎么会无法保存.提示拒绝的权限.

设定的实数数量精度在参与值更新事件计算时没有精度控制 大文本字段怎么就能录入这么几个字符,有什么方案没有? BOS单据自定义后新增或查询反映太慢 生产领料单单据体上无法自定义成本对象代码

(工业老单据)生产任务单批量维护中加入BOS开发字段 如何在修改单据的时候把制单人刷新为修改人? 复杂的计算Action应该如何处理?

为什在中文输入的时候会出现清除已输入内容,并跳出当前输入框的问题? 通过修改元数据实现动态过滤基础资料

10.4 版本以前手动删除已发布到主控台的功能

如何删除发布到主控台的功能以不存在的单据或者报表 如何设置单据体字段的字体颜色和背景色

在查看模式下,怎样修改某个字段(比如销售普通发票-摘要修改)的值并保存 V10.3版本实现 “审核人和制单人不可为同一人” 如何在插件中调用BOS基础资料的F7功能 如何在插件中调用BOS基础资料的F7功能 如何单据插件中实现基础资料F7 动态过滤

如何在插件中响应BOS控件KDInputTool的事件 三、多级审核篇 批量审核。

设置为一级审核的Bos单据反审核后不能修改。

能否使administrator对任何人审核的BOS单据进行反审核。 实现多级审批同时需要更改审批的数量与单价。 BOS字段多级审核后可以修改。 有关多级审核的问题。 中间层的多级审核事件。 BOS审核权限

不同级次驳回功能存在问题,审核流程不流畅

在打开单据的情况下点击审核菜单,显示 XX单据审核成功,但单据并未立即切换到字段锁定状态,即此时单据内容(如分录中的各项信息等)均可修改,关闭单据后再次打开,正常。反审核也如此。59

四、单据转换流程篇

新单推老单不能实现钩稽功能 新单推老单不能实现钩稽功能

未审核的老单据不能下推Bos单据 未审核的老单据不能下推Bos单据

自定义的bos单据无法下推生成销售费用发票 无物料编码时,下推报错 下标越界

下推发货通知单的时候,所有自定义字段中的文本字段在发货通知单都变成了0 10.2sp1 钩稽后设过滤条件不起作用 关联复制

老单下推新单过滤条件的设定

在老单据中选取新单如何选取多张单据

BOS单据下推到外购入库单时无法选择红字单据

如何用BOS单据体字段推成目的单据(老单)的单据头字段 如何使Bos单据表体的字段对应到老单的表头上的字段

单价和金额携带不过来

Bos单据如何同时选择两张老工业单据

新单下老单,如果是钩稽关系,怎么判断新单是否已关闭

BOS新单据到老供应链单据的转换流程,在新单据上可以关闭吗

付款单选单关联其他应付单时无法携带其他应付单上的自定义核算项目信息 单据体的每条分录如何可以对应多个源单类型

新老单据在流程转换的时候为什么出现提示“请设置关联原单内码保存”? 单据下推怎么会出现“数据溢出”的问题

老单(退料通知单)下推生成BOS自定义意据时,无法实现勾稽关系!

老单(工序计划单)与BOS开发新单据建立关联关系(钩稽,关联复制)后错误

通过BOS单据做关联,由开发的BOS单据(其他费用单)关联生产其他费用单,提示:付款计划的金额等于单据金额。即和现有的K/3 系统单据业务相冲突的解决方法13 销售订单下推到生产任务单,可否一次选择多条分录生成多张生产任务单 五、套打篇

如何进行BOS单据打印次数控制

应收应付销售发票如何携带出地址,其他系统的信息可以类似处理 BOS单据套打设置问题的重复设置问题 15 如何进行BOS单据打印次数控制16

应收应付销售发票如何携带出地址,其他系统的信息可以类似处理 16 BOS单据套打设置问题的重复设置问题 17 六、报表篇 17 交叉分析报表17 直接SQL报表18

关于直接SQL报表的支持长日期的变通解决方案 18

为什么bos中发布交叉分析报表与二次开发的报表的小数点设置不起作用? 18 报表分析平台中,自己做的报表如何发布K3 中打开,或者有无此项功能?19 七、部署发布篇 20

发布功能的名称如何更改20 编码规则丢失20

怎样将旧单改造数据结构的动作打包到Bos安装包中20 中间层上发布插件后,客户端的插件dll文件没有被更新 21 发布的BOS单据如何删除21

关于BOS发布的单据和报表删除工具的问题 22 Bos单据发布后主控台没有显示23 BOS部署客户端智能升级失败23

打包应用程序是否有类似的InstallShield的脚本参考 24 如何将应收应付BOS单据修改的内容打包成安装程序 24 BOS生成的部署文件需要部署到所有的客户端 25 如何获取软件特征码25

布署安装包时提示BuildFile无效过程错误或未找到路径错误25 八、其他 27

关于BOS的加密问题

在使用citrix客户端时,调用出BOS过滤界面后,选择下拉列表后出错 27 关于Bos已过期问题的处理2

中间层插件

BOS插件调用工资系统汇总表28

bos插件中如果发生任何错误,在k3界面中不会出现任何提示29 以Administrator主控台设置刷新其他用户主控台设置 29 系统帮助文件的挂靠 图纸管理 外贸报价单

如何在单据中做一个可以选择,又可以随意录入的字段 31 如何将BOS单据的税率携带到下游老单据 31

客户的车间管理的单据与我们K310.2的差异很大,可否用Bos开发32 修改应收应付模板

客户在正式上线使用时,需如何购买站点数 33 在K/3 BOS中能否打印一张复杂的单据33 恢复K/3 BOS插件开发向导菜单按钮34 438:对象不支持属性或方法34

主控台中,Bos单据可以查询,但不能新增 35 Bos自动关闭

BOS在主控台组件中所属的系统标36

在插件中如何得到序事簿界面上所有数据 36

客户端无法打开BOS设计平台开发的业务单据 36 SQL自动停止 37

防火墙可能会对K/3的接口造成中断的影响37 如何在插件中获取某个单元格的锁定状态 38

beforesendmessage事件在什么状态下触发的? 38

工业单据(老单据)的客户端插件为何无法起作用? 39 工业单据(老单据)的中间层插件为何无法起作用? 39 如何为工业单据(老单据)的开发插件? 41

------------------------------------------------------

百问回答:

一、基础资料篇 【摘要】:单据自定义无法看到bos 定义的基础资料 【版本】:K3v10.2SP2

问题描述: 在单据自定义中增加自定义字段时,需要选择用 bos 定义的基础资料,如何 设置。单据自定义的高级页签上选择基础资料下拉框中无法看到 bos 定义 的基础资料;跟踪 Sql,在 ICChatBillTitle 中有自定义字段属性的相关

设置,如 FTableName、FLookUpClassID 等字段。把记录改成 BOS 基础资料 对应的信息,但是无法生效。 解决方法: 在10.2里工业单据自定义工具不能使用BOS单据的基础资料,建议使用核算项目来定义

基础资料,即可在工业单据中使用,也可在BOS单据中使用。

【摘要】:在调出基础资料序时簿时,过滤出需要的基础资料 【版本】:K3v10.2SP1&v10.2SP1&v10.3

问题描述: 能否对 BOS 基础资料做过滤,即:在调出基础资料序时簿时,过滤出需要 的基础资料。

解决方法: 1、在ICClasstypeentry的FFilter字段增加过虑条件; 2、在ICClassTableInfo的FFilter中填写条件。

下例能完成只显示“01”组的物料,FFilter的值应是“x2.FNumber like '01.%'” SELECT t1.FItemID FROM t_Item t1 with(index (uk_Item2)) LEFT JOIN t_ICItem x2 ON t1.FItemID = x2.FItemID WHERE FItemClassID = 4 AND t1.FDetail=1 AND (x2.FNumber like '01.%') AND t1.FDeleteD=0 ORDER BY t1.FNumber

【摘要】:插件实现过滤从过去时间到现在的所有基础资料 【版本】:K3 V10.3 以上

问题描述: 如何实现在打开 BOS 基础资料序时薄时仅显示从过去某一时间到现在的所 有基础资料? 客户化开发技术资料——K/3 BOS开发百问百答

解决方法: 假设有个基础资料,其为 基础资料200000003 表头表为 t_BOS200000003 其表头上有个日期字段FDate,

由于基础资料中数据非常多,现想在序时簿上展示2008-01-07到现在的基础资料,则主 要插件代码如下:

Private Sub m_BaseListInterface_MenuBarInitialize(ByVal oMenuBar As K3ClassEvents.MenuBar) Dim dct As Dictionary

Set dct = New Dictionary

dct(\ t_BOS200000003.FDate <= \

Set m_BaseListInterface.BrowseCtl.ExternalCondition = dct

Set dct = Nothing End Sub

【摘要】:查找某个物料在某个仓库中的数量和精度 【版本】:K3 V11.0 多语言及以下版本 问题描 述:

如何查找某个物料在某个仓库中的数量和精度? 解决方 法:

ICInventory 为实仓库 POInventory为虚仓库 StockID 仓库ID ItemID为物料ID

select

sum(Round(t1.FQty,t2.FQtyDecimal)),SUM(Round(ISNULL(t1.FSecQty,0),t2.FQtyDecimal)) AS FSecQty from ICInventory t1 INNER join t_IcItem t2 ON t1.FItemID = t2.FItemID INNER JOIN t_Stock ts ON t1.FStockID = ts.FItemID WHERE t1.FStockID=\ AND t1.FItemID=\

【摘要】:插件中K3Lib.GetStockQty 函数的使用 【版本】: K3 V11.0 多语言及以下版本

问题描述: 如何查找某个物料在某个仓库中的数量和精度? 解决方法: GetStockQty这个方法是不分虚仓和实仓。

dctParams应该这样封装:

Dim dctParas As KFO.Dictionary Dim lngQtyDecimal As Long

dctParas(\= 该物料的辅助属性 ID 号 '在表 ICItemAuxProp 中可以查客户化开发技术资料——K/3 BOS开发百问百答 到

dctParas(\该项会在函数 GetStockQty 调用后,赋上该物料的 数量精度,即物料的数量含有多少位小数位

m_BillInterface.K3Lib.GetStockQty lngItemID,lngUnitID,dctParas

lngQtyDecimal = val(dctParas(\ 客户化开发技术资料——K/3BOS开发百问百答

客户化开发技术资料——K/3 BOS开发百问百答

二、业务单据篇 【摘要】:K3BOS单据(新)中的数量字段怎样才能控制到两个小数 【版本】:K3v10.2SP1&vSP2&v10.3

问题描述: 用 K3BOS 设计的单据中的数量字段小数位默认是 10 位,怎样才能控制到两

个小数?

解决方法: 通过以下方式增加字段时:

物料->计量单位->数量,数量将按照物料定义的精度来处理,否则缺省按照十 位处理,如果需要定义字段为某个固定的精度,可以使用小数字段,通过该字 段的小数位属性来控制

【摘要】:单据上显示各级审核人和审核日期

【版本】:K3v10.2SP2

问题描述: 多级审核栏目不分成第二个 Label,而是在单据上有每级审核人和日期显 示。

解决方法: 如果用系统的多级审核流程就会有多级审核的业签。可以在单据上增加多几个 审核人、 审核日期, 在单据插件的AfterMultiCheck 事件中反写单据上的审核人、 审核日期。

【摘要】:多层的BOS单据,能否将人员权限按层划分 【版本】:K3v10.2SP1&K3v10.2SP2&K3v10.3

问题描述: 直销单据分为采购和销售两个页,采购内勤组的成员只能看到采购页而不 能看到销售页,而销售内勤组的成员只能看到销售页而不能看到采购页 客户化开发技术资料——K/3 BOS开发百问百答

解决方法: Bos 单据不能按层进行授权,可以通过数据授权和字段授权的方式变通实现此

类需求.

【摘要】:自动启动审核和自动选单 【版本】:K3v10.2SP

问题描述: 打开一个新单据的同时,能自动弹出选单的界面,同时显示要选择的单据。 10.2 SP1 在单据保存后,自动启动审核。如何在插件中调用“选单”和“启 动审核”的 BOS 的内部处理事件。 解决方法: 1、 自动启动审核: 在AfterSave事件中使用以下代码 Dim bStatus As Boolean bStatus =

m_BillInterface.MultiCheckMgr.MultiCheckBill(m_BillInterface.Data(\ 2、 选单调用: BOS单据

m_BillInterface.BillCtl.DoSelBill lClassTypeID '(原单的ClassTypeID) 工业单据

【摘要】:只能删除和修改本人制作的单据。 【版本】:K3v10.2SP1

问题描述: 如果实现只能删除和修改本人制作的单据.

解决方法: Private Sub m_ListInterface_MenuBarClick(ByVal BOSTool As K3ClassEvents.BOSTool, Cancel As Boolean) Dim lBillerID As Long Dim strSQL As String

Select Case BOSTool.ToolName

Case \

strSQL = \(当前单据制单人) From t_Sales(当前单据主 表名) Where FID(当前单据主键子段)=\ & m_ListInterface.GetCurrentSelRowInfo(\

lBillerID = m_ListInterface.K3Lib.GetData(strSQL)(0) If m_ListInterface.K3Lib.User.UserID <> lBillerID Then

MsgBox \只能删除和修改本人的单据\提示\客户化开发技术资料——K/3 BOS开发百问百答

Cancel = True End If Case Else End Select End Sub

【摘要】:获取Bos单据单据体已录信息的条数 【版本】:K3v10.2SP1

问题描述: 写插件时,如何得到单据体的已录信息的条数 解决方法: 单据体的已录的条数用下面的方法可得到。 m_BillInterface.Data(\

注意:最后一条可能是空记录,要判断(if 分录关键子段或必填字段 <>\。

【摘要】:插件中获取单据上控件的位置、尺寸信息 【版本】:K3v10.2SP1

问题描述: 插件开发中, 如何获取BOS 单据上某个控件的位置、尺寸信息?能否用代 码动态修改它们的位置?

解决方法: 在K/3BOS插件中获取控件的位置的方法:

m_BillInterface.BillHeads(1).BOSFields(\,其中“FDate”是控件 的名称,也可以用它来改变控件的位置。

【摘要】:关联自定义核算项目 【版本】:K3v10.2SP2 客户化开发技术资料——K/3 BOS开发百问百答

问题描述: 新建的 BOS单或原有的 BOS 单上如何关联自定义的核算项目基础资料 解决方法: 修改ICClassTableInfo中

FLookupClassID,FSRCFieldName,FSRCTableName,FDSPFieldName,FFNDFieldName。

【摘要】:是否允许插件自定义查询条件 【版本】:K3v10.2SP2

问题描述: 需要在序事簿查询过程,根据人员角色不同,自动将所能看到的数据进行 过滤,请问此类问题怎么实现,BOS序事簿是否允许插件自定义查询条件

解决方法: 可以通过在序事簿插件的show中直接修改ListFilterString属性的值来自定义查询条件. 示例如下:

With m_listinterface

If len(.listfilterstring)>0 then

.listfilterstring=.listfilterstring & “ and FDeptID=984” Else

.listfilterstring=” FDeptID=984” End if End with

【摘要】:填充分录行 【版本】:K3v10.2SP2

问题描述: 一张单据有几百条分录, 每条分录数据都是通过插件填入的.如果使用 setFieldValue 方法一个字段一个字段填入, 速度非常慢. 是不是有更好 的方法填充行数据

解决方法: 可以试试用insertnewrowandfill方法插入一新行。 示例如下:

'批量插入行数据 Dim i As Long For i = 1 To 10

m_BillInterface.InsertNewRowAndFill 2, i, \ \ Next

需要注意的是查找类型的字段只要给出编码即可,基础资料属性(如物料名称等)不客户化开发技术资料——K/3 BOS开发百问百答

需要赋值。

【摘要】:在 Bos 单据按 F7 查询供应商信息,按 F9 查询采购价格管理信息。 【版本】:K3v10.2SP1&PT0704

问题描述: 在新增采购申请单时,在分录中的供应商按 F7 能选择供应商信息,按 F9 能 选到采购价格管理信息,如何在新单中也添加一个供应商,也实现上述功能 解决方法: 使用MenuBarClick事件实现F7 1、 BeginEdit事件

If dct(\要处理字段FKey“ Then

m_BillInterface.MenuBar.BOSTools(\ End If

2、 MenuBarClick

If BOSTool.ToolName = \ m_BillInterface.GetActiveField dct, col, row If dct(\

m_BillInterface.BillCtl.DoSelBill 200000104 '(原单的ClassTypeID) End If End If

3、 采购价格管理的调用接口,结合上述所说使用:

Dim obj As Object

Set obj = CreateObject(\ With obj

.CallByBill = True

.SelICItemID = '当前物料行内码 .CategoryBySupply = false .SelSupID = '供应商内码 .PriceType = 1 .Show 1 End With

Set obj = Nothing

【摘要】:如何可以取到单据编号的组件 【版本】:K3v10.2SP2 客户化开发技术资料——K/3 BOS开发百问百答

问题描述: 导入一张组装单, 组装单是一张BOS单据。 得到单据编号的组件是怎样的? 接口是什么?

解决方法: Set obj = CreateObject(\

GetThisBillNo = obj.GetBillNo(sDsn, ClassID, sKey, bGetDeleteNo, bSave) 接口描述:

'/*描述:得到一种业务类型的编号 '/*参数:

'/*@ bGetDeleteNo 是否获取空号,这种单据设置了删除的空号被保存才有效,已经无 效,只是保持兼容调用接口

'/*@ bSave 是否需要修改新的最大单据号 '/*@ ClassID 类型 '/*@ sDsn 连接串信息

'/*@ sKey 需要处理的关键字。

【摘要】:是否可以直接在数据库表中直接修改 Bos 单据中的字段类型 【版本】:K3v10.2SP1&K3v10.2Sp2&K3v10.3

问题描述: 在 Bos 单据中加入一备注字段,并保存了数据,可否将备注字段改为文本 字段,保证数据不丢失

解决方法: 可以修改表Icclasstableinfo的FCtlType字段,示例如下。

update icclasstableinfo set fcapti,fcapti,fcapti,FKey='FText1',FFieldName='FText1',FCtlType=1 where fid=8438

update icclasstype set fid=fid ----单据的时间梭

注意在后面更新 icclasstableinfo 表来修改单据,一定要更新一下 icclasstype,否则 前面的更新在Bos设计环境反映不出来更新。

【摘要】:锁定单据字段 【版本】:K3v10.2SP1&K3v10.2Sp2&K3v10.3

问题描述: 如何在插件中锁定单据字段 客户化开发技术资料——K/3 BOS开发百问百答

解决方法: 可以用lockcell方法锁定,如锁定单据头币别:

Set dcttemp = m_BillInterface.GetFieldInfoByKey(\

If Not dcttemp Is Nothing Then m_BillInterface.BillCtl.LockCell dcttemp, -1, True 第二个参数为分录行号,当为-1时锁定所有行。

注意:设计状态没有设计为\锁定\的字段,才可以在运行状态锁定或解锁。

【摘要】:删除符合条件的单据 【版本】:K3v10.2SP1&K3v10.2Sp2&K3v10.3

问题描述: 符合一定条件的单据不允许删除。是否有删除前的事件可以调用,或者其 他方法

解决方法: 可以在中间层插件的Beforedel事件中写代码实现。

【摘要】:动态过滤基础资料 【版本】:K3v10.2SP1&K3v10.2Sp2&K3v10.3

问题描述: BOS 新建的单据上的添加基础资料时,能否给定某中过滤条件?比如:选择 某个物料资料,要求只显示指定的某个部门的物料资料,其它的物料不显 示,这种情况能否实现。

解决方法: 可以在单据的Change事件中写如下代码来实现动态过滤条件。 If dct(“FKey”)=”FDeptID” then

m_BillInterface.DataSrv.TableInfo(m_BillInterface.TableInfo (\ & m_BillInterface.getfieldvalue(“FDeptID” ) & “’” End if

注意:上面的代码不支持调试,如果调试,发现赋值为空,没有将过滤条件赋值成功,但 编译后运行没有问题。

客户化开发技术资料——K/3 BOS开发百问百答

【摘要】:单据保存出错 【版本】:K3v10.2SP2

问题描述: 新增 BOS 单据,单据的表设为 poRequest,

单据体的表设为 poRequestEntry,然后保存,出现如下提示错误信息: “索 引’IX_PoRequest_FBillNo’依赖于列’FBillNo’”,能删除此索引吗?

解决方法: 这是 10.2 的一个设计不合理的地方,10.3 没有这个问题了。可以先删除,设计成功后 加上就好了。

大力水手 2009-08-01 21:36:29.0 【摘要】:标准序时簿过滤条件对话框(和K3老单据一样) 【版本】:K3v10.2SP1

问题描述: BOS 单据的序时簿过滤条件对话框中是否可以像标准 K3 单据那样,有默认 的“本期”,“红蓝字”等过滤条件?

解决方法: 可以在数据库里写执行如下代码实现:(下面例子是添加审核的过滤条件) Update icclasstableinfo set flock=-1,fconditionext=1000000 where fclasstypeid=300000000 and fkey='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开始。

【摘要】:如何再次添加新插件 【版本】:K3v10.2 及以后版本

问题描述: 在投料变更单的菜单上加入一个菜单项,需要插入一个插件,但投料变更 单上已经有一个插件了,如何才可以再插入一个插件 客户化开发技术资料——K/3BOS开发百问百答

解决方法: 点插件管理中的按钮,可以通过浏览来选择自定义插件,并选择多个插件对象,BOS允

许多个插件同时存在。

【摘要】:单据分录数达到 3000 条,单据保存会不会出错 【版本】:K3v10.2SP2

问题描述: 因为业务需要,可能一张单据的分录数达到 2000-3000 条,这样的 BOS开 发的单据,保存时是否有问题?参考:10.0 的设备管理中,录入 50-60 条分 录,保存时就会有问题出现。

解决方法: 这个问题是 10.0 的 bug,目前 K3BOS 单据最大行数设定是 2000 行。如确实有需求可放

开相应限制。但单据体字段过多,性能会受到一些影响,建议最好不要超过这个限制。

【摘要】:批次过滤 【版本】:K3v10.2SP1&K3v10.2SP2&K3v10.3

问题描述: 关于批次号分别按输入的物料、仓库、仓位的过滤批次的范例代码。 解决方法: 环境说明: 物料:字段名称FItemID 仓库:字段名称FDCStockID 仓位:字段名称FDCSPID 批次号:字段名称FBatchNo

1、 录入仓库后,依据仓库的仓库组过滤仓位。

update ICClasstableinfo set FFilter='FSPGroupID = (SELECT FSPGroupID FROM t_Stock WHERE FItemID = GetFldValue(FDCStockID,1))'

where FKey='FDCSPID' and FClassTypeID=300000000 2、 根据输入的物料、仓库、仓位过滤过率批次号时。

update ICClassTableinfo set FFilter='(FItemID=GetFldValue(FItemID,1)

and FStockID=GetFldValue(FDCStockID,1) and 客户化开发技术资料——K/3 BOS开发百问百答

FStockplaceID=GetFldValue(FDCSPID,1))' where FKey='FBatchNo' and FClassTypeID=300000000 3、 更新BOS 单据缓存 UPdate ICClasstype set fid=fid

【摘要】:应收应付系统合同是否能超额执行 【版本】:K3v10.1

问题描述: 应收应付系统合同是否能超额执行。

解决方法: 10.1应收应付的合同的反写由应收应付自行控制,且并为提供相应参数控制。10.2应

收应付合同该由BOS实现,且提供了[合同是否允许超额执行]的系统参数选项。

【摘要】:基础资料录入代码时不马上显示相关的列表 【版本】:K3v10.2SP2+K3v10.3

问题描述: BOS 单据引用基础资料时,能否有设置,使在录入代码时不马上显示相关的 列表,而是在回车之后才判断是否存在代码,因为某个基础资料太大了, 输入一个字母要长时间才能够反映。

解决方法: 可以在单据录入界面选项中选择禁止下拉列表自动显示。 客户化开发技术资料——K/3 BOS开发百问百答

【摘要】:在插件中以新增、修改和查看方式打开另一单据 【版本】:K/3BOS 所有版本

问题描述: 在插件中以新增、修改和查看方式打开另一单据 解决方法: ******************************************** '功能:显示BOS单据,显示的方式为新增、修改和浏览 '参数:lClassTypeID—显示BOS单据的ID

'******************************************** Private Sub ShowBill(ByVal lClassTypeID As Long) Dim oDataSrv As Object Dim oBill As Object On Error GoTo err_ctr Set oDataSrv =

m_BillInterface.K3Lib.CreateK/3Object(\ oDataSrv.ClassTypeID = lClassTypeID

Set oBill = CreateObject(\ 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 With

Set oDataSrv = Nothing Set oBill = Nothing Exit Sub err_ctr:

Set oDataSrv = Nothing Set oBill = Nothing End Sub

【摘要】:显示BOS序时簿并返回选中的值 【版本】:K/3BOS 所有版本 客户化开发技术资料——K/3 BOS开发百问百答

问题描述: 请问在插件中怎样显示BOS 序时簿并返回选中的值。 解决方法: '******************************************** '功能:显示BOS序时簿并返回选中的值 '参数:lClassTypeID—显示BOS单据的ID

'********************************************

Private Function ShowListByReturn(ByVal lClassTypeID As Long) As Object Dim oDataSrv As Object Dim objLookup As Object On Error GoTo err_ctr Set oDataSrv =

m_BillInterface.K3Lib.CreateK3Object(\ oDataSrv.ClassTypeID = lClassTypeID If oDataSrv.showfilter Then

Set objLookup = CreateObject(\ objLookup.ClassTypeID = lClassTypeID Set objLookup.DataSrv = oDataSrv objLookup.Lookup

Set ShowListByReturn = objLookup.VectReturn End If

Set oDataSrv = Nothing Set objLookup = Nothing

Exit Function err_ctr:

Set oDataSrv = Nothing Set objLookup = Nothing End Function

【摘要】:将当前单据转化为另一单据,并无界面保存数据 【版本】:K/3BOS 所有版本

问题描述: 将当前单据转化为另一单据,并无界面保存数据。 解决方法: '******************************************** '功能:将当前单据转化为另一单据,并无界面保存数据 '参数:lClassTypeID—显示BOS单据的ID

'******************************************** Private Sub NoUISaveBill(ByVal lClassTypeID As Long) Dim oDataSrv As Object Dim oTableInfo As Object Dim oBill As Object Dim oData As Object

Dim oSrv As Object 客户化开发技术资料——K/3 BOS开发百问百答

Dim oPage2 As Object Dim i As Long

On Error GoTo err_ctr Set oDataSrv =

m_BillInterface.K3Lib.CreateK3Object(\ oDataSrv.ClassTypeID = lClassTypeID Set oTableInfo = oDataSrv.TableInfo Set oData = oDataSrv.GetEmptyBill

For i = 1 To m_BillInterface.Data(\ Set oPage2 = oData(\

oData(\ '添加到 dcData

oData(\更改分录号 Next

For i = 1 To m_BillInterface.Data(\

oData(\ m_BillInterface.GetFieldValue(\ oData(\ m_BillInterface.GetFieldValue(\ oData(\ m_BillInterface.GetFieldValue(\ Next

Set oSrv = CreateObject(\ i = oSrv.Save(MMTS.PropsString, oDataSrv.ClassType,

oDataSrv.ClassTypeEntry, oDataSrv.TableInfo, oData, oDataSrv.dctLink) Set oDataSrv = Nothing Set oBill = Nothing Exit Sub err_ctr:

MsgBox Err.Description Set oDataSrv = Nothing Set oBill = Nothing End 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 单据整体信息模板 客户化开发技术资料——K/3BOS开发百问百答

'/*@ dctData KFO.Dictionary 单据数据包

'/*@ dctLink KFO.Dictionary 选单关系模板,无选单为Nothing '/*@ dctTableInfo KFO.Dictionary 单据字段模板信息 '/*@ sDsn String K/3标准数据库连接串

'/*@ vctClassTypeEntry KFO.Vector 单据体模板信息 '/*备注:

'/********************************************************************/ 2、使用此方法时插件要添加MMTS。

【摘要】:隐藏选单时序时簿不需的菜单和工具栏 【版本】:K/3BOS 所有版本

问题描述: 隐藏选单时序时簿不需的菜单和工具栏

解决方法: 在MenuBarInitialize事件中使用m_ListInterface.List.ShowMode判断(查看和选单)

1—查看;2—选单。

语法:If m_ListInterface.List.ShowMode = 1 Then ??end. 例:在选单时隐藏“编辑”菜单和工具栏 If m_ListInterface.List.ShowMode = 2 Then Dim oTool As K/3ClassEvents.BOSTool

Dim oBand As K/3ClassEvents.BOSBand

'*************** 开始设置 BOS 原有菜单 *************** '获得 mnuEdit 菜单对象,并设置属性 Set oBand = oMenuBar.BOSBands(\ Set oTool = oBand.BOSTools(\ With oTool

.Visible = False .Enabled = False End With End if

【摘要】:在单据体中让下一条分录自动携带上一条分录的数据 【版本】:K/3BOS 所有版本

问题描述: 如何在单据体中让下一条分录自动携带上一条分录的数据(只是部分字段)客户化开发技术资料——K/3 BOS开发百问百答

解决方法: 示例代码:

'物料录入后,第二行的值自动默认第一行的值 If dct(\ m_BillInterface.SetFieldValue \

m_BillInterface.GetFieldValue(\ row '提货地点 end if

大力水手 2009-08-01 21:37:32.0

【摘要】:在 Bos 插件中如何处理隐身的二次登录 【版本】:K3v10.2SP1

问题描述: 在自定义的 BOS 单据上,通过插件作生成凭证的功能,但是在调用凭证的 组件时,需要一个二次登录后才能使用相应的模块。如何处理隐身的二次 登录,或者其他的变通处理。

解决方法: 1、凭证组件的调用是不需要二次登录的,可能你是在VB 调试状态下运行,编译后就没 事了。

2、请参考下面代码

Private Sub m_BillInterface_MenuBarClick(ByVal BOSTool As K3ClassEvents.BOSTool, Cancel As Boolean)

Dim glvch As Object '中间层凭证对象 Dim mvch As KFO.Dictionary '待保存凭证头 Dim mvchentry As KFO.Vector '待保存凭证分录集 Dim entry As KFO.Dictionary '待保存凭证分录 Dim mvchdetail As KFO.Vector '核算项目明细集 Dim detail As KFO.Dictionary '核算项目明细 Dim i, iCount As Long

Dim vValue As Variant

'TODO: 请在此处添加代码响应事件 MenuBarClick Select Case BOSTool.ToolName Case \生成凭证\

vValue = m_BillInterface.GetFieldValue(\

If Not (CStr(vValue) = \

MsgBox \当前合同已经生成凭证!\金蝶提示\ Exit Sub End If

'此处添加处理 生成凭证 菜单对象的 Click 事件 Set mvch = New KFO.Dictionary

mvch(\客户化开发技术资料——K/3 BOS开发百问百答

mvch(\金华泰项目\

mvch(\ Set mvchentry = New KFO.Vector

vValue = m_BillInterface.GetFieldValue(\ '合同 金额

'创建凭证分录

Set entry = New KFO.Dictionary

entry(\ entry(\ entry(\

entry(\ '数量&单价

entry(\ entry(\

entry(\ '创建核算项目明细

Set mvchdetail = New KFO.Vector Set detail = New KFO.Dictionary detail(\ detail(\ mvchdetail.Add detail

Set entry(\ mvchentry.Add entry

Set mvch(\ Set entry = New KFO.Dictionary

entry(\ entry(\ entry(\

entry(\ '数量&单价

entry(\ entry(\

entry(\ '创建核算项目明细

Set mvchdetail = New KFO.Vector Set detail = New KFO.Dictionary detail(\ detail(\ mvchdetail.Add detail

Set entry(\客户化开发技术资料——K/3 BOS开发百问百答

mvchentry.Add entry

Set mvch(\

Dim s As String

s = \Source=JAMES;

Initial Catalog=xt_3};UserName=administrator;UserID=16394;DBMS Name=Microsoft SQL Server;DBMS

Version=2000;SubID=GL;AcctType=gy;Setuptype=Industry;Language=chs;

IP=192.168.1.92;MachineName=JAMES;UUID=800A878D-F574-4877-B79C-D88AB721ECA0\

Set glvch = CreateObject(\oucher.VoucherUpdate\

glvch.Create s, mvchs = \ fUser1=\

& m_BillInterface.K3Lib.User.UserID & \ m_BillInterface.GetFieldValue(\

m_BillInterface.K3Lib.UpdateData s m_BillInterface.RefreshBill

MsgBox \凭证生成成功!\金蝶提示\

Case \变更\ End Select End Sub

【摘要】:文本字段录入完毕回车不跳转 【版本】:K3v10.2SP1+K3vSP2

问题描述: 在 Bos 单据的表体中加入一备注字段,后再加入一文本字段,发现备注字段 敲回车不跳转,后面的文本字段输入完毕回车也不跳转。

解决方法: 备注型字段因为支持回车的录入,所以不支持回车跳转。经测试发现,文本字段放在备注

字段后面,则文本字段录入敲回车,也清空和备注字段的现象一样,这可能是 sp1 和 sp2 的 Bug,可以将备注字段放在行的第后一列,则就没有问题。 客户化开发技术资料——K/3 BOS开发百问百答

【摘要】:不能实现记录选择。 【版本】:K3v10.2SP1+PT0704

问题描述: 新做的 BOS 单据(配置单)在与源单(销售订单)进行选单的时候,出现 在销售定单中选择某一条记录或者某几条记录的时候,会将销售订单所有 的记录都选过来,不能实现记录选择。

解决方法: 沟选了[选单时关联整单]选项导致的,不选上就按分录返回。

【摘要】:如何删除空行。 【版本】: :K3v10.2SP2

问题描述: 在输入信息回车后,系统光标会自动跳到下一行,即新增一行保存时,系 统提示“XXX”字段不运行为空。需要手工删除一行,比较麻烦。我想通过 插件,在点击保存时,判断:如果有空行,就删除该行;如何删除单据体 一行的插件语句,如何调用?

解决方法: 可以不写代码,设置该单据体的[关键字段],保存前将清除最后一行空白行。

【摘要】:数量精度和单价精度 【版本】:K3v10.2SP1&K3v10.2SP2&K3v10.3

问题描述: 在单据体中加上“数量”字段,用 decimal 的后面的小数点位太多位了; 用 integer 的“数量”,不可以指定到“单位”上去,如何解决? 客户化开发技术资料——K/3 BOS开发百问百答

解决方法: 数量和单价的精度是跟着物料的[数量精度]和[价格精度]走的,如果客户只存在整数物

料精度,可以通过[基础资料]-[公共资料]-[核算项目管理]-[004-物料修改]设置物料 精度的缺省值为0。

【摘要】:计算公式如何定义 【版本】:K3v10.2SP1&K3v10.2SP2&K3v10.3

问题描述: 在 BOS 单据设计的时候,进行单据体内单元格计算时,如设数量、单价、 金额,正常应该在“金额”栏设置公式等于“数量”乘于“单价”,但这 样设“金额”栏无法计算。

解决方法: 如果要实现在修改数量列和单价列更新金额,须在“数量”列和“单价”列的

[值更新

事件]分别增加一条计算公式:金额=数量*单价。

【摘要】:如何在插件中获取当前系统字符连接串 【版本】:K310.2 及以后版本

问题描述: 插件中字定义系统中如何获取当前系统字符连接串?一个年结功能,进行 土地数据结转、在vb 中定义了年结功能窗口,要在主控台子系统中调用, 怎样或得当前数据库连接信息,亦无法通过 k3lib 获得,因为没必要去调 用 bos 表单或序时簿。另外,一些复杂报表、也是通过vb 中单独实现、这 些报表也需要获的连接字符串才能调用

解决方法: 1、连接串获取方式: (注意不支持调试,调试的话可以用实际连接串代替) Private Declare Function GetCurrentProcessId Lib \ Alias \ '获取连接串

Public Function GetPropsString() As String Dim lProc As Long Dim spmMgr As Object lProc = GetCurrentProcessId

Set spmMgr = CreateObject(\客户化开发技术资料——K/3 BOS开发百问百答

GetPropsString = spmMgr.GetProperty(lProc, \ End Function

2、 需要申请 MMTS.bas 的源代码,还需要申请 ICKDListener 的接口。另外,如果需要 调试程序,就还需要申请KDMain的源代码。

【摘要】:BOS 单据插件里取分录的合计值 【版本】:K310.2 及以后版本

问题描述: 工业单据自定义里面有个 GetSumGridText 方法取得分录某一列的合计值, 现在BOS单据里面需要取某一列的合计,有什么方法可以调用。 。

解决方法: Object.Sum (dct As Dictionary, [BRow As Long], [ERow As Long]) 参数说明:

dct-字段的模板字典

BRow-合计开始行,可选参数,默认值是1 ERow-合计结束行,可选参数,默认值是最大行

举例(要求税额合计值) :

Set dct = m_BillInterface.GetFieldInfoByKey(\ dblTaxSum = m_BillInterface.Sum(dct)

【摘要】:带有辅助属性的字段的值更新事件中调用辅助属性,计算公式运行有误 【版本】:K310.2 及以后版本

问题描述: 对于已携带辅助属性的字段再定义值更新事件,如果值更新事件里包含该

辅助属性,计算公式无效。也就是值更新事件公式里调用的辅助属性是更 新前的。

解决方法: 在插件中使用更新后事件

客户化开发技术资料——K/3 BOS开发百问百答

【摘要】:事务处理 【版本】:K310.2 及以后版本

问题描述: 1、BOS 的插件开发中,不能直接操作数据库。事务怎样处理 2、在事务完整性处理上,目前的 BOS 插件还有很多需要改进。例如:BOS 是支持多插件的,多插件之间如何保证事务完整性?同样是审核事件,有 2 个插件响应了这个事件,如果第一个插件通过了审核,但是第二个插件却 不能通过,那么第一个插件处理了的数据又如何回滚?

解决方法: 1、 如在插件中编写大量的更新SQL请使用中间层插件, 中间层插件能保证事务的完整性。

2、 如果在客户端希望执行SQL时保证事务一致性, 建议使用 K3Lib.UpdateData 方法, 将希望在同一事务中处理的SQL语句通过它一次性提交, BOS会自动启用事务处理来保 证;如果像多个插件中的审核等操作的一致性问题,解决的方法是制定一个中间层的 审核前插件来判断处理;这类的问题都可以在中间层的相关事件中处理,来保证一致 性。

【摘要】:基本单位数量在录入完数量后仍然为空 【版本】:K310.2 及以后版本

问题描述: 新增 BOS 单据分录中有数量 及基本单位数量 字段, 基本单位数量关联字 段为数量, 但输入完数量后,基本单位数量仍然为空。 解决方法: 保存后基本单位数量就有了。

【摘要】:10.1 单据插件中如何向单据体逐行插入数据 【版本】:K3v10.1

问题描述: 在 BOSV10.2 中,填充新行数据可以用

m_BillInterface.InsertNewRowAndFill 方法实现,但是在BOSV10.1 中不

知道用什么方法可以向单据体逐行插入数据 客户化开发技术资料——K/3 BOS开发百问百答

解决方法: 将10.1的KFO.DLL换成10.2 KFO.DLL,是兼容的。 m_BillInterface.Data(\

【摘要】:BOS 单据选单返回时自动在表体添加一行分录 【版本】:K310.2 后所有版本

问题描述: BOS 开发一张新的单据. 在选单返回时, 希望能在表体自动添加一行分录。 事件测试代码如下:

Private Sub m_BillInterface_AfterSelBillBeforeFillData(ByVal dcData As KFO.IDictionary, ByVal dctLink As KFO.IDictionary)

Dim CoDict As KFO.Dictionary

Set CoDict = dcData(\拷贝第一条分录数据 dcData(\添加到 dcData

dcData(\ = dcData(\更改分录号 'Stop

set CoDict=Nothing End Sub

用 watch 查看 DcData 的值. DcData(\也有增加一条, 但返回后, 新添加的分录并未带到目标单据上? 还要修改哪些地方?

解决方法: 此方法在调试状态下是不能把值传过去的,编译之后就可以了。 你的代码有以下问题:

1、取分录号使用dcData(\; 2、Vect的最大值用UBound,而不是count;

3、字段的key 值使用m_BillInterface.TableInfo(\是字段名。 正确的代码是:

Dim CoDict As KFO.Dictionary

’dcData(\ Set CoDict = dcData(\拷贝第一条分录数据 dcData(\添加到 dcData

dcData(\更改分录号 'Stop

Set CoDict = Nothing

客户化开发技术资料——K/3 BOS开发百问百答

【摘要】:只有工具条及菜单栏的浏览数据窗口 【版本】:K3v10.2SP2 及以后版本

问题描述: 能否在新版 BOS 中提供一个没有数据,只有工具条及菜单栏的浏览数据窗 口,供做插件集成操作窗口用,现在只能用单据窗口实现,打开时还出焦?br/>滤窗口。

解决方法: BOS中有一个自定义序事簿联查接口,可以指定单据类型和过滤条件联查所有新老单序

事簿,不用弹出过滤条件。

金蝶 k3 BOS开发百问百答(转载)1

2011-04-12 14:08:06| 分类: k3 | 标签: |字号大中小 订阅

大力水手 2009-08-01 21:37:59.0 【摘要】:K3Bos表体如何设置合计

【版本】:K310.2SP2

问题描述: K3Bos表体如何设置合计

解决方法: 目前不能在界面上设置合计, (系统对数量和金额默认合计) , 如需对其他字段设置合计,

需更改ICClassTableInfo.FSum的值为1。

【摘要】:收款单的套打设置里面怎么取到通过 Bos 自定义的字段

【版本】:K3v10.2SP2 及以后版本

问题描述: 如何设置通过 BOS 定义的字段的套打?目前在收款单通过 BOS 自定义了一 个字段,那么在收款的套打设置里面怎么取到这个字段 客户化开发技术资料——K/3BOS开发百问百答 解决方法: 在单据中添加一个字段保存后,打开这个套打文件中可以自已添加一个字段,在设置

对象属性时可以指定到单据中的这个字段。

【摘要】:如何隐藏Bos 单据中的层 【版本】:K3v10.2SP2 及以后版本

问题描述: 对 BOS 单据中的层处理。如何做到显示或隐藏单据中某一层

解决方法: 以层为单位的动态显示隐藏现在没有提供方法;

可以在插件中一个一个字段的隐藏,从字段的FLAYER属性可判断其所属的层。

【摘要】:如何调用打印功能

【版本】:K3v10.3

问题描述: 在单据保存后自动打印。请问在Bos 单据插件里如何调用打印功能 解决方法: 在保存后打印Bos单据,请在单据aftersave 事件里添加如下代码:

Private Sub m_BillInterface_AfterSave(bCancel As Boolean)

Dim oPrint As Object

Set oPrint =

m_BillInterface.K3Lib.CreateK3Object(\K3ClassBillPrint.clsNotePrint\

oPrint.DataSrv = m_BillInterface.DataSrv oPrint.Data = m_BillInterface.Data oPrint.TableInfo = m_BillInterface.TableInfo oPrint.PrintBill m_BillInterface.BillCtl.hWnd, False

Set oPrint = Nothing

End Sub

客户化开发技术资料——K/3 BOS开发百问百答

【摘要】:BOS 单据如何控制表体行数

【版本】:K3v10.3

问题描述: BOS 开发的业务单如何控制表体的行数。按月预算的话,在表体中在单据新

fclasstypeid=200000002 and FKey='FBase1'

update icclasstype set fid=fid。 客户化开发技术资料——K/3 BOS开发百问百答

【摘要】:关于如何在销售发票业务审核后仍能修改摘要字段的做法

【版本】:K/3V10.3

问题描述: 关于如何在销售发票业务审核后仍能修改摘要字段的做法

解决方法: 首先设置除摘要字段以外的字段的锁定属性都要是审核后锁定,摘要字段

则不需要设。 另要添加以下插件:

在序事簿里添加单据变更按钮(名称为 BillEdit) ,并在序事簿插件里添加

如下代码:

新增一模块文件,里面定义公共变量。Public bBilledit As Boolean Private Sub m_ListInterface_MenuBarClick(ByVal BOSTool As

K3ClassEvents.BOSTool, Cancel As Boolean)

Select Case BOSTool.ToolName

Case \

'此处添加处理 BillEdit 菜单对象的 Click 事件

bBilledit = True

Call m_ListInterface.LoadSelectedBill(Enu_BillStatusExt_Modify)

bBilledit = False

Case Else End Select End Sub

在单据插件里添加如下代码:

Private Sub m_BillInterface_AfterLoadBill()

If bBilledit Then

m_BillInterface.SetBarStatus \ m_BillInterface.SetBarStatus \

m_BillInterface.MenuBar.Refresh

m_BillInterface.SetBillFormCaption m_BillInterface.BillName & \

变更\ End If End Sub

Private Sub m_BillInterface_BeforLoadBillFillData()

If bBilledit Then

m_BillInterface.BillCtl.BillStatus = Enu_BillStatusExt_Modify

End If End Sub

最后将以上插件编译,在插件管理加到单据已有插件之后。

客户化开发技术资料——K/3 BOS开发百问百答 【摘要】:调拨单中的调拨类型无法单据中显示

【版本】:K/3V10.3

问题描述: 客户在做单据自定义的时候―源单类型‖字段只是移动了一下位置,保存

后源单类型字段就在单据上显示不出来了,就是移回原位置也显示不出来, 我在自己的机器上试了一下也是这种情况,只要移动后保存这个字段就显

示不出来了,急盼答复,谢谢,最好不要建议我打sp补丁,

解决方法: 调拨类型字段显示与否与系统选项:核算系统选项:调拨单允许异价调拨

有关

【摘要】:序时簿查件分录中,如何通过插件取其中一个时间字段。

【版本】:K/3v10.3&K/3v10.3sp1

问题描述: 序时簿查件分录中,如何通过插件取其中一个时间字段 解决方法: Set vectSelect = m_ListInterface.GetSelectedBillInfo

If vectSelect.UBound > 0 Then

strSQL = \Bos20000001 where fid=\

vectSelect(1)(\

Set rs = m_ListInferface.K3Lib.GetData(strSQL)

If Not rs.EOF Then

rs (\

【摘要】:新单中如何写删行的函数 【版本】:K/3v10.3-10.4 ,其后的版本已经增加

问题描 述:

在 bos 单据中,通过插件插入多行分录,在保存的时候,进行数据正确性检测时, 不能通过插件程序删除不符合逻辑检测的行 客户化开发技术资料——K/3 BOS开发百问百答

解决方 法:

?--------------------------------------------------------------------------------

?名称: RemoveBillRowInfo

?描述: 删除单据行 ?版本: V10.3 ?作者:

?参数: m_BillInterface Object 单据对象

? lPageNum Long 页 ? lRow Long 行

?返回值: Boolean True:成功 False:失败

?创建时间: 2006/3/20

?-------------------------------------------------------------------------------- Public Function RemoveBillRowInfo(m_BillInterface As Object, _

ByVal lPage As Long, _ ByVal lRow As Long)

Dim dctClassType As KFO.Dictionary

Dim dctData As KFO.Dictionary Dim vctEntryData As KFO.Vector Dim vctDeleteRow As KFO.Vector Dim dctDelSrcType As KFO.Dictionary

Dim strKey As String Dim lEntryID As Long

Dim i As Long

Set dctData = m_BillInterface.Data Set dctClassType = m_BillInterface.ClassType Set vctEntryData = dctData(―Page― & lPage)

If lRow <= vctEntryData.Size And lRow > 0 Then lEntryID = vctEntryData(lRow)(―FEntryID―)

If lEntryID <> 0 Then

If dctData.Lookup(―PageDel― & lPage) Then Set vctDeleteRow = dctData(―PageDel― & lPage) Set dctDelSrcType = dctData(―PageDelSrc― & lPage)

Else

Set vctDeleteRow = New KFO.Vector Set dctDelSrcType = New KFO.Dictionary Set dctData(―PageDel― & lPage) = vctDeleteRow Set dctData(―PageDelSrc― & lPage) = dctDelSrcType

End If

vctDeleteRow.Add lEntryID

If vctEntryData(lRow).Lookup(―FSrcClassTypeID―) Then If vctEntryData(lRow)(―FSrcClassTypeID―) <> 0 Then

dctDelSrcType(lEntryID) = 客户化开发技术资料——K/3 BOS开发百问百答

vctEntryData(lRow)(―FSrcClassTypeID―)

End If End If End If

m_BillInterface.GetFieldInfoByKey dctClassType(―FIndexKey―) & lPage,

strKey, 0

If Len(strKey) > 0 Then

For i = lRow + 1 To vctEntryData.Size

'SetNormalFldValue vctEntryData(i)(strKey), i – 1

m_BillInterface.SetFieldValue strKey, i-1, i

Next

If lRow + 1 > vctEntryData.Size Then ?当删除的为最后一行时,将第一行

的修改标志设为1

vctEntryData(1)(strKey)(―FModify―) = 1

End If

vctEntryData.Remove lRow

End If End If

Set dctClassType = Nothing Set dctData = Nothing Set vctEntryData = Nothing Set vctDeleteRow = Nothing Set dctDelSrcType = Nothing

End Function

【摘要】: 如何自定义金额字段的―小数位长度‖

【版本】:K/3v10.3 以上版本

问题描述: 通过K3的―单据自定义‖工具在销售发票的单据头上增加一金额型字段,

在应收系统查询时,该字段系统强制―小数位长度‖为 10,且不能修改。

需求能够由用户自定义小数位长度。 客户化开发技术资料——K/3 BOS开发百问百答

解决方法: 目前可通过以下步骤变通实现:

1、通过后台删除模板:Delete ICClasstableinfo where FClasstypeid=1000000 and fcaption_chs=?自定义金额字段名称?(FClasstypeid可通过ICClasstype的FID字段

关联获得)

2、通过BOS设计器在对应单据上新增一个金额字段类型的字段,指定字段名为对应字

段,然后保存单据。

【摘要】: 新单增加的单据如何携带到老单据(典型问题) 【版本】:K/3v10.3 和以前版本,10.4 已经可以配置实现

问题描述: 1\\在采购合同增加一个字段(手工输入)

2\\采购订单增加一个字段(此字段希望可以选择合同内的字段),但发现采

购合同增加的字段在采购订单无法显示出来

解决方法: 10.4已经立项功能点,10.4可通过配置解决,10.3下可通过调整ICSelBills模板调

【摘要】: 新单据如何从 Excel批量引入单元格数据

【版本】:K/3v10.3

问题描述: BOS 开发的一张单据,单据体只有一列可编辑,用于客户录入序列号,现客户

在EXCLE有序列号,但是从EXCLE复制多行序列号的时候只有第一行行复制

到表体中,后面的数据不能过来.

解决方法: 经咨询开发部和供应链专家,原供应链老单据SN录入是一种特殊处理的方式,相当于

用BOS的插件实现的特殊功能。而直接在BOS中直接实现代价较高,拟定于未来版本规

划处理。目前可通过插件自行处理,处理方案如下:

1、 在插件中新增1个Form,Form中存放一个 Spread控件 (也可用其他电子表格控件) ,

利用此控件的复制功能完成数据的输入;

2、关闭返回时,从控件中读取引入的数据,利用插件的InsertNewRowAndFill方法完

成表格数据在BOS单据中的批量填充。 客户化开发技术资料——K/3 BOS开发百问百答

【摘要】: 新增 bos 单据怎么会无法保存.提示拒绝的权限.

【版本】:K/3v10.4

问题描述: 已经在 5 台不同地计算机上测试过了,2 台 windows xp 没有问题,3 台

windows 2003 都问题,无论是 sp1,sp2,r2 都有问题.其中有一台机子都是

新安的系统,没有安装过任何k3的以前版本 解决方法: 反馈类型由程序错误更改为其他问题。

从―开始‖进入到―管理工具‖,执行―组件服务‖,展开窗口左边树视图中的―组 件服务‖节点至―我的电脑‖,在―我的电脑‖上选择右键菜单―属性‖,在弹出的属 性窗口中选择―默认安全设置‖页,点击第一个―编辑默认值‖后添加―everyone‖用 户,点击第二个―编辑默认值‖后添加―Administrators‖组,即完成了权限了配置。

【摘要】:设定的实数数量精度在参与值更新事件计算时没有精度控制

【版本】:K/3v10.4

问题描述: 有一需求是这样的:客户在入库时有入库重量,经检验有水份含量,经值更

新处理:实际重量=新入库重量*水份含量。 客户要求实际重量保留小数位数为2 位. 最后算金额时又一值更新: 金额=实际重量*单价

但是发现此时参与计算的实际重量是没有保留两位小数的重量,所以从结

果上看,金额≠实际重量*单价.

解决方法: 现状:单据头字段的公式计算是按四舍五入前的值进行计算的,但单据体字段的公式是

按四舍五入后的值进行计算的.

变通解决方案:单据头字段,将计算公式改为在插件中使用四舍五入的值计算目标字段

的值.。

【摘要】:大文本字段怎么就能录入这么几个字符,有什么方案没有?

【版本】:K/3v10.4

问题描述: BOS 中的大文本 的录入只能录入255 个字

不能满足 实际业务处理要求 需要放宽字数限制,到1000 个字以上。 客户化开发技术资料——K/3 BOS

开发百问百答

解决方法: 大文本目前支持图片+文字,因考虑性能问题所以对文本输入上限进行了控制,如输入

字符数超过255字符,可通过备注(多行备注风格)来实现。

【摘要】:BOS单据自定义后新增或查询反映太慢

【版本】:K/3v10.4

问题描述: 录入或进入进口单证序时簿界面提示―组件正在调用中间层.....,‖需要 耗时 20-30 分钟才能新增或查询进口订单,客户怨言相当大,请总部尽快

解决。

解决方法: 在数据库中发现进口单证中的Action有 8 万多个, select count(*) from ICClassActionList where FClassTypeID=1007140

请删除多余的Action再执行。删除SQL如下:

Delete From icCLassActionList where FClassTypeid=1007140 and Faction=?FManageType=FManageType? and Fid>(Select Min(Fid) from

icClassActionList where FClassTypeId=1007140 and

FAction=?FManageType=FManageType?)

原因为存在众多的自定义的Action

【摘要】:如何单据插件中实现基础资料F7 动态过滤

【版本】:K3v10.4 及以后

问题描述: 如何单据插件中实现基础资料 F7 动态过滤 解决方法: 关于仓库动态过滤伪代码如下,请参考: 在插件m_BillInterface_MenuBarClick 事件中添加如下代码:

Case \ Dim oCtl As Object

Set oCtl = m_BillInterface.GetActiveCtl

Dim dctFld As KFO.Dictionary

Dim sKey As String Dim oReturn As Object

m_BillInterface.GetActiveField dctFld, -1, -1

sKey = oCtl.Tag

If dctFld(\

'根据权限动态加载过滤条件

dctFld(\ End If 客户化开发技术资料——K/3 BOS开发百问百答

Set m_BillInterface.TableInfo(sKey) = dctFld

m_BillInterface.K3Lib.LookUpClass dctFld, \

Cancel = True

另:如果是单据体字段,请获取响应字段的ActiveCol,ActiveRow即可。

【摘要】:如何在插件中响应 BOS控件 KDInputTool 的事件

【版本】:K3v10.4 及以后

问题描述: 如何在插件中响应 BOS控件 KDInputTool 的事件

解决方法: 插件伪代码如下:

Private WithEvents mInputTool As KDInputTool.InputTool

在插件事件

Private Sub m_BillInterface_BeginEdit(ByVal dct As KFO.IDictionary, ByVal Col As Long,

ByVal Row As Long) Dim oCtl As Object

Set oCtl = m_BillInterface.GetActiveCtl If dct(\

Set mInputTool = oCtl.object

End If End Sub

此时,可以响应mInputTool 的相关事件,做一些特殊处理,如KeyDown等 客户化开发技术资

料——K/3 BOS开发百问百答

三、多级审核篇 【摘要】:批量审核。 【版本】:K/3v10.2SP1

问题描述: K/3 BOS 单据是否支持批量审核? 如果不支持, 可否编写此方面的插件?

能否给过一段示例代码? 序时薄接口对象现在没有审核事件可供调用, 那

所有的审核代码都得在插件中自己写

解决方法: K/3 BOS 单据不支持批量审核,目前还没有这方面的插件,先自己编写吧。序时薄中

MultiCheckMgr是审核对象,其中包含了审核的各种方法,但编写代码比较难。

【摘要】:设置为一级审核的Bos单据反审核后不能修改。

【版本】:K/3v10.2SP1

b题描述: 一张新单据. 启用了多极审核,且只设置了一级审核; \修改无需反审到最

后一级\的选项也选中了. 在实际作业中,单据反审核后仍然不能修改? 用 BOS 做了五张单据,经测试如果在序时薄将单据反审核, 再打开单据, 可以修改;如果在序时薄界面, 打开未审核的单据, 审核后, 再进行反审 核操作, 单据可以修改;如果在序时薄界面,打开已经审核的单据, 将单据

反审核,单据还是不能修改。

解决方法: 在序时薄界面,只能通过 ―查看‖ 方式打开已经审核的单据, 即使单据反审核了, 任在 ―查

看‖状态下,单据是不能修改的。在K310.3中已解决此问题。

【摘要】:能否使administrator 对任何人审核的 BOS 单据进行反审核。 【版本】:K/3v10.2SP1 客户化开发技术资料——K/3 BOS开发百问百答 问题描述: 只有一级审核的 BOS 单据,其他用户审核的,有否这样的设置,能够让

administrator 对其进行反审核。目前由于 administrator 既不是审核人

又不是下级审核人,没有这样的权限。 解决方法: 不能,除非管理员也是审核成员。 【摘要】:实现多级审批同时需要更改审批的数量与单价。

【版本】:K/310.2SP2 及以上版本

问题描述: 在 BOS 中可否实现多级审批同时需要更改审批的数量与单价的需求

解决方法: 10.2SP2以后的版本有―修改单据无需反审核到最末一级‖的选项,但它能修改单据中

所有的内容,再通过字段授权的方式控制单价和数量的权限。

【摘要】:BOS 字段多级审核后可以修改。

【版本】:K/310.2SP1

问题描述: BOS 字段多级审核后可以修改

解决方法: BOS10.2增加多级审核的功能,所以IDE 设计时也增加了[审核后锁定]的状态,如果是

BOS 新增的单据启用多级审核后且该流程勾选了[修改无须反审核到最后一级]选项, 在审核流程未完成之前,用户都可以修改未勾选[审核后锁定]的字段的内容。但单据流 程审核结束后修改按钮灰显,用户只能通过查看按钮进入,因此时整单状态为查看, 用户不能修改该张单据任何内容。如审核流程后仍有字段需要维护,可以通过在序时

簿增加一个按钮,然后在插件代码中增加如下代码:

Private Sub m_LstInterface_MenuBarClick(ByVal BOSTool AsK3ClassEvents.BOSTool,

Cancel As Boolean) Select case Bostool.name

case \

call m_LstInterface.LoadSelectedBill(IIf(CanEdit(vectSelect(1)(\客户化开发技术资

料——K/3 BOS开发百问百答

Enu_BillStatusExt_Modify, Enu_BillStatusExt_View))

case else

end select End Sub

获得单据修改状态,BOS将根据设计时状态锁定/解锁相应字段。

【摘要】:有关多级审核的问题。 【版本】:K/3v10.2SP1+PT0704

问题描述: 1. 在对一张单据进行―多级审核流程‖配置时,在对每一级审核进行配

置时,业务审核级次、业务审核人、业务审核日期都只能是一样的, 这就导致在单据序时薄测试时,启动多级审核后,多级审核中只能有 其中某一级的审核人和审核日期有数据,其余审核人和审核日期字段

都不能在相应级别审核完毕后记录数据。

2. 在设置多级审核流程后,如果在某一级驳回审核,填写的驳回意见不

能看到。

3. 设置多级审核流程后,在单据运行时, ―审核‖并没有像原有 K/3 系统 中其它单据审核一样出现在上方菜单下的按钮上,而只能在菜单中启

动多级审核。

4. 在多级审核级别之间进行―流转配置‖时,只能在中间级别之间进行 跳转,如共有 5 级审核,想要在某一条件下 4 级审核完毕后就结束,

无法实现,只能在 1-5级之间跳转。

5. ―流转配置‖时,只能增加一次流转配置,即级别之间只能进行一次

―添加关系‖ ,且添加上的关系不能删除。

6. 在设置―流转配置‖的―跳转条件‖时,字段列表中只有单据的单据

头字段,而没有单据体字段。

7. 最不方便使用的是在单据定义时,一旦添加上字段之后便不能删除, 否则便会将单据上的所有字段全部删除。新增的单据、多级审核流程、 单据转换流程保存后也不能删除。在多级审核流程中进行流转配置时

添加上的关系不能删除。

8. 在进行―单据转换流程‖定义时,不能由源单的单据体下推生成目的

单的单据头。

客户化开发技术资料——K/3 BOS开发百问百答

解决方法: 1、 每一级审核都已经记录了审核人、审核日期、审核意见,在单据上―多级审核‖

页可以很清楚的看到。单据序时簿则暂时没有提供查看各级审核人、审核日期、审核 意见的功能;这个和多级审核配置中的业务审核人、业务审核日期字段是无关的,业 务审核人只在做业务审核的时候才会同时记录,多级审核中有且只有一个级次能作为

业务审核级次,所以也只需要一个字段作为业务审核人字段;

2、 已经记录了驳回意见,但暂时没有提供驳回意见的查看。驳回意见会以消息的方

式发送出去;

3、 SP2中会进一步简化、优化多级审核,本点在列;

4、 9.30 补丁中会增加一种属性,提供给插件判断流程是否已经跳转到结束,让插件

有依据进行自动审核等操作,自动结束多级审核流程;

5、 在关闭―启用多级审核‖选项并保存后,可以自由添加、删除跳转关系;

6、 暂时没有提供单据体字段;

7、 10.2 SP增加了新功能,单据模版、多级审核配置、单据转换流程、报表等都可以

删除;

8、暂没有提供;

大力水手 2009-08-01 21:39:42.0 【摘要】:中间层的多级审核事件。

【版本】:K/3v10.3

问题描述: 中间层的多级审核事件如何调试

在 AfterMultiCheck 事件中的 (dctBillCheckRecord,审核路线数据包 )

中如判断当前审核的级次

解决方法: 首先要在单据的插件管理里引用该中间层组件,(多级审核后业务逻辑处理组件名),然

后和客户端插件一样的方法调试(也就是运行源码设置断点,再运行Bos单据即可调试。 经调试发现dctBillcheckrecord包里有两个字段,FCheckLevel和Fchecklevelto,当是 审核时fchecklevel是当前已经审核的级次,fchecklevelto是当前将要审核的级次,比 如现在要进行第四级审核,fchecklevel是3,fchecklevelto是4,而当前是反审核时,比 如说现在已经是第四级审核了,现在要反审核,则fchecklevelto仍然是4,fchecklevel 是3。该包中有字段Fmode来判断是审核还是反审核,是0表示审核,2则表反审核(以上结

果你也可以通过调试来看到dctBillcheckrecord包的内容)。

【摘要】:BOS 审核权限 【版本】:K/3v10.3

问题描述: 目前 BOS 只能指定哪些人具有审核权限,由制单人从中指定具体哪个人来

审核他所制定的具体单据貌似实现不了

做一个单据头项目―指定审核人‖为从审核人中选取,由制单人手动指定, 具有审核权限的人在操作该单据序时簿时,强制限制只能看到―指定审核

人‖为自己的单据。

现在问题是不知道在哪里和怎样加这个硬性限制了

另外也曾经想过为该 BOS 单据单独新增一个核算项目,内容是所有具有审

核权限的人,然后对这个核算项目按照人名对照进行数据授权,把这个核客户化开发技术资料——K/3 BOS

开发百问百答

算项目加在单据头上作为―指定审核人‖,这样在制单人也具有审核权显 时设置比较费劲,同时如果需要这样做的单据比较多,对应的核算项目也

不少,维护起来费劲

解决方法: 1、方案一,10.4提供了审核时指定消息接收人,可通过消息来触发审批工作;

2、方案二,仍通过核算项目的数据授权完成;

3、方案三,通过序时簿的listfilterstring完成(10.4该属性将长期整个序时簿周期都有效)

【摘要】: 不同级次驳回功能存在问题,审核流程不流畅

【版本】:K/3v10.3.1

问题描述: 多级审核里面我们审核级次如果选一级审核

发现的问题有: 1、审核人要驳回没地方点

2、设置消息启动审核到启动审核的话,如果我制单人单子保存好后不去点 一下那个启动多级审核或者多级审核, 审核人进去的时候K3消息是没有的。 一定要制单人单子保存好后不去点一下那个启动多级审核或者多级审核,

那个审核人才能收到消息。

还有这个启动多级审核或者多级审核谁点消息的发送人就写谁的名字。

解决方法: 目前建议通过开发插件解决自动启动多级审核BOS 单据的功能,实现方式 如下:

在Private Sub m_BillInterface_AfterSave(bCancel As Boolean) 接口上写入

m_BillInterface.MultiCheckMgr.MultiCheckBill

m_BillInterface.BillCtl.CurBillID, True

其他需求,此版本已基本实现,如驳回功能,系统已在菜单栏提供,驳回的接收人可

指定为系统中的用户。

客户化开发技术资料——K/3 BOS开发百问百答

【摘要】:在打开单据的情况下点击审核菜单,显示 XX 单据审核成功,但单据并未立即 切换到字段锁定状态,即此时单据内容(如分录中的各项信息等)均可修改,关闭单据后

再次打开,正常。反审核也如此。

【版本】:K/3v11.0 以前

问题描述: K/3 BOS 单据是否支持批量审核? 如果不支持, 可否编写此方面的插件?

能否给过一段示例代码? 序时薄接口对象现在没有审核事件可供调用, 那

所有的审核代码都得在插件中自己写

解决方法: K/3BOS 目前设定的,因不仅只有单据审核后才更改单据状态(插件的功能也有可能更

新) ,所以如果做在BOS功能点将会造成其他功能的状态控制有误,所以程序将该功能 的控制点在于单据的保存按钮灰显,虽然状态没有刷新,可用户也无法保存更新单据,

驳回审核这里确实有点不方便。 目前可以在插件中用如下代码规避该问题 Private Sub m_BillInterface_BeforLoadBillFillData()

'判断审核人是否为空

If Val(m_BillInterface.BillHeads(1).BOSFields(\

m_BillInterface.BillCtl.BillStatus = 0'设置单据状态为只读

Else

m_BillInterface.BillCtl.BillStatus = 2'设置单据状态为修改

End If End Sub

客户化开发技术资料——K/3 BOS开发百问百答

四、单据转换流程篇

【摘要】:新单推老单不能实现钩稽功能

【版本】:K/3v10.2SP1

问题描述: bos 单据,只有单据头,没有单据体,现要下推生成外构入库单,在单据关

联时, 提示与老单关联必须输入物料和计量单位,设了单据头的物料和计 量单位后,还是提示必须输入物料和计量单位。忽视此问题,在下推到入

库单时,物料的单位带不出来,后期也加不上。

是否只有单据体关联才不会出错,单据头的物料和计量单位为什么不行。

解决方法: 1、 在 sp1的环境下新老单不能实现钩稽功能,其他关联关系功能也不健全。

2、 在 SP2的环境虽然提示―老单关联必须输入物料和计量单位‖,但选择继续

能完成你需要的功能。

【摘要】:新单推老单不能实现钩稽功能

【版本】:K/3v10.2SP1

问题描述: bos 单据,只有单据头,没有单据体,现要下推生成外构入库单,在单据关

联时, 提示与老单关联必须输入物料和计量单位,设了单据头的物料和计 量单位后,还是提示必须输入物料和计量单位。忽视此问题,在下推到入

库单时,物料的单位带不出来,后期也加不上。

是否只有单据体关联才不会出错,单据头的物料和计量单位为什么不行。

解决方法: 3、 在 sp1的环境下新老单不能实现钩稽功能,其他关联关系功能也不健全。

4、 在 SP2的环境虽然提示―老单关联必须输入物料和计量单位‖,但选择继续

能完成你需要的功能。

客户化开发技术资料——K/3 BOS开发百问百答 【摘要】:未审核的老单据不能下推 Bos 单据 【版本】:K310.2SP1&10.2SP2&10.3(所有版本)

问题描述: 单据流程系统默认只能选择已审核的单据,现在客户要求能否包括未审核

的单据,即老工业单据保存后就可以下推生成自定义的bos 单据。

解决方法: 只能选择已经审核的单据下推是在老工业单据序时簿里面控制的,选单时没有此问题,

即流程设计并不是默认只能选择已经审核的单据。

【摘要】:未审核的老单据不能下推 Bos 单据 【版本】:K310.2SP1&10.2SP2&10.3(所有版本)

问题描述: 单据下推如何实现汇总下推,如几张销售出库单下推生成一张 bos 单据,

要求按照源单号、客户进行汇总,即目标单中只要包含每张出库单的合计

数量和金额即可。

解决方法: 由于合并下推/选单涉及的逻辑比较复杂(需要在目标单一条分录里面记录多条源单分

录的内码,或者单独用另外一个表来记录,且涉及反写数量的问题) ,现在BOS没有支 持,也没有简单的办法可以支持,如果不需要数量扣减关系,即关联关系为复制,不

需要上下查,可以使用插件在下推生成单据后来合并。

【摘要】:自定义的bos 单据无法下推生成销售费用发票

【版本】:K/3v10.2SP2&K/3v10.3

问题描述: 自定义的 bos 单据无法下推生成销售费用发票,提示下标越界。在定义单

据转换流程时提示必须包含物料等内容,而费用发票中是没有物料的,自

定义的bos单据中也没有物料,不知道这个转换流程如何定义 客户化开发技术资料——K/3 BOS开发百

问百答

解决方法: 费用发票由于其特殊性,在k/3内部也是特殊处理才完成选单功能的,暂时没有简便

的方法来通过流程设计完成选单功能。

【摘要】:无物料编码时,下推报错

【版本】:K/310.2SP2

问题描述: 项目为一个数据接口:接口文件导入生成 BOS 单据;但接口文件中的物料

和 k/3 中物料不能一一对应;现在考虑在 BOS 单据中不录入物料,在老单 中指定物料,单据保存时把老单中物料反写到 BOS 单据中。出现的问题: K/3Bos 新增单据下推到老单关联时,关联关系有物料和计量单位字段。但 客户有时BOS 新单上的物料无法确定,即不录入物料编码,下推报错!

解决方法: 在BOS单据将物料转换好之后再下推到老单中,无法确定的物料可以使用一种通用的

物料来代替,下推到老单后由用户修改。但这种处理不好。

【摘要】:下标越界 【版本】:K/3v10.2Sp2

问题描述: 在 10.2sp2 下 BOS 做了一张单据下退生成销售报价单出现下标越界错误

解决方法: 这可能是系统的Bug,可以用update ICSelbills set faction='' where faction='0'清除错误的

元数据即可解决。

客户化开发技术资料——K/3 BOS开发百问百答

【摘要】:下推发货通知单的时候,所有自定义字段中的文本字段在发货通知单都变成了0

【版本】:K/3v10.2SP1&K/3v10.2Sp2&K/3v10.3

问题描述: 新做的BOS单据(配置单)下推发货通知单的时候,所有自定义的文本字段

在发货通知单都变成了0

解决方法: 这是系统的一个bug,可执行以下脚本来解决:

delete ICTemplate where fid='g01' and ffieldname in ('FSelTranType','FSelBillNo') INSERT INTO ICTemplate (FID, FCtlIndex, FTabIndex, FCaption, FCtlType, FLookUpCls, FNeedSave, FValueType, FSaveValue, FFieldName, FLeft, FTop, FWidth, FHeight, FEnable, FPrint, FFontName, FFontSize, FSelBill, FMustInput, FFilter,

FRelationID, FAction, FLockA, FROB, FDefaultCtl, FVisForBillType, FVBACtlType, FRelateOutTbl, FSysMustInputItem, FCaption_CHT, FCaption_EN, FInEntryForSPrint, FRMustInput, FIsVisibleForList, FCanEditedAllTime, FAllowCopy, FDefaultValue,

FMaxValue, FMinValue, FFormat) VALUES ('G01',35,15,'选单号:',5,-1,0,0,0, 'FSelBillNo',0,0,2250,330,32,1,'宋体',9,0,0,'','','',1,3,1,

31,'Kdtext',1,0,'选单号:','Number of document selection',0,0,1,1,0,'','','',' ')

GO

INSERT INTO ICTemplate (FID, FCtlIndex, FTabIndex,

FCaption, FCtlType, FLookUpCls, FNeedSave,

FValueType, FSaveValue, FFieldName, FLeft, FTop, FWidth,

FHeight, FEnable, FPrint, FFontName, FFontSize, FSelBill, FMustInput, FFilter, FRelationID, FAction, FLockA,

FROB, FDefaultCtl, FVisForBillType, FVBACtlType, FRelateOutTbl, FSysMustInputItem, FCaption_CHT, FCaption_EN, FInEntryForSPrint, FRMustInput, FIsVisibleForList, FCanEditedAllTime, FAllowCopy, FDefaultValue, FMaxValue, FMinValue, FFormat) VALUES ('G01',34,14,'源单类型:',2,-35,0,3,1, 'FSelTranType',0,0,2250,330,32,1,'宋体',9,0,0,'FID=84',

'FSelTranType','RESET,FSelBillNo,

FRemark;',1,3,1,31,'Kdtext',0,0,'源单类型:',

'Src doc type:',0,0,1,1,0,'','','',' ')

GO

客户化开发技术资料——K/3 BOS开发百问百答 【摘要】:10.2sp1 钩稽后设过滤条件不起作用

【版本】:K/3v10.2SP1+0704

问题描述: 源单和目标单都是bos单据.设置关系为钩稽 ,过滤条件处打勾后, 选单时

选的是所有单据,而不是根据过滤条件过滤后的单据 即钩稽后设过滤条件

不起作用。

解决方法: 经测试,的确存在如下问题,可以升级10.2sp2或10.3,或者写如下插件来实现过滤

功能

Private Sub m_BillInterface_BeforeSelBills

(ByVal lSelBillType As Long, ByVal oDataSrv As Object, ByVal dctLink As Object, sFilter As String, dctParam As Object)

if len(sFilter)>0 then

sFilter = sFilter & \\

else

sFilter=\

& m_BillInterface.GetFieldValue(\

end if End Sub

其中FBase3是源单表头的部门字段,FBase是目标单表头的部门字段。

【摘要】:关联复制

【版本】:K/3v10.2SP1&K/3v10.2Sp2&K/3v10.3

问题描述: 在 BOS 中的―关联复制‖与―复制‖有什么区别?在设计中应该怎样运用?

解决方法: 关联复制与复制的区别在于,关联复制会在目标单保存单据之间的关联关系,这样选

单完成后可以通过上下查查询单据之间的关系,而复制则不会

【摘要】:老单下推新单过滤条件的设定 【版本】:K/3v10.2SP1&K/3v10.2Sp2&K/3v10.3

问题描述: 在 10.2 Sp1 的 BOS 选单时,可以设定 ICClassLink 中的 FCondition 实现

原单过滤,但是升级成10.3 后就报错,经过测试发现选单后(就是弹出原

单选择界面后) ,会根据 ICClassLink.FCondition 的值进行了再次判断。客户化开发技术资

料——K/3 BOS开发百问百答

这样就会产生一个表别名体系问题:ICClassLink.FCondition 中表示的原 单叙事簿的别名体系。选单后返回再次检测时使用的是目标单据别名体系。 但是这两个别名体系肯定会产生冲突的。请问如何解决。就算把目标单据 的别名体系与原单的别名体系改成一致,这样做是可以的。但是如果多选

单就不能使用这个方法

解决方法: 这是老单序时簿在新单和选单返回时解析方案不一致造成的。解决方案如下:

利用老单固定的别名v1表头,u1表体,采用子查询的方式规避。

范例代码如下:

update icclasslink set fc'01''%)'

where fdestclasstypeid=300000000 and fsourclasstypeid=-81

【摘要】:在老单据中选取新单如何选取多张单据

【版本】:K/3v10.2SP1&K/3v10.2Sp2

问题描述: 新单下推(钩稽)老单时,在新单序时簿里可以选中多张单据下推生成老

单,但在老单单据中选取新单是不能选取多张单据,怎样解决

解决方法: 在ICClassLink.FRemark中加上―‖后就能选取多张单

【摘要】:BOS 单据下推到外购入库单时无法选择红字单据

【版本】:K/3v10.2SP1&PT0704

问题描述: 在 BOS 单据下推到外购入库单时无法选择红字单据,只能是蓝字单据?BOS

单据下推生成老单的时候,怎样把BOS 单据的单据号显示在老单上 客户化开发技术资料——K/3 BOS开

发百问百答

解决方法: 1、 BOS单据下推到老单没有处理红兰字单据,默认就是蓝字单据,目前下推没有处理

红字单据。

2、 BOS单据下推生成老单的时候,使用钩稽就可以把BOS单据的单据号显示在老单上。

大力水手 2009-08-01 21:40:39.0

【摘要】:如何用BOS单据体字段推成目的单据(老单)的单据头字段

【版本】:K/3v10.2SP1&K/3v10.2Sp2&K/3v10.3

问题描述: 开发过程中需要从一张 BOS 单据下推生成一张 K/3 老单据,其中要从源单

据的一个单据体字段推成目的单据的单据头字段,只能通过插件开发来实 现。但是在插件开发中发现不能对目的单据即 K/3 老单据进行定位,所以

不知道这个功能能否通过插件开发来实现

解决方法: 在BOS单据中增加一个隐藏的字段,单据保存时用插件代码自动把单据体要下推的字段

赋值到单据头这个字段中,然后再定义单据头下推到单据头,这样就不用在老单据中定

义插件了

【摘要】:如何使Bos单据表体的字段对应到老单的表头上的字段

【版本】:K/3v10.3

问题描述: 如何使Bos单据表体的字段对应到老单的表头上的字段

解决方法: 要想使Bos单据表体的字段携带到老单的表头上,单据转换流程里并不能设置这种

关联关系,可以通过更改老单的选单模板来实现。下面以Bos单据(采购申请单)表体

供应商字段如何携带到老单采购订单的表头的供应商字段为例来说明。

请在查询分析器中执行如下SQL:

--供应商携带

DELETE FROM ICSelbills WHERE FID='P02' AND FFieldName='200000005' AND FDstCtlField='FSupplyID'

INSERT INTO ICSelbills(FID,FFieldName, FDstCtlField,FSelType,FDK,FColName,FName, FTableName,FTableAlias,FAction,FROB,FAllowEdited)

VALUES ('P02','200000005','FSupplyID', 客户化开发技术资料——K/3 BOS开发百问百答

2,0,'FSupplyID','FBase3', 't_BOS200000005Entry2','u1','',0,0)

INSERT INTO ICSelbills(FID,FFieldName,FDstCtlField,

FSelType,FDK,FColName,FName,

FTableName,FTableAlias,FAction,FROB,FAllowEdited)

VALUES ('P02','200000005','FSupplyID',2,2,

'FSupplyNumber','FNumber', 't_Supplier','t_8','',0,0)

INSERT INTO ICSelbills(FID,FFieldName,FDstCtlField, FSelType,FDK,FColName,FName,FTableName, FTableAlias,FAction,FROB,FAllowEdited) VALUES ('P02','200000005','FSupplyID', 2,1,'FSupplyName','FName','t_Supplier',

't_8','',0,0) GO

--建立供应商和Bos单据的供应商的关联关系 DELETE FROM ICTableRelation WHERE FBillID='P02' AND FFieldID='200000005'

AND FFieldName='FBase3'

INSERT INTO

ICTableRelation(FTypeID,FInterID, FTableName,FTableNameAlias,FFieldName, FTableName11,FTableNameAlias11,FFieldName11,

FLogic,FBillID,FFieldID,FMode,FIndex,FCond ition,FLeftParentheses,FRightParentheses, FLogicOperator,FISConst,FConstType,FSubFilter)

VALUES (0,6,'t_BOS200000005Entry2','u1',

'FBase3','t_Supplier','t_8','FItemID',

'*=','P02','200000005',0,0,'

','','','=',0,0,'')

GO

执行完后进入BOS,保存一下采购申请单到采购订单的转换流程,就可以了。

【摘要】:单价和金额携带不过来

【版本】:所有版本

问题描述: BOS 开发单据--》老销售发票,设置完单据转换流程后,分录中数量可携 带,但是单价和金额携带不过来 客户化开发技术资料——K/3 BOS开发百问百答

解决方法: 启用了价格政策,关掉就可以了 【摘要】:Bos 单据如何同时选择两张老工业单据

【版本】:K/3v10.3

问题描述: 新增一张 bos 单据\运输单\在单据中同时选择\销售出库单\和\调拨单\

是否支持同时两种类型的源单,如何操作才能实现现在选了一张,再选另一

张时不会把前次的选择清除

本文来源:https://www.bwwdw.com/article/q2z8.html

Top