鼎捷T100——二次开发
前言
由于前期的开发对于自定义字段设置的开窗,没有设置对应的权限管控,导致用户能看到超出自身权限的单据,为了避免这种情况发生,需要对于开窗进行限制。
一、设计方案
实现权限设置的方法,一般是通过系统变量 g_user 用户编号来实现,在程式中将 g_user 作为变量 传递给开窗,通过sql 将单据开窗的返回结果通过 单据所有人字段进行限定
二、方案
添加开窗限制通常有两个方案
- 重新设计开窗
- 程式中添加 where 条件
方案一
重新设计开窗(adzi210),可以选择修改该开窗,或者新建一个新的开窗设置,将旧的开窗替换掉。
关键在于设置开窗的时候需要设置 变量 arg1,并且在原有的sql基础上,添加where 部分 将单据所有者 = arg1 。
然后,在程式中调用对应开窗的部分 在CALL cq_xxxx()之前添加代码段(重新设计开窗的记得在程式中将旧开窗替换成新开窗)
LET g_qryparam.arg1 = g_user #g_user 为系统变量,值为使用者的编号
然后,保存上传程式,就可以实现限制开窗结果的效果
方案二
不需要修改原有的开窗,直接在程式中,在调用开窗之前,设置 g_qryparam.where 变量
LET g_qryparam.where = "xxownid = '",g_user,"," #g_user 为系统变量,表示用户编号
#注意如果原有开窗sql中有where 条件,记得在g_qryparam.where 中添加 'AND'
LET g_qryparam.where = " AND xxownid = '",g_user,","
总结
以上两种方案都可以实现开窗的权限限制,其原理就是使用g_user 变为值,通过sql将单据搜索的范围缩小