文档库 最新最全的文档下载
当前位置:文档库 › 金蝶 K3 BOS开发百问百答(2007年版)

金蝶 K3 BOS开发百问百答(2007年版)

金蝶 K3 BOS开发百问百答(2007年版)
金蝶 K3 BOS开发百问百答(2007年版)

K/3 BOS开发百问百答(版本:2007版)

行业产品部

2008年1月

目录

一、业务单据篇_____________________________________________________1【摘要】如何控制BOS单据不允许删除_______________________________________________1【摘要】应收应付套打_____________________________________________________________1【摘要】收款单(BOS老单据)模板修改后,多个用户同时新增单据时出错_______________1【摘要】BOS单据新增功能网络控制问题______________________________________________1【摘要】通过插件对单据体某一列进行锁定或解锁_____________________________________2【摘要】BOS插件调用F7功能_______________________________________________________2【摘要】如何在插件中调出BOS单据的序事簿并且不弹出过滤窗口_______________________3【摘要】用户类型字段赋值_________________________________________________________4【摘要】在插件中刷新序事簿_______________________________________________________5【摘要】如何在BOS单据体中显示红字或蓝字_________________________________________5【摘要】获取当前被审核单据的FID值________________________________________________5【摘要】组件中如何直接调用取得即时库存___________________________________________6【摘要】单据编号不允许重复_______________________________________________________6【摘要】BOS单据生成凭证出错______________________________________________________6【摘要】下推按钮放在单据上,而不是序事簿里_______________________________________6【摘要】用BOS插件支持DDE吗_______________________________________________________7【摘要】BOS插件如何调用存储过程_________________________________________________7【摘要】如何在单据显示前给字段预赋值_____________________________________________8【摘要】无法复制分录_____________________________________________________________8【摘要】如何在10.3和10.4的老单据上添入图形字段,并可套打出来____________________8【摘要】K3 V10.3 BOS能否在change事件中读取到改变前的原值_________________________8【摘要】在插件中实现自动保存_____________________________________________________9【摘要】对所选单据分录如何正行高光显示或改变所选中行的背景色_____________________9【摘要】如何在BOS单据的插件中调用老单据__________________________________________9【摘要】如何在BOS单据(供应链单据)中使用F12查看即时库存________________________13【摘要】BOS单据下推老单据时如何处理辅助属性____________________________________13【摘要】开发一张BOS单据在编辑状态下能否输入一个单据号调出整张单据的信息_________14

【摘要】在生成记录凭证时相同的分录不能合并______________________________________14

【摘要】如何在插件中获取单据体某个字段的值______________________________________14【摘要】K3V10.3是否支持基础资料多选____________________________________________15【摘要】BOS V10.4按单生居凭证,合并生成凭证不见了________________________________15【摘要】如何在插件中调出附件界面________________________________________________15【摘要】如何在插件中执行值更新事件______________________________________________15【摘要】升级至10.4后,进入BOS系统业务单据不能保存_______________________________16二、多级审核篇____________________________________________________17【摘要】关于多级审核指定下级审核人______________________________________________17【摘要】处理多极审核设置跳转条件后有选择性地发送消息____________________________17【摘要】K3 10.3 BOS叙事簿如何实现批审核功能_____________________________________18【摘要】怎样显示驳回信息________________________________________________________18【摘要】BOS单据如何自动启动多级审核____________________________________________18【摘要】远程服务器不存在或不可用________________________________________________19三、单据转换流程篇________________________________________________20【摘要】不能实现记录选择________________________________________________________20

【摘要】如何新增K3工业单据(老单据)之间的单据转换流程?另外如果用BOS可以满足,客户是否需要沟买BOS?___________________________________________________20

【摘要】如何控制已关联的单据不能再下推__________________________________________20【摘要】如何将下推按钮移到序事簿工具栏上________________________________________21【摘要】BOS单据下推老单据时无法处理值更新事件__________________________________21【摘要】删除BOS单据时报错,提示“对象名T1无效”_________________________________21【摘要】生产任务单下推BOS单据,关联关系为钩稽或关联复制时报错__________________21【摘要】新单推老单时如何实现严格控制____________________________________________22【摘要】请设置关联源单内码保存__________________________________________________22四、报表篇_________________________________________________________1【摘要】万能报表中选择数据表的问题_______________________________________________1五、部署发布篇_____________________________________________________2【摘要】应收应付系统中的BOS单据(老单据)修改后如何发布____________________________2【摘要】基础资料自定义属性不能随BOS安装包一起发布_______________________________2

【摘要】无法发布_________________________________________________________________2六、其他篇_________________________________________________________4【摘要】BOS登录问题_____________________________________________________________4

【摘要】K/3账套管理密码丢失的处理方法___________________________________________4【摘要】如何使远程桌面登录到中间层服务器上的K3客户端能够正确登录_________________4【摘要】K3工业单据动态过滤______________________________________________________4【摘要】如何设置BOS开发的模块的帐期______________________________________________5【摘要】关于k3v10.4的一个bug____________________________________________________5【摘要】加密狗使用记录不存在(或无效),请退出重新登录______________________________5【摘要】10.4软加密后,还能不能帮助客户进行二次开发_______________________________6【摘要】账套升级错误_____________________________________________________________6

【摘要】如何在外挂程序中利用VB调用BOS单据及BOS序时薄,BOS单据中的关联关系如何在VB中使用____________________________________________________________________6

【摘要】工业单据插件中如何获得基础资料类型字段的内码_____________________________7

一、业务单据篇

【摘要】如何控制BOS单据不允许删除

版本:所有版本

问题描述:在K3BOS开发的单据序时薄中,如何实现选中的单据不允许删除,只能在外挂系统(二次开发)中删除,未发现单据序时薄的BeforeDeleteBill事

件,只有AfterDeleteBill事件,插件中无法实现上述控制。

解决方法:有两种方法:

1、可以在单据的操作管理中,设置“删除”操作在序时薄所有场景不可见。

2、可在单据序事簿插件的MenuBarClick事件中进行控制。

【摘要】应收应付套打

版本:所有版本

问题描述:在应收应付单据上(比如合同应收)需要加客户联系电话这一字段(客户的属性),如何能打印该字段?

解决方法:因应收应付客户为核算项目类别+核算项目方式支持,目前BOS无法支持该种方式核算项目资料属性的携带和打印,可通过以下方式变通解决:

1、通过BOS设计器给对应单据新增一个客户基础资料,字段名称为Fbase,中文名称

为客户打印,保存单据模板。

2、执行以下SQL

update ICClasstableinfo set faction='SetEquation{FBase}' where fclassty

peid=1000019 and fpage=1 and fkey in ('FCustomer')

update t_rpcontract set fbase=fcustomer

Update icclasstype set fid=fid

3、 然后在套打中通过“客户打印”的属性就可以打印客户的属性了。

【摘要】收款单(BOS老单据)模板修改后,多个用户同时新增单据时出错

版本: K3v10.3SP1

问题描述:BOS修改了应收款系统的“收款单”,但保存后,只能一个用户录入收款单,其他用户进入“收款单录入”时系统提示“出现冲突和错误”.

经跟踪分析后发现,在BOS平台修改“收款单”后,系统会修改“功能互

斥表”,将备份帐套的“功能互斥表”覆盖当前修改“收款单”后的帐套

的“功能互斥表”后,其就正常了,请及时纠正这一BUG

解决方法:该问题已有补丁,请访问mykingdee - 技术支持部 -补丁下载 - 补丁号 PT005884。 【摘要】BOS单据新增功能网络控制问题

版本:K3v10.3、10.3SP1

问题描述:新建一BOS单据,然后给其设置了网络控制。出现的问题:该单据只能有一个人新增,第二个人新增报[当前功能与其他用户冲突无法使用]。

解决方法:对相应帐套执行如下SQL:

delete t_mutex where ffuncid in (select ffuncid from ICClassmutex where foperate

name like '%新增%' and fclasstypeid=200000000)

(FClasstypeid是ICClassType表中的FID)

【摘要】通过插件对单据体某一列进行锁定或解锁

版本:所有版本

问题描述:如何在用户正在使用的单据体内指定某一列进行锁定、解锁或者隐藏或显示?

解决方法:锁定或解锁:

m_billinterface.LockCell(ByVal dct As KFO.Dictionary, _

ByVal Row As Long, ByVal bValue As Boolean)

'/*@ bValue Boolean True 锁定,False 不锁定

'/*@ dct KFO.Dictionary 某字段的模版用GetFieldInfoByKey得到

'/*@ Row Long 行,-1为所有行

隐藏或显示:

m_billinterface.ShowHideField(ByVal dct As KFO.Dictionary, _

ByVal bValue As Boolean)

dct KFO.Dictionary某字段的模版 ,用GetFieldInfoByKey得到

bValue Boolean Ture显示False隐藏

【摘要】BOS插件调用F7功能

版本:K3v10.4

问题描述:如何在BOS插件中调用BOS基础资料的序事簿?

解决方法:调用K3Lib.LookUpClass'

/*描述:F7查找基础资料功能(包括旧核算项目、科目、币别、批号、新平台基础资料等)

'/*参数:

'/*@ dct KFO.Dictionary 查找类型字段模板信息

'/*@ pCurValue Variant 用户当前录入的值

'/*@ bEntryType_MutiRow 是否为多行选择

'/*返回值:oReturnObj

Public Function LookUpClass(ByVal dct As Object, _

ByVal pCurValue As Variant, _

Optional ByVal bMutiSel As Boolean = False, _

Optional ByRef oReturnObj As Object = Nothing) As

String

dct 包含以下内容:

dct("FDSPFieldName") = ""

dct("FFilter")

dct("FFilterGroup")

dct("FFNDFieldName")

dct("FLookUpClassID")

dct("FLookUpType")

dct("Fproperty")

FLookUpType取值说明:

1\基础资料

2\辅助资料

3\BOS基础资料

4\科目

5\币别

6\计量单位

7\用户

8\批次

9\核算项目类别

10\核算项目

13\系统用户

14\仓位管理

17\辅助属性

例:'BOS基础资料

Dim obj As Object

Dim dctBosBase As KFO.Dictionary

Set dctBosBase = New KFO.Dictionary

dctBosBase("FLookupClassID") = 200000001'FClassTypeID

dctBosBase("FLookUpType") = 3' 10:核算项目,2:辅助资,4:科目

' DctBosBase("FType")=辅助资料的TypeID

dctBosBase("Filter") = ""

dctBosBase("FFNDFieldName") = "FName"

m_BillInterface.K3Lib.lookUpClass(dctBosBase, "", , obj)

【摘要】如何在插件中调出BOS单据的序事簿并且不弹出过滤窗口

版本:所有版本

问题描述:如何在插件中调出BOS单据的序事簿并且不弹出过滤窗口?

解决方法:Private Function ShowListByReturn(ByVal lClassTypeID As Long) As Object Dim oDataSrv As Object

Dim objLookup As Object

Dim dFilter As KFO.Dictionary

On Error GoTo err_ctr

Set oDataSrv = m_BillInterface.K3Lib.CreateK3Object("K3ClassTpl.DataSrv")

oDataSrv.ClassTypeID = lClassTypeID

Set objLookup =

m_BillInterface.K3Lib.CreateK3Object("K3ClassLookUp.BillLookUp")

Set dFilter = New KFO.Dictionary

dFilter("HeadSort") = "" '单据头排序条件

dFilter("EntrySort") = "" '单据体排序条件

dFilter("SelectPage") = "1,2," '1为单据头,2为单据体1,3为单据体2,此处表

明选单单据体为[单据头]和[单据体1]

dFilter("FilterString") = "FBillno='000001'"

oDataSrv.Filter = dFilter

objLookup.ClassTypeID = lClassTypeID

Set objLookup.DataSrv = oDataSrv

objLookup.Lookup

Set ShowListByReturn = objLookup.VectReturn

Set dFilter = Nothing

Set oDataSrv = Nothing

Set objLookup = Nothing

Exit Function

err_ctr:

Set dFilter = Nothing

Set oDataSrv = Nothing

Set objLookup = Nothing

End Function

【摘要】用户类型字段赋值

版本:所有版本

问题描述:BOS开发检斤过磅单,内有皮重司磅员和毛重司磅员两个字段,这两个字段都是用户类型的字段,如何给这两个字段赋值?

解决方法:目前BOS中的SetFiledValue无法实现。现变通实现如下:先修改数据包,再更新界面值。

Dim dctData As KFO.Dictionary

Dim dct As KFO.Dictionary

Set dct = m_BillInterface.GetFieldInfoByKey("FUser", "", 0)

Set dctData = m_BillInterface.GetDataFld(dct, 0)

dctData("FDsp") = "Administrator"

dctData("FFND") = "Administrator"

dctData("FFLD") = 16394

dctData("FModify") = 1

m_BillInterface.SetText dct, "Administrator"

【摘要】在插件中刷新序事簿

版本:所有版本

问题描述:如何在BOS单据序事簿插件刷新序事簿?

解决方法:m_ListInterface.List.RefreshList

【摘要】如何在BOS单据体中显示红字或蓝字

版本:K3v10.4

问题描述:如何在BOS单据体中显示红字或蓝字?

解决方法:Public Function ChangeBillColor(ByVal RedOrBlue As Boolean) '改变单据体字体颜色,true 为红字,false 为黑体字

' On Error GoTo HError:

Dim DctInfo As KFO.Dictionary

Set DctInfo = New KFO.Dictionary

Dim i, Count As Long

With m_BillInterface

Count = .BillEntrys.Item(1).BOSFields.Count

If RedOrBlue = True Then

For i = 1 To Count

Set DctInfo

= .GetFieldInfoByKey((.BillEntrys.Item(1).BOSFields.Item(i).FKey), "", 0)

DctInfo("FTextColor") = vbRed

.BillCtl.setentryctlpropery DctInfo, "textcolor"

Set DctInfo = Nothing

Next i

Else

For i = 1 To Count

Set DctInfo

= .GetFieldInfoByKey((.BillEntrys.Item(1).BOSFields.Item(i).FKey), "", 0)

DctInfo("FTextColor") = vbBlack

.BillCtl.setentryctlpropery DctInfo, "textcolor"

Set DctInfo = Nothing

Next i

End If

End With

HError:

Set DctInfo = Nothing

End Function

注明:以上只是显示红、蓝字而已,但并不具备类似于老单据的红、蓝字功能。

【摘要】获取当前被审核单据的FID值

版本:K3v10.4

问题描述:在进行BOS 单据批量审核的时候,在每张单据审核后更新库存之类的动作

可以通过AfterMultiCheck事件(每张单据审核后都后触发该事件)更新库

存,但如何获取当前被审核单据的单据内码(FID)值?

解决方法:已提供补丁PT010687

【摘要】组件中如何直接调用取得即时库存

版本:K3v10.4

问题描述:插件如何实现直接取到即时库存数量(在插件中要控制某单的数量不能超过库存数)。老版本都是直接通过SQL语句查询,在事件里直接设置相关参

数就可以取到了,是否有组件可以直接调用?

解决方法:10.4插件K3lib提供了GetStockqty这个函数可以取数即时库存数;

GetStockQty 函数

库存查询函数。

语法

Object.GetStockQty (lngItemID,lngUnitID)

部分 描述

Object K3Lib 对象的一个实例。

lngItemID long 类型。被查询的物料内码。

lngUnitID long 类型。被查询的计量单位内码。

dctParams KFO.Dictionary 对象。可选参数,初始化传入辅助属性内码(AuxPropID),

传出库存精度(FQtyDecimal)。 返回值:返回被查询物料指定单位的库存值。

【摘要】单据编号不允许重复

版本:K3v10.4

问题描述:采用远程桌面登陆K3客户端,如果两台机器新增的BOS单据与当前单据编号相同时,则有一台机器无法同时保存单据。提示:单据编号不允许重复。解决方法:可以通过系统参数维护供应链整体选项第25条解决。

【摘要】BOS单据生成凭证出错

版本:K3v10.4

问题描述:BOS单据生成凭证,提示 “取得的凭证分录数小于两条”,其他设置都是正常的。

解决方法:是在凭证模板设计里摘要是取单据体里的备注字段,而该单据的单据体里备注字段为空,可以将该备注字段填上。

【摘要】下推按钮放在单据上,而不是序事簿里

版本:K3v10.4

问题描述:BOS 定义的单据做转换流程后,都是在序时薄上有个下推按钮,问:"下推"

的功能是否能放在单据上,在单据上可点击下推。

解决方法:现有功能无法满足该需求,但可在总部相关开发人员指导下进行单独开发,或者到mykingdee需求反馈系统提单,提出需求,以补丁完善该功能。

【摘要】用BOS插件支持DDE吗

版本:K3v10.4

问题描述:用BOS插件支持DDE吗?

程序测试的DDE取数都很正常,但发布到BOS插件以后,就会出现错误.代码

如下:

On Error GoTo err:

txtDDE.LinkMode = 0

txtDDE.LinkTopic = "TRADE|IO"

txtDDE.LinkTimeout = 50

txtDDE.LinkItem = "INPUT"

txtDDE.LinkMode = 1

txtDDE.LinkExecute "@GI;23"

txtDDE.LinkMode = 0

txtDDE.LinkTopic = "TRADE|IO"

txtDDE.LinkTimeout = 50

txtDDE.LinkItem = "OUTPUT"

txtDDE.LinkMode = 1

txtDDE.LinkRequest

strList = txtDDE.Text

strDDE = Split(strList, ",")

strList = strDDE(9)

strList = Mid(strList, 2, Len(strList) - 4) / 1000

Exit Sub

这个控件在单独的VB窗体上,说明一点在EXE文件即可,但编译成DLL以后,

就出问题.

解决方法:编译成DLL出错的话可能是以下错误:

Run-time error '369'

Operation not valid in an ActiveX DLL

出错的代码应该是:txtDDE.LinkMode = 1 这一句上。也就是在建立DDE连接时出了问

题。对DDE分析应该是 “动态数据交换(Dynamic Data Exchange,DDE)一种 进程间 通

信形式。”当你编译成EXE文件时,每次运行是独立的进程,而编译成DLL时,只是由

某个进程用来创建对象用,已经不能算是独立的进程了,所以会出现在ActiveX Dll上

操作不合法的问题。

个人建议解决办法:把要从其他程序获取的数据暂存于文件中,在插件里面读取数据。【摘要】BOS插件如何调用存储过程

版本:所有版本

问题描述:在BOS插件里,如何使用存储过程,现有方法是建立了一个连接,有更好

解决方法:可以通过K3Lib的UpdateData方法执行,详情参考插件开发手册。

【摘要】如何在单据显示前给字段预赋值

版本:所有版本

问题描述:在单据显示之前,是否能预先设置一下其中部分字段的值?

解决方法:在单据插件中通过响应AfterNewEmptyData事件去给某个字段预先设置值,代码示例如下:

m_BillInterface.SetFieldValue "FText1", "test"

注:以上代码给单据头上的FText1文本字段设置值“test”

【摘要】无法复制分录

版本:K3v10.3SP1

问题描述:在一张BOS单据上有多行分录数据,挑选其中一条分录进行行复制("Ctrl+K"), 提示物料已经被禁用无法复制 。用多个账套进行测试得出,

当行复制时对应的分录如果文本型的字段录入为数字, 则会进行

"SELECT FNumber,FName,FDeleted FROM t_Item WHERE FItemID=**"

检测,造成错误提示。

解决方法:此问题是由于单据模版错误造成的。由于文本类型的字段可以取基础资料相关属性,造成其对应的模版里面的数据查找类型可能是不正确的值(如果并没有取基础资料的相关

值)而复制行的时候对于原始的基础资料是否已经禁用作了判断 ,当文本字段为其他

值时该sql不会有结果返回所以不会出错,而当文本字段刚好为某已禁用的基础资料的

内码的时候就会提示该信息。解决办法是修改icclasstableinfo表中该字段的

FLookUpType为0,即可这样就不会进行检查了。

【摘要】如何在10.3和10.4的老单据上添入图形字段,并可套打出来

版本:K3v10.3以上版本

问题描述:现在K3v10.4的BOS单据上可加入图形字段,可如何在10.3和10.4的老单据上添入图形字段,并可套打出来?

解决方法:目前无法在老单据上增加图片字段,老单本身都没有支持图片类型的字段。可以考虑用附件来处理,但是无法直接在单据上显示出来,需要另外的界面单独处理。

【摘要】K3 V10.3 BOS能否在change事件中读取到改变前的原值

版本:K3v10.3以上版本

问题描述:K3 V10.3 BOS能否在change事件中读取到改变前的原值?比如第一个表体(多分录)中某一项标题“数量”,字段“FQty”,从8修改到12,在

change事件中能否读取到这个8?

解决方法:用 GetDataFld或者 GetDataFldbyKey取得对应字段的数据包

返回值的dct里面 的 FOLD即为修改前的值。

如 dct("FOLD")

dct("FFND")

dct("FFLD")

dct("FDSP")

【摘要】在插件中实现自动保存

版本:K3v10.3以上版本

问题描述:新建BOS单据《磅码单》,在单据上加了一个按钮,用于取重量,能否在插件中实现点击此按钮时自动保存该单据。

解决方法:在插件的CommandClick事件中调用m_BillInterface.SaveBill方法保存单据。

【摘要】对所选单据分录如何正行高光显示或改变所选中行的背景色

版本:K3v10.4

问题描述:在输入较多的单据分录时,希望对当前编辑的行进行特殊显示,以和其它分录区别开来,便于录入。效果类似于录入工业单据分录的背景色显示。解决方法:Public Function ChangeBillColor(ByVal lngBackColor As Long, ByVal lngRow As Long) '

' On Error GoTo HError:

Dim DctInfo As KFO.Dictionary

Set DctInfo = New KFO.Dictionary

Dim i, Count As Long

With m_BillInterface

Count = .BillEntrys.Item(1).BOSFields.Count

For i = 1 To Count

Set DctInfo

= .GetFieldInfoByKey((.BillEntrys.Item(1).BOSFields.Item(i).FKey), "", 0)

DctInfo("FLabelColor") = lngBackColor '颜色值

.BillCtl.setentryctlpropery DctInfo, "labelcolor", lngRow '单据体

Set DctInfo = Nothing

Next i

End With

HError:

Set DctInfo = Nothing

End Function。

【摘要】如何在BOS单据的插件中调用老单据

版本:K3v10.4

问题描述:bos单据中调用显示一张老单据应该如何实现?

解决方法:加入一模块文件(如mdlShare.bas),模块名是mdlCallIndustryBill,具体内容是: 'Call mdlCallIndustryBill.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

Public UserId 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 Boolean Dim objBill As Object

Dim nBillCls As Long '事务类别 (ICTransactiontype.FType)

On Error GoTo lError

'得到单据事务类型的TypeID

If nBillCls = 0 Then nBillCls = GetBillClsID(nTranType)

If nBillCls = 0 Then

MsgBox "单据系统模板错误"

GoTo lError

End If

'-----------------注意:此处参数有改动--------------------'

If nBillType = 0 Then

Set objBill = CreateObject("K3Bills.Bills")

Else

Set objBill = CreateObject("K3BillsEx.Bills")

End If

'-------------------------------------------------------'

Dim dlg As Object

Set dlg = CreateObject("CSystemDlg.Sys")

Dim LocalCnStr As String

Dim sSubID As String

Dim sSubName As String

Dim lModel As Long

Dim lModelDetail As Long

LocalCnStr = dlg.LocalCnn

Set dlg = Nothing

With objBill

.LocalCnn = LocalCnStr

.SystemName = sSubName

.SetOpt UserId, UserName

If Not .SaveVect(1).Lookup("sDsn") Then

.SaveVect(1)("sDsn") = GetConn

End If

If nInterID <> 0 Then

.ListRecordset = SetBillRec(nInterID, nTranType) .ListRSFieldVect = SetBillVect

End If

If Len(sNewBillType) > 0 Then

.NewBillTransType = sNewBillType

Else

.NewBillTransType = VBA.CStr(nTranType)

End If

.Show nBillCls, nShowType

' 'Add By ChenLianli 用于判断是否单据改变了

' bBillValueChaged = .BillValueChanged

End With

' Set objReturn = objBill.BillReturn

Set objBill = Nothing

CallBills = True

Exit Function

lError:

If Err.Number <> 0 Then MsgBox "单据调用出现异常错误。"

CallBills = False

Set objBill = Nothing

End Function

'取工业单据类型ID

Private Function GetBillClsID(ByVal lTranType As Long) As Long

Dim rs As ADODB.Recordset

Dim objTemp As Object

Dim strSql As String

On Error GoTo lError

strSql = "select FType From ICTransactiontype where fid = " & VBA.CStr(lTranType)

Set rs = m_BillInterface.K3Lib.GetData(strSql)

GetBillClsID = rs.Fields("FType").Value

Set rs = Nothing

Set objTemp = Nothing

Exit Function

lError:

Set rs = Nothing

Set objTemp = Nothing

GetBillClsID = 0

End Function

Private Function SetBillVect() As KFO.Vector

Dim tVect As KFO.Vector

Set tVect = New KFO.Vector

Dim tDict As KFO.Dictionary

Set tDict = New KFO.Dictionary

tDict("FColName") = "FInterID"

tDict("FISPrimary") = 1

tVect.Add tDict

Set tDict = New KFO.Dictionary

tDict("FColName") = "FTranType"

tDict("FISPrimary") = 3

tVect.Add tDict

Set tDict = Nothing

Set SetBillVect = tVect

End Function

'取当前数据库连接

Public Function GetConn() As String

Dim lProc As Long

lProc = GetCurrentProcessId()

Set spmMgr = CreateObject("PropsMgr.ShareProps")

If IsObject(spmMgr.GetProperty(lProc, "PropsString")) Then

GetConn = spmMgr.GetProperty(lProc, "PropsString")

Else

GetConn = spmMgr.GetProperty(lProc, "PropsString")

End If

Set spmMgr = Nothing

Exit Function

End Function

'/////////设置选择单据信息//////////////'

Private Function SetBillRec(ByVal aInterID As Long, _

ByVal aTranType As Long) As ADODB.Recordset

Dim tRec As ADODB.Recordset

Set tRec = New ADODB.Recordset

tRec.Fields.Append "FInterID", adInteger

tRec.Fields.Append "FTranType", adInteger

tRec.Open

tRec.AddNew

tRec!Finterid = aInterID

tRec!FTranType = aTranType

tRec.Update

Set SetBillRec = tRec

End Function

Public Property Set BillInterface(ByVal vNewValue As Variant)

Set m_BillInterface = vNewValue

End Property

在BOS单据的插件的show过程里加上以下语句:

https://www.wendangku.net/doc/7a17143695.html,erId = m_https://www.wendangku.net/doc/7a17143695.html,erId

Set mdlCallIndustryBill.BillInterface = m_BillInterface

https://www.wendangku.net/doc/7a17143695.html,erName = m_https://www.wendangku.net/doc/7a17143695.html,erName

在单据工具栏上加一按钮,如测试”mnuTest”,则可在

m_BillInterface_MenuBarClick事件中添加如下代码:

Call mdlCallIndustryBill.CallBills(1, 0, 0, 1) '以新增的方式打开外购入库单

Call mdlCallIndustryBill.CallBills(1, 1788, 1, 1) '以修改方式打开单据内码为

1788的外购入库单

【摘要】如何在BOS单据(供应链单据)中使用F12查看即时库存

版本:K3v10.4

问题描述:如何在BOS单据(供应链单据)中使用F12查看即时库存?

解决方法:可以在物料的值更新事件里定义“单据状态栏显示当前分录即时仓存、安全库存信息”

来变通实现。

【摘要】BOS单据下推老单据时如何处理辅助属性

版本:所有版本

问题描述:BOS单据(供应链单据)下推生成K3老单据时,生成的单据中物料辅助属性为空且不能修改,但可以保存单据,正常新增单据时辅助属性必录。如:

物资审批单(新)下推生成仓库调拨单(老),物资审批单(新)中物料

分录没有“辅助属性”字段,但仓库调拨单(老)中物料分录有“辅助属

性”,且设 为必须录入;此时,下推生成时就会出现上述问题,如何解决?解决方法:在BOS单据的单据体上加上辅助属性,并在单据转换流程的字段关联中将BOS单据的辅助属性字段带到老单据的辅助属性字段。

【摘要】开发一张BOS单据在编辑状态下能否输入一个单据号调出整张单据的信息

版本:K3v10.4

问题描述:使用BOS设计一张过磅单,现有需求:在第一次过磅后单据保存空车重量,车号等信息,在第二次过磅时能否在新增单据的状态下输入车号即能够调

出第一次过磅时保存的单据。

解决方法:可以通过在单据插件的change事件读出需调出的单据的记录集,然后给单据上各字段赋值即可。

【摘要】在生成记录凭证时相同的分录不能合并

版本:K3v10.4

问题描述:根据零售单生成凭证时,一条单据分录对应生成一余凭证分录,即便是相同的分录也不能合并,客户每天都会产生数上万条单据分录,每条分录有

三个数据来源,生成记账凭证就会产生三万条分录,即便客户能容忍如此

庞大而没有多少实际用途凭证,能保证生成凭证不会出错吗?

解决方法:已有相关补丁可供下载,补丁号是PT010561。

【摘要】如何在插件中获取单据体某个字段的值

版本:K3v10.4

问题描述:一张单据界面上有2个单据体,每个单据体都有FAct字段,应如何获得第二个单据体第一行FAct字段的值?

解决方法:假设第一单据体Fact字段的Fkey是Fact,第二个单据体的Fkey是Fact1

有三种方式来获得:

方法一:

Dim obj as bosfield

Dim tmp as double

Set obj=m_billinterface.billentrys(2).bosfields(“fact1”)

Obj.row=1;tmp=obj.value

方法二:

m_billinterface.data(“page3”)(1)(m_billinterface.tableinfo(“map”)(“fact1”))(“ffld”)

方法三:

m_BillInterface.GetFieldValue("fact1", 1, Enu_ValueType_FFLD)

【摘要】K3V10.3是否支持基础资料多选

版本:K3v10.3

问题描述:K3V10.3是否支持基础资料多选?

解决方法:支持核算项目多选,方法是在属性窗口中的功能控制中允许多选打勾即可,但

10.3不支持BOS基础资料多选(注:10.4支持BOS基础资料多选)

【摘要】BOS V10.4按单生居凭证,合并生成凭证不见了

版本:K3v10.4

问题描述:用BOS 定义一张单据后,增加了凭证字号字段,并设置了取数来源,但在操作管理里找不到"按单生成凭证","合并生成凭证" 两个功能了!此前设置

过一次,可以,后来删除了.又重新增加就没有了这两个按钮了!

解决方法:在操作管理中,工具栏上有个引入按钮,单击它调出 引出预定义操作 对话框,分别双击 "按单生成凭证","合并生成凭证",就可以加入操作列表中了。

【摘要】如何在插件中调出附件界面

版本:K3v10.4

问题描述:如何在插件中调出附件界面?

解决方法:请使用一下代码调出附件界面:

Dim obj As Object

Dim lngViewType As Long '1-查看,2-修改

Set obj = CreateObject("EBCAccessoryMgr.cAccessoryMgr")

obj.DisplayIDs lngBillType, lngBillID, ViewType

'lngBillType 为单据类型,比如外销订单为1007100;lngBillID 为单据内码,比如

1002

Set obj = Nothing

注:此段代码不支持调试,编译后直接使用没有问题。

【摘要】如何在插件中执行值更新事件

版本:K3v10.3以上版本

问题描述:在某个BOS字段上定义了值更新事件,现需求:是在插件里给这个字段赋值,是否能在插件中触发该字段的值更新事件?

解决方法:可以在给该字段赋值后,调用以下代码:

Call DoAction “fqty”,1 'fqty为该字段的关键字,1为行号

Private Sub DoAction(ByVal strKey As String, Optional ByVal Row As Long = -1)

Dim dctTemp As KFO.Dictionary, dctTempFld As KFO.Dictionary

Set dctTemp = m_BillInterface.GetFieldInfoByKey(strKey, "", 0)

Set dctTempFld = m_BillInterface.GetDataFld(dctTemp)

m_BillInterface.BillCtl.DoAction dctTemp, dctTempFld, Row

Set dctTemp = Nothing

Set dctTempFld = Nothing

End Sub

【摘要】升级至10.4后,进入BOS系统业务单据不能保存

版本:K3v10.4

问题描述:升级至10.4后,进入BOS系统修改以前建立的业务单据,系统提示单据无法保存,拒绝的权限.新建一个业务单据也是相同的提示。但在10.3中一切都

正常。

解决方法:可打补丁PT007297解决此问题。

相关文档