1 常用二次开发方法1.1 登陆界面图片修改1) 在中间层方式:在中间层KDCOM 目录新建两个图片文件: LOGIN_PIC_LOG_TOP.bmp 适用于 10.4 版本+PT007378,或 V11 版本及以后版本LOGIN_PIC_LOG_BOTTOM.bmp 适用于 10.4 版本+PT007378,或V11 版本及以后版本MAIN_PIC_LOG_RIGHT_FLOWCHART.bmp, 适用于 10.4 版本+PT007378,或 V11 版本MAIN_PIC_LOG_LEFT_FLOWCHART.bmp, 适用于 10.4 版本+PT007378,或 V11 版本MAIN_PIC_LOG_LEFT.bmp, 适用于 10.4 版本+PT007378,或 V11 版本MAIN_PIC_LOG_RIGHT.bmp, 适用于 10.4 版本+PT007378,或V11 版本该方式不需要每个客户端机器安装图片,登陆时自动显示2) 客户端方式:直接修改以下图片文件,适用于V12 及以后版本:F:\Program Files\Kingdee\K3ERP\k3Standard\KDSYSTEM\KEE_imgLogo.bmp3) 企业 LOG 方式在中间层新建一个文件夹,命名为eptlogo 并将其设置为只读共享,然后制作两个BMP 格式的图片, 分别作为 logo 和背景图, 大小为 145×180 , 分别命名为enterprise_logo.bmp,enterprise_bg.bmp,在客户端的主控台编辑器启用企业界面即可。
1.2 主控台无界面登陆适用版本:(K/3V11.0.1+PT016290 或V12 以上版本)1) 域用户登录:提供命令行参数:KDMain.exe -LoginWin|账套代码|机构密码 ,无界面直接登录到K/3 系统主控台2) 命名用户登录:提供命令行参数 KDMain.exe -LoginUser|账套代码|机构密码|用户名| 用户密码, 无界面直接登录K/3 系统主控台3) 参数之间的分隔符默认为”|”,由于用户密码可能包含特殊字符,用户可以通过修改注册表改变分隔符,注册表参数:路径:HKEY_CURRENT_USER\SoftWare\KingDee\K3 键:LoginParm4) 获取账套代码的接口组件名:KdLogin.dll组件部署:客户端%Kdsystem% 程序名:KdLogin.clsLogin 方法名:GetAccountList参数描述GetAccountList() As ADODB.Recordset 参数:无序号字段名描述返回值类型:ADODB.Recordset,包含字段:1 FAcctID2 FAcctNumber3 FAcctName账套 ID账套代码账套名称5) 测试登录参数设置是否成功的接口组件名:KdLogin.dll组件部署:客户端%Kdsystem% 程序名:KdLogin.NoUILogin 方法名:LoginUser参数描述Public Function LoginUser(ByVal sLoginType As String _, ByVal sAcctNumber As String _, ByVal sOrgPass As String _, ByVal sUserName As String _, ByVal sUserPass As String) As String参数:序号字段名参数类型String描述1 sLoginType2 sAcctNumberStringString3 sOrgPass4 sUserName String5 sUserPass String登录方式:-LoginWin 域用户身份登录-LoginUser 命名用户身份登录账套代码组织机构密码例如:账套代码为:10.02,则为组织机构 10 的密码. 用户名,域用户身份登录时为空用户密码,域用户身份登录时为空返回值类型:String,空字符串代表登录成功,否则登陆不成功,内容为登录不成功的原因。
1.3 基础资料的图片读写1. 显示图片1.1)从数据库取得图片的二进制数据Dim bytFile() As Byte‘根据取数 SQL 生成记录集:select FFile from t_AccessorybytFile= rs.Fields("FFILE") 1.2)保存到文件Dim smFile As adodb.Stream Set smFile = New adodb.Stream smFile.Type = adTypeBinary smFile.OpensmFile.Write bytFilesmFile.SaveToFile m_sTempFileName, adSaveCreateOverWrite 1.3)解压缩Dim ozip As ObjectSet ozip = CreateObject("KDZIP.ZIP") ozip.DeCompress m_sTempFileName, sFileName1.4)显示出来Set Img.Picture = LoadPicture(sFileName)1. 保存图片2.1) 对图片进行压缩,压缩强度为 6Set dzip = CreateObject("KDZIP.ZIP")dzip.Compress App.Path & "\1.bmp", App.Path & "\1.zip", 62.2) 读取文件Set mstream = New ADODB.Stream mstream.Type = adTypeBinary mstream.Openmstream.LoadFromFile App.Path & "\1.zip"Dim varFile() As Byte varFile = mstream.Read()2.3) 修正字节数,必须是偶数个(从 0 到奇数)lFileSize = UBound(varFile) + 1 - (UBound(varFile) Mod 2) ReDim Preserve varFile(0 To lFileSize) As Byte2.4) 把压缩后的图片导入到 t_accessory 表中con = "Persist Security Info=True;Provider=SQLOLEDB.1;User ID=sa;Password=;Data Source=?;Initial Catalog=AIS20091116094820"sql1 = "select * from t_accessory where FID=1"Set rs = New ADODB.Recordsetrs.Open sql1, con, adOpenDynamic, adLockOptimistic rs.Fields("FFile").AppendChunk varFile()rs.Update1.4 K/3 自定义认证开发方法目的:提供用户可定义的K/3 主控台登陆方法,用户可以按自己的方式验证,例如:实现指纹认证,声音认证。
适用于 K/3V10.3 及以后版本1. 新建 VB 工程:SelfIdentity.VBP2. 添加一个窗体 Form.frm3. 添加一个模块 Module1.mod 包含以下定义:Public g_strAcctName As String Public g_UserName As String Public g_UserPassWord As String4. 添加类 ClsIdentity.cls 包含以下两个接口Public Function SeftClientSign(strAcctName As String, UserName As String, UserPassWord As String, ErrMsg As String) As LongIf UserName = g_UserName And g_strAcctName = strAcctName And g_UserPassWord = Trim(UserPassWord) ThenSeftClientSign = 1End If End FunctionPublic Function GetSelfPassWord(ByVal strAcctName As String, ByRef UserPassWord As String) As String'弹出指纹任证界面,直到 GetSelfPassWord 返回值不为空Form1.Show vbModal GetSelfPassWord = "test" UserPassWord = "123"g_strAcctName = strAcctName g_UserName = GetSelfPassWord g_UserPassWord = UserPassWordEnd Function5. 在账套管理>账套>参数设置,选择“自定义认证方式”6. 在用户管理,设置用户 test 属性为“自定义认证方式”7. 以 test 用户登陆。
1.5 基础资料插件化开发基础资料-插件接口由K3BaseDataEvents.dll 提供:1、 概述要使用插件,需要写一个插件的 DLL,引用 K3BaseDataEvents.dll,处理其提供的接口即可编写好插件DLL 后,需要在数据库表中增加该插件的注册记录,如下: 表名:t_ThirdPartyComponent关键字段及意义:FTypeID:101FTypeDetailID:1-19,>=2000,核算项目类别 ID FComponentName:客户端插件类的ProgID FComponentSrv: 服务端插件类的ProgID –未实现FDescription: 描述注: 其中 FTypeDetailID 为 0 时表示该插件对所有核算项目都有效,比如对所有核算项目指定统一的编码规则、自定义某个通用行的名称等2、 K3BaseDataEvents.ItemEvents 类该类定义了核算项目编辑界面所有的事件l Public Event AfterGridLoad()加载各字段后触发,可以在该事件中处理界面初始化、默认编码等等l Public Event GridChange(ByVal lRow As Long)某一行单元格值更新后触发l Public Event EnterGrid(ByVal lRow As Long)焦点进入某一行触发 - 如判断使用后不允许修改l Public Event OnPressF7 (ByVal lRow As Long,ByRef RetCol As KDVBF.ReturnCollection, ByRef Cancel As Boolean)按 F7 时触发,可以在该事件中自己处理弹出F7 操作l Public Event BeforeList(ByVal lRow As Long, ByRef str。