金蝶_k3_BOS开发百问百答

金蝶_k3_BOS开发百问百答
金蝶_k3_BOS开发百问百答

金蝶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(""FFilter"") = "" t_BOS200000003.FDate >= '2008-01-07' and

t_BOS200000003.FDate <= "" & Now

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="" & StockID & "" AND t1.FItemID="" & ItemID

【摘要】:插件中K3Lib.GetStockQty 函数的使用

【版本】:K3 V11.0 多语言及以下版本

问题描述:如何查找某个物料在某个仓库中的数量和精度?

解决方法:GetStockQty这个方法是不分虚仓和实仓。

dctParams应该这样封装:

Dim dctParas As KFO.Dictionary

Dim lngQtyDecimal As Long

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

dctParas(""FQtyDecimal"") = 0 '该项会在函数GetStockQty 调用后,赋上该物料的

数量精度,即物料的数量含有多少位小数位

m_BillInterface.K3Lib.GetStockQty lngItemID,lngUnitID,dctParas

lngQtyDecimal = val(dctParas(""FQtyDecimal"")) 客户化开发技术资料——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("FID"))

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 "mnuEditDelete", "mnuEditModify"

strSQL = "Select FBiller(当前单据制单人)From t_Sales(当前单据主

表名)Where FID(当前单据主键子段)="

& m_ListInterface.GetCurrentSelRowInfo("FID")

lBillerID = m_ListInterface.K3Lib.GetData(strSQL)(0)

If m_https://www.360docs.net/doc/6014653927.html,erID <> lBillerID Then

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

Cancel = True

End If

Case Else

End Select

End Sub

【摘要】:获取Bos单据单据体已录信息的条数

【版本】:K3v10.2SP1

问题描述:写插件时,如何得到单据体的已录信息的条数

解决方法:单据体的已录的条数用下面的方法可得到。

m_BillInterface.Data("Page2").UBound

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

<>"" then .....)。

【摘要】:插件中获取单据上控件的位置、尺寸信息

【版本】:K3v10.2SP1

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

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

m_BillInterface.BillHeads(1).BOSFields("FDate").FieldTop,其中“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

.listfilterst ring=.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, "FBase", "01.001", "FPrice",

"100.001", "FAmount", "50000"

Next

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

需要赋值。

【摘要】:在Bos 单据按F7 查询供应商信息,按F9 查询采购价格管理信息。

【版本】:K3v10.2SP1&PT0704

问题描述:在新增采购申请单时,在分录中的供应商按F7 能选择供应商信息,按F9 能选到采购价格管理信息,如何在新单中也添加一个供应商,也实现上述功能

解决方法:使用MenuBarClick事件实现F7

1、BeginEdit事件

If dct("FKey") = "要处理字段FKey“Then

m_BillInterface.MenuBar.BOSTools("mnuDataLookUp").Enabled = True

End If

2、MenuBarClick

If BOSTool.ToolName = "mnuDataLookUp" Then

m_BillInterface.GetActiveField dct, col, row

If dct("FKey") = "FBillNo_BS" Then

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

End If

End If

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

Dim obj As Object

Set obj = CreateObject("k3Suplly.SupplyFace")

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("K3MClass.ClassInfo")

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("FCurrencyID ", "", 0)

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

("Map")("FItemID"))("FFilter") = " x2.FNumber =’” &

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("K3ClassTpl.DataSrv")

oDataSrv.ClassTypeID = lClassTypeID

Set 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 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("K3ClassTpl.DataSrv")

oDataSrv.ClassTypeID = lClassTypeID

If oDataSrv.showfilter Then

Set objLookup = CreateObject("K3ClassLookUp.BillLookUp")

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("K3ClassTpl.DataSrv") oDataSrv.ClassTypeID = lClassTypeID

Set oTableInfo = oDataSrv.TableInfo

Set oData = oDataSrv.GetEmptyBill

For i = 1 To m_BillInterface.Data("Page2").UBound - 1

Set oPage2 = oData("Page2")(1).CloneAll

oData("Page2").Add oPage2 '添加到dcData

oData("Page2")(i + 1)("_-0001_FIndex2")("FFLD") = i + 1 '更改分录号Next

For i = 1 To m_BillInterface.Data("Page2").UBound

oData("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) Next

Set oSrv = CreateObject("K3MClass.BillUpdate")

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.V ector 单据体模板信息

'/*备注:

'/********************************************************************/

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("menu")

Set oTool = oBand.BOSTools("mnuEdit")

With oTool

.Visible = False

.Enabled = False

End With

End if

【摘要】:在单据体中让下一条分录自动携带上一条分录的数据

【版本】:K/3BOS 所有版本

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

解决方法:示例代码:

'物料录入后,第二行的值自动默认第一行的值

If dct("FKey") = "FItemID" And row > 1 Then

m_BillInterface.SetFieldValue "FBase_TH",

m_BillInterface.GetFieldValue("FBase_TH", row - 1, Enu_ValueType_FFND),

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("FUser1")

If Not (CStr(vValue) = "" Or CLng(vValue = 0)) Then

MsgBox "当前合同已经生成凭证!", vbExclamation, "金蝶提示"

Exit Sub

End If

'此处添加处理生成凭证菜单对象的Click 事件

Set mvch = New KFO.Dictionary

mvch("FDate") = Now 客户化开发技术资料——K/3 BOS开发百问百答

mvch("FGroup") = "金华泰项目"

mvch("FReference") = m_BillInterface.GetFieldValue("FID")

Set mvchentry = New KFO.Vector

vValue = m_BillInterface.GetFieldValue("FInteger") '合同金额

'创建凭证分录

Set entry = New KFO.Dictionary

entry("FExplanation") = m_BillInterface.GetFieldValue("FNote")

entry("FAccountID") = m_BillInterface.GetFieldValue("FBase")

entry("FDC") = 1

entry("FAmount") = vValue

'数量&单价

entry("FQuantity") = 0

entry("FUnitPrice") = 0

entry("FMeasureUnitID") = 0

'创建核算项目明细

Set mvchdetail = New KFO.Vector

Set detail = New KFO.Dictionary

detail("FItemClassNumber") = "002"

detail("FItemNumber") = "02"

mvchdetail.Add detail

Set entry("_Details") = mvchdetail

mvchentry.Add entry

Set mvch("_Entries") = mvchentry

Set entry = New KFO.Dictionary

entry("FExplanation") = m_BillInterface.GetFieldValue("FNote")

entry("FAccountID") = m_BillInterface.GetFieldValue("FBase1")

entry("FDC") = 0

entry("FAmount") = vValue

'数量&单价

entry("FQuantity") = 0

entry("FUnitPrice") = 0

entry("FMeasureUnitID") = 0

'创建核算项目明细

Set mvchdetail = New KFO.Vector

Set detail = New KFO.Dictionary

detail("FItemClassNumber") = "002"

detail("FItemNumber") = "02"

mvchdetail.Add detail

Set entry("_Details") = mvchdetail 客户化开发技术资料——K/3 BOS开发百问百答

mvchentry.Add entry

Set mvch("_Entries") = mvchentry

Dim s As String

s = "ConnectString={Provider=SQLOLEDB.1;User ID=sa;Password=ahyj;Data 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("EBSGLV oucher.V oucherUpdate")

glvch.Create s, mvchs = "Update t_BOS_ht set

fUser1="

& m_https://www.360docs.net/doc/6014653927.html,erID & " where fid=" &

m_BillInterface.GetFieldValue("FID")

m_BillInterface.K3Lib.UpdateData s

m_BillInterface.RefreshBill

MsgBox "凭证生成成功!", vbInformation, "金蝶提示"

Case "变更"

End Select

End Sub

相关主题
相关文档
最新文档