金蝶Bos基础二次开发Word格式文档下载.docx

上传人:b****6 文档编号:19958304 上传时间:2023-01-12 格式:DOCX 页数:22 大小:59.19KB
下载 相关 举报
金蝶Bos基础二次开发Word格式文档下载.docx_第1页
第1页 / 共22页
金蝶Bos基础二次开发Word格式文档下载.docx_第2页
第2页 / 共22页
金蝶Bos基础二次开发Word格式文档下载.docx_第3页
第3页 / 共22页
金蝶Bos基础二次开发Word格式文档下载.docx_第4页
第4页 / 共22页
金蝶Bos基础二次开发Word格式文档下载.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

金蝶Bos基础二次开发Word格式文档下载.docx

《金蝶Bos基础二次开发Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《金蝶Bos基础二次开发Word格式文档下载.docx(22页珍藏版)》请在冰豆网上搜索。

金蝶Bos基础二次开发Word格式文档下载.docx

组件部署:

客户端%Kdsystem%

程序名:

KdLogin.clsLogin

方法名:

GetAccountList

参数描述

GetAccountList()AsADODB.Recordset

参数:

返回值类型:

ADODB.Recordset,包含字段:

序号

字段名

描述

1

FAcctID

账套ID

2

FAcctNumber

账套代码

3

FAcctName

账套名称

5)测试登录参数设置是否成功的接口

KdLogin.NoUILogin

LoginUser

PublicFunctionLoginUser(ByValsLoginTypeAsString_

ByValsAcctNumberAsString_

ByValsOrgPassAsString_

ByValsUserNameAsString_

ByValsUserPassAsString)AsString

参数:

参数类型

sLoginType

String

登录方式:

-LoginWin域用户身份登录

-LoginUser命名用户身份登录

sAcctNumber

sOrgPass

组织机构密码

例如:

账套代码为:

10.02,则为组织机构10的密码.

4

sUserName

用户名,域用户身份登录时为空

5

sUserPass

用户密码,域用户身份登录时为空

String,空字符串代表登录成功,否则登陆不成功,内容为登录不成功的原因。

1.3基础资料的图片读写 

 

1.显示图片

1.1)从数据库取得图片的二进制数据

DimbytFile()AsByte

‘根据取数SQL生成记录集:

selectFFilefromt_Accessory

bytFile=rs.Fields("

FFILE"

1.2)保存到文件

 

DimsmFileAsadodb.Stream 

SetsmFile=Newadodb.Stream

smFile.Type=adTypeBinary

smFile.Open

smFile.WritebytFile

smFile.SaveToFilem_sTempFileName,adSaveCreateOverWrite

1.3)解压缩

DimozipAsObject

Setozip=CreateObject("

KDZIP.ZIP"

ozip.DeCompressm_sTempFileName, 

sFileName

1.4)显示出来

SetImg.Picture=LoadPicture(sFileName) 

1.保存图片

2.1)对图片进行压缩,压缩强度为6

Setdzip=CreateObject("

dzip.CompressApp.Path&

"

\1.bmp"

App.Path&

\1.zip"

6

2.2)读取文件

Setmstream=NewADODB.Stream

mstream.Type=adTypeBinary

mstream.Open

mstream.LoadFromFileApp.Path&

DimvarFile()AsByte

varFile=mstream.Read()

2.3)修正字节数,必须是偶数个(从0到奇数)

lFileSize=UBound(varFile)+1-(UBound(varFile)Mod2)

ReDimPreservevarFile(0TolFileSize)AsByte

2.4)把压缩后的图片导入到t_accessory表中

con="

PersistSecurityInfo=True;

Provider=SQLOLEDB.1;

UserID=sa;

Password=;

DataSource=?

;

InitialCatalog=AIS20091116094820"

sql1="

select*fromt_accessorywhereFID=1"

Setrs=NewADODB.Recordset

rs.Opensql1,con,adOpenDynamic,adLockOptimistic

rs.Fields("

FFile"

).AppendChunkvarFile()

rs.Update

1.4K/3自定义认证开发方法

目的:

提供用户可定义的K/3主控台登陆方法,用户可以按自己的方式验证,例如:

实现指纹认证,声音认证。

适用于K/3V10.3及以后版本。

1. 

新建VB工程:

SelfIdentity.VBP

2. 

添加一个窗体Form.frm

3. 

添加一个模块Module1.mod

包含以下定义:

Publicg_strAcctNameAsString

Publicg_UserNameAsString

Publicg_UserPassWordAsString

4. 

添加类ClsIdentity.cls

包含以下两个接口

PublicFunctionSeftClientSign(strAcctNameAsString,UserNameAsString,UserPassWordAsString,ErrMsgAsString)AsLong

IfUserName=g_UserNameAndg_strAcctName=strAcctNameAndg_UserPassWord=Trim(UserPassWord)Then

SeftClientSign=1

EndIf

EndFunction

PublicFunctionGetSelfPassWord(ByValstrAcctNameAsString,ByRefUserPassWordAsString)AsString

'

弹出指纹任证界面,直到GetSelfPassWord返回值不为空

Form1.ShowvbModal

GetSelfPassWord="

test"

UserPassWord="

123"

g_strAcctName=strAcctName

g_UserName=GetSelfPassWord

g_UserPassWord=UserPassWord

5. 

在账套管理>

账套>

参数设置,选择“自定义认证方式”

6. 

在用户管理,设置用户test属性为“自定义认证方式”

7. 

以test用户登陆。

1.5基础资料插件化开发

基础资料-插件接口由K3BaseDataEvents.dll提供:

1、概述

要使用插件,需要写一个插件的DLL,引用K3BaseDataEvents.dll,处理其提供的接口即可。

编写好插件DLL后,需要在数据库表中增加该插件的注册记录,如下:

表名:

t_ThirdPartyComponent

关键字段及意义:

FTypeID:

101

FTypeDetailID:

1-19,>

=2000,核算项目类别ID

FComponentName:

客户端插件类的ProgID

FComponentSrv:

服务端插件类的ProgID–未实现

FDescription:

描述

注:

其中FTypeDetailID为0时表示该插件对所有核算项目都有效,比如对所有核算项目指定统一的编码规则、自定义某个通用行的名称等。

2、K3BaseDataEvents.ItemEvents类

该类定义了核算项目编辑界面所有的事件。

●PublicEventAfterGridLoad()

加载各字段后触发,可以在该事件中处理界面初始化、默认编码等等

●PublicEventGridChange(ByVallRowAsLong)

某一行单元格值更新后触发

●PublicEventEnterGrid(ByVallRowAsLong)

焦点进入某一行触发-如判断使用后不允许修改

●PublicEventOnPressF7(ByVallRowAsLong,

ByRefRetColAsKDVBF.ReturnCollection,ByRefCancelAsBoolean)

按F7时触发,可以在该事件中自己处理弹出F7操作

●PublicEventBeforeList(ByVallRowAsLong,ByRefstrSqlReturnAsString)

弹出下拉列表前触发,用strSqlReturn返回查询列表的SQL语句,要求包括FNumber、FName等字段。

●PublicEventBeforeSave(CancelAsBoolean)

保存前触发–自定义校验数据

3、K3BaseDataEvents.ItemEditInterface类

该类定义了对核算项目编辑操作的一些属性、接口和方法

Ø

属性

●PublicPropertyGetPropsString()AsString

功能未公开(Reserved)

●PublicPropertyGetGrid()AsObject

●PublicPropertyGetItemObject()AsEBCGL.Item

获得当前的核算项目对象,可以访问其属性

●PublicPropertyGetItemClass()AsEBCGL.ItemClass

获取核算项目类别对象,如类别为物料

●PublicPropertyGetItemClassId()AsLong

获取核算项目类别ID,如物料类别ID为4

●PublicPropertyGetParentID()AsLong

获取核算项目上级组ID,为0则没有上级组

●PublicPropertyGetParentItemObject()AsEBCGL.Item

获取上级组对象,通过该对象可访问上级组代码、名称等属性

方法

●PublicFunctionGetRowNumber(FieldNameAsString)AsLong

‘根据字段名称查找行号。

●PublicFunctionGetRowFieldProp(ByVallRowAsLong)AsCustomProperty

'

根据行号获得字段属性

●PublicSubSetRowFocus(ByVallRowAsLong)

设置焦点

●PublicSubSetRowLock(ByValRowAsLong)

设置单元只读。

●PublicSubSetRowUnLock(ByValRowAsLong)

设置单元为缺省非只读

●PublicSubSetRowNotNull(ByValRowAsLong)

设置为必录项

●PublicSubSetRowBeNull(ByValRowAsLong)

设置为非必录项

●PublicSubSetRowValue(ByValRowAsLong,OptionalNewValAsVariant="

"

OptionalNewIDAsVariant=0)

设置行的值

●PublicFunctionReadCellText(ByVallColAsLong,ByVallRowAsLong)AsString

读取Text

●PublicFunctionReadID(ByValRowAsLong)AsLong

读取内部ID

●PublicFunctionReadValue(ByValRowAsLong)AsVariant

读取数据

●PublicFunctionGetAnyRecordset(ByValSQLAsString)AsADODB.Recordset

保留的

●PublicFunctionIsItemInUsed()AsBoolean

判断该项目是否被使用-wScan

●PublicFunctionGetDecimalDigits(ByValdblValAsDouble)AsLong

计算一个数值的小数位数

●PublicFunctionGetSystemProfileValue(ByValsCagegoryAsString,ByValsKeyAsString,OptionalByValsDefaultAsString="

)AsString

获得系统参数信息

●PublicFunctionItemIsDetail()AsBoolean

获得该核算项目是否是明细,还是上级组

●PublicSubSetRowCaption(ByVallRowAsLong,sCaptionAsString)

设置行标题

4、K3BaseDataEvents.ItemEditInterface对象

该对象不可直接创建,需由K3BaseDataEvents.ItemEvents的属性获得:

PublicPropertyGetEditInterface()AsItemEditInterface

5、插件编写方法

内部引用,初始化,并实现事件接口即可,(请参考组件K3BaseItemPlugin.dll的实现)

步骤如下:

a)新建DLL工程如Test.dll,并引用插件类库K3BaseItemPlugin.dll

b)新建类如MeterialPlug(物料插件)

c)定义WithEvents的K3BaseDataEvents.ItemEvents对象,并处理其事件

d)编写接口函数PublicSubShow(ByValoEventsAsItemEvents),在该函数中初始化插件对象,必须的!

e)可以使用K3BaseDataEvents.ItemEditInterface中提供的方法

f)插件写好后,编译成Test.dll,向数据库表中插入数据注册该插件即可,如下SQL:

insertintot_ThirdPartyComponent

(FTypeID,FTypeDetailID,FIndex,FComponentName)

values(101,4,1,'

Test.MeterialPlug'

--101表示基础资料,4表示物料

--该sql表示当编辑物料时,加载Test.MeterialPlug插件,若要该插件在所有核算项目编辑中都加载,只要将FTypeDetailID设为0即可

g)测试、发布

物料--插件

PrivateConstID_ITEMCLASSID=4'

物料

PrivateWithEventsBaseItemEventsAsK3BaseDataEvents.ItemEvents'

事件引擎

Privatem_EditInterfaceAsK3BaseDataEvents.ItemEditInterface'

API接口

该函数为接口函数,调用该函数进行初始化

PublicSubShow(ByValoEventsAsItemEvents)

IfoEvents.EditInterface.ItemClassID<

>

ID_ITEMCLASSIDThenExitSub

SetBaseItemEvents=oEvents

Setm_EditInterface=BaseItemEvents.EditInterface

EndSub

/********************************************************************/

/*函数名称:

BaseItemEvents_AfterGridLoad

/*日期:

2009-06-1114:

18

/*作者:

wScan

/*描述:

数据加载后触发,方便根据系统参数做某些特殊控制

/*参数:

PrivateSubBaseItemEvents_AfterGridLoad()

加载各字段后触发

6、实例:

实现客户需要功能的代码

a)定义插件对象并初始化

b)实现:

录入物料的时候,不需要录入上级组代码。

系统自动带出上级组代码;

核算项目录入界面的前两个字段是代码和名称,对任何核算项目都是这样。

客户要求加上前缀,如物料代码,客户代码。

DimlRowAsLong

DimsParentNumberAsString

OnErrorGoToErr_Handler

lRow=m_EditInterface.GetRowNumber("

FNumber"

Ifm_EditInterface.ParentID<

0Then

sParentNumber=m_EditInterface.ParentItemObject.Number

自动根据上级组编码填入前缀

Ifm_EditInterface.ItemObject.ItemID=0Andm_EditInterface.ParentID<

0Then'

新增

m_EditInterface.SetRowValuelRow,sParentNumber&

."

设置个性化的行标题,如物料代码、物料名称等

m_EditInterface.SetRowCaption1,m_EditInterface.ItemClass.Name&

代码"

m_EditInterface.SetRowCaption2,m_EditInterface.ItemClass.Name&

名称"

m_EditInterface.SetRowCaption3,m_EditInterface.ItemClass.Name&

全名"

ExitSub

Err_Handler:

c)自动编码实现和上面原理一样,指定一个规则,自动生成代码,并锁定不允许修改即可。

d)客户要求自动带出上级组代码,由于按上面的方法上级组代码仍然可以被修改掉,因此一种方法是:

可以让客户只录最后一级代码,在保存前自动加上其上级组代码,处理BeforeSa

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1