金蝶 - k3 - BOS开发百问百答 下载本文

内容发布更新时间 : 2024/11/8 13:55:43星期一 下面是文章的全部内容请认真阅读。

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 单据那样,有默认 的“本期”,“红蓝字”等过滤条件?