K3 BOS应用开发百问百答(V1.0) 下载本文

K/3 BOS应用开发百问百答

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

版本:K/3 BOS所有版本

问题描述:如何在单据体中让下一条分录自动携带上一条分录的数据(只是部分字段)?

【解答】

示例代码:

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

m_BillInterface.SetFieldValue \

1, Enu_ValueType_FFND), row '提货地点 end if

【摘要】在Bos插件中如何处理隐身的二次登录

版本:K310.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 事件

第16页

K/3 BOS应用开发百问百答

Set mvch = New KFO.Dictionary mvch(\

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

第17页

K/3 BOS应用开发百问百答

Set entry(\ 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(\

glvch.Create s, mvchs = \

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

m_BillInterface.K3Lib.UpdateData s m_BillInterface.RefreshBill

MsgBox \凭证生成成功!\金蝶提示\ Case \变更\ End Select End Sub

【摘要】如何在插件中获取当前系统字符连接串?

版本:K310.2及以后版本

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

【解答】

1、 连接串获取方式:(注意不支持调试,调试的话可以用实际连接串代替)

Private Declare Function GetCurrentProcessId Lib \Long '获取连接串

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

lProc = GetCurrentProcessId

第18页

K/3 BOS应用开发百问百答

Set spmMgr = CreateObject(\

GetPropsString = spmMgr.GetProperty(lProc, \End Function

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

【摘要】BOS单据插件里取分录的合计值

版本:10.2后所有版本

问题描述:工业单据自定义里面有个GetSumGridText方法取得分录某一列的合计值,现在BOS单据里面需要取某一列的合计,请问有什么方法可以调用。我注意到有个sum方法,但不知道该怎么用?里面带BRow和ERow两个参数,应该是起始行和结束行吧,但分录的行是可以改变的,这两个值怎么取得?

【解答】

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.2SP1+SP2+10.3

问题描述:表单的表体的行高的属性在哪里,我找不到,如果发布后到主控台里去调,表体的标题行会同比例变化,非常不美观。

【解答】

标体的行高目前不能调整。

【摘要】带有辅助属性的字段的值更新事件中调用辅助属性,计算公式运行有误

版本:K310.2SP1+SP2+10.3

问题描述:对于已携带辅助属性的字段再定义值更新事件,如果值更新事件里包含该辅助属性,计算公式无效。也就是值更新事件公式里调用的辅助属性是更新前的。

【解答】

在插件中使用更新后事件。

第19页