- 浏览: 90054 次
- 性别:
- 来自: 宁波
最新评论
-
luchenqun:
...
java二进制文件与字节之间的转化 -
luchenqun:
...
java二进制文件与字节之间的转化 -
xy0792:
leing 写道请问代码实现botp生成目标单据后,怎么调用目 ...
服务端直接调用BOTP -
leing:
请问代码实现botp生成目标单据后,怎么调用目的单的审核功能呢 ...
服务端直接调用BOTP -
zhaoyubetter:
EntityViewInfo evi = new Entity ...
常用代码1:过滤及查询
[size=6][b]如何实现EAS的【拥有者权限】和【主管权限】[/b][/size]
[color=Red]注:文章来源:121.32.28.234:8800/kdwiki/index.php?doc-view-107.html[/color]
问题:对于全新开发的EAS单据,客户经常会要求实现【拥有者权限】(即:用户自己只能看到自己所做的单据)和【主管权限】(即:上级领导能看到其下属所做的单据)。
具体的实现方法如下:
方法一:通过EAS自带的特殊数据权限进行配置
1、 修改EAS权限配置文件:
eas\server\profiles\server1\config\EAS_PermissionConfiguration.xml 将新开发的单据添加到此配置文件中(这样才能在EAS客户端配置特殊数据权限时看到你开发的单据)
例:[code]<special-data-permission>
<name>com.kingdee.eas.custom.crm.base.app.Period</name>(注:单据实体路径)
<type>975F9A83</type>(注:BOSType)
</special-data-permission>[/code]添加完成后,记得保存
2、 打开EAS客户端,进入【系统平台】-【安全管理】-【权限管理】-打开【特殊数据权限】如下图(红色部分就是要在上面新添加配置的单据)
(这里经常会出现修改配置文件后,业务对象授权列表中却无法显示的情况。可能是由于缓存的原因导致。如果遇到这种情况,请试试重启服务器,再多搞搞几次就
会回来的。实现没办法的话,请参与以下文章解决:121.32.28.234:8800/kdwiki/index.php?doc-view-
100.html)
[img]http://121.32.28.234:8800/kdwiki/js/kindeditor/attached/20110406170409_30409.jpg[/img]
方法二:通过编写代码实现
方法一中的拥有者,只能选择到单据上的“制单人”和“最后修改人”这两个字段。在某些情况下,方法一是无法满足客户的需求的。例如:销售订单上有一个字段
是“销售员”,客户想通过这个字段来做拥有者权限过滤。那么,这个时候就只能通过编码的方式来实现了。以下介绍代码如何时实现拥有者权限和主管权限。
拥有者权限:只需要在单据序时簿查询时加上当前用户与相关字段(如:销售员)的比较即可,相对简单,不多说。
主管权限:实现代码如下:
/**
* 根据用户id查找用户职位长编码
* 主管权限调用
* @param userId 当前用户id
* @return 用户职位长编码
*/[code]public String getPositionLongNumberByUserId(Context ctx, String userId) {
// 根据用户查找用户职位长编码
StringBuffer lsql = new StringBuffer();
lsql.append("SELECT DISTINCT
PositionHierarchy.FLongNumber as longnumber FROM T_PM_USER U INNER JOIN
T_BD_Person Person");
lsql.append(" ON Person.FID = U.FPersonID INNER JOIN
T_ORG_PositionMember PositionMember ON Person.FID =
PositionMember.FPersonID");
lsql.append(" INNER JOIN T_ORG_Position Position ON
Position.FID = PositionMember.FPositionID INNER JOIN
T_ORG_PositionHierarchy");
lsql.append(" PositionHierarchy
ON PositionMember.FPositionID = PositionHierarchy.FChildID WHERE U.FID =
'").append(userId);
lsql.append("' AND PositionHierarchy.FHierarchyID = '00000000-0000-0000-0000-000000000001396FCAD0'");
ResultSet lrs;
StringBuffer filterLongNumber = new StringBuffer();
try {
lrs = DbUtil.executeQuery(ctx, lsql.toString());
while (lrs.next()) {
filterLongNumber.append(
" OR POSITIONHIERARCHY.FLONGNUMBER LIKE N'").append(lrs.getString("longnumber")).append("!%' ");
}
} catch (BOSException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
if (filterLongNumber.toString().length() == 0) {
return "-1";
}
return filterLongNumber.toString();
}[/code]/**
* 根据用户职位长编码查找用户的所有下级客户
* @param ctx
* @param positionLongNumber
* @return
*/[code]public List getPersionIdsByPositionLongNumber(Context ctx, String positionLongNumber) {
// 根据用户长编码查找用户下级
StringBuffer sql = new StringBuffer();
List personIds = new ArrayList();
sql.append("SELECT DISTINCT Person.FID as id FROM
T_PM_USER U INNER JOIN T_BD_Person Person ON Person.FID = U.FPersonID
INNER JOIN ");
sql.append(" T_ORG_PositionMember PositionMember ON
Person.FID = PositionMember.FPersonID INNER JOIN T_ORG_Position Position
");
sql.append(" ON Position.FID =
PositionMember.FPositionID INNER JOIN T_ORG_PositionHierarchy
PositionHierarchy ON ");
sql.append(" PositionMember.FPositionID = PositionHierarchy.FChildID WHERE ").append("(").append(
positionLongNumber.substring(positionLongNumber.indexOf("O") + 2)).append(")");
sql.append(" AND PositionHierarchy.FHierarchyID = '00000000-0000-0000-0000-000000000001396FCAD0'");
ResultSet prs;
try {
prs = DbUtil.executeQuery(ctx, sql.toString());
while (prs.next()) {
personIds.add(prs.getString("id"));
}
//添加当前用户本人
UserInfo user = ContextUtil.getCurrentUserInfo(ctx);
personIds.add(user.getPerson().getId().toString());
} catch (BOSException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return personIds;
}[/code]调用方法:[code]UserInfo user = ContextUtil.getCurrentUserInfo(ctx);//获取当前用户
String positionLongNumber = getPositionLongNumberByUserId(ctx, user.getId().toString());//获取当前用户的职位长编码
List lowerPersonList = getPersionIdsByPositionLongNumber(ctx,
positionLongNumber);//获取当前用户所能看到的所有下级用户的person id
表列[/code]最后,根据lowerPersonList列表,在单据序时簿的过滤条件中拼写SQL语句的过滤条件即可。
以下给出动态Web框架开发的单据添加主管权限的完整例子:
由于字数限制,完整例子请看:121.32.28.234:8800/kdwiki/index.php?doc-view-107.html
发表评论
-
EAS系统F7控件树形显示
2014-04-29 12:07 5681最近有个需求,需要用F7选择客户组别,物料组别、供应商组别 ... -
KDComboBox/JComboBox选择事件执行2次问题
2014-03-31 15:31 1559在监听KDComboBox的时候 ... -
控制editui打开的方式
2013-07-02 14:26 1347List有一个方法可以控制editui打开的方式,是以页签还是 ... -
EAS报表读写分离
2013-03-04 14:56 2179当系统数据越来越庞大时,打开报表的速度会越来越慢,所以才会出 ... -
扩展报表实现一个特殊过滤
2013-01-23 15:03 1283有个报表如下: 产品 是否保税 A ... -
EAS热部署
2013-01-02 09:19 1404EAS服务部署需要时间很长,如使用了群集,启动更慢,一般部署一 ... -
EAS查看组织树形结构
2012-12-06 09:43 2054select t.fnumber, ... -
代码学习
2012-11-09 14:21 01、EditUI 是否BOTP下推 int openMod ... -
EAS套打扩展报表工作流PDF
2012-07-26 11:24 1886套打扩展报表PDF -
懒人配置动特殊数据权限,dom4j解析元数据
2012-07-14 12:49 1486dom4j下载:http://sourceforge.net/ ... -
F7调出组织多选
2012-07-05 14:34 1264系统有个物料收发事务汇总报表,F7选库存组织的时候,出现以下界 ... -
字符相似度比较
2012-06-19 09:53 1806最近项目有个问题,客户重复,比如**市A有限公司,**A有限公 ... -
eas引用控制
2012-06-16 16:47 1163eas无外键,如果需要校验是否被引用,只要在下表中插入一条数据 ... -
F7可选可输入,保存为文本,非外键
2012-06-03 09:27 987ExtendParser parserStatus = new ... -
导出自定义菜单
2012-05-05 09:50 1011t_pm_mainmenuitem是菜单表,一般BIM开头的菜 ... -
filter&adminserver
2012-04-26 16:40 9211、filter可以写函数: filter.getFi ... -
后台调用编码规则
2012-04-12 09:59 1910// 如果单据编码为空,则调用编码规则生成一个编码,否则不能通 ... -
通过BOSType找EditUI
2011-10-12 13:28 1384/* 112 */ IMetaDataLoader l ... -
test
2011-06-03 15:57 849DynamicObjectFactory.getLocalIn ... -
查看F7的SQL语句
2011-03-21 09:57 1265http://xy0792.iteye.com/admin/b ...
相关推荐
EAS,全称为Enterprise ...综上所述,"eas模板_EAS_"涉及到的核心知识点是EAS系统在企业资产管理中的应用,特别是通过定制化的打印模板实现明细账的按核算项目分开打印,以满足企业对资产信息的精细化管理和分析需求。
EAS权限体系培训
综上所述,"EAS BOS培训"内容全面,覆盖了从基础环境配置到实际业务场景的多个方面,适合对金蝶EAS和BOS感兴趣的初学者或有经验的开发者深入学习。通过阅读《金蝶EAS和BOS培训教程V3.0.doc》和解压后的《EAS BOS培训...
7. **系统集成**:了解EAS如何与其他系统(如ERP、CRM)集成,以实现全企业范围内的信息共享和流程协同。 通过这个认证培训,学员不仅会了解到EASBOS的基本理论,还将获得实际操作的经验,从而更好地应用于企业的...
在给定的描述中提到了一个博客链接,虽然具体内容没有提供,但我们可以推测博主可能分享了关于EAS开发、实现或使用的经验和技术细节。由于标签包含了"源码"和"工具",这表明讨论可能涉及到EAS系统的源代码分析、开发...
EAS8.0的生产制造模块涵盖MRP(物料需求计划)、APS(高级计划与排程)、WMS(仓库管理系统)等,帮助企业实现精细化的生产计划和控制。MRP根据销售预测和库存情况自动计算物料需求,APS则优化生产排程,提高生产...
EAS接口文档是为了实现EAS(企业资产管理系统)的开发和集成。文档中提供了关于如何通过接口与EAS系统交互的具体方法,这对于系统开发者而言是必不可少的资源。文档中通常会包括接口的URL、方法名、输入参数及输出...
### 金蝶EAS通过套打模板实现后台生成PDF文件 #### 概述 本文旨在介绍如何在金蝶EAS系统中利用套打模板技术,通过后台服务器代码自动生成PDF文件,进而完成合同等文件的档案归档与备份工作。这种方法能够显著提高...
金蝶EAS(Enterprise Application Suite)是金蝶国际软件...在准备认证的过程中,考生应结合理论知识和实践经验,理解并掌握EAS如何帮助企业实现流程自动化、信息共享和决策支持,以达到提升企业整体运营效能的目标。
3. **查询功能**:`query` 和 `7,עģãעԵĵruta` 表示查询功能的实现。这通常涉及到数据库操作,包括但不限于SQL语句的构建、执行以及结果集的处理等。 #### 五、实践应用案例 假设一家公司需要将其客户信息从旧...
权限检查可以在PurOrderControllerBean实现类中进行,可以重载checkPermission方法来实现权限检查。 凭证生成前的控制也是服务端常用的一个功能,在服务端可以对凭证生成前的控制进行检查,以确保凭证的生成是合法...
`5.1EAS套打开发.doc`和`5.1套打(接口BOSQueryDelegate).doc`应讲述了如何利用BOSQueryDelegate接口实现数据查询与套打模板的结合,以及套打过程中的关键技术和注意事项。 4. **报表设计**:金蝶EAS提供了丰富的...
源码可能包含API设计和实现细节。 9. **前端展示**:源码中可能包括HTML、CSS和JavaScript代码,用于在浏览器端展示报表,可能涉及到前端框架如Angular、React或Vue.js。 10. **后端服务**:EAS的后端可能基于Java...
EAS7.5并发全模块许可License是一款专为测试和学习EAS(Enterprise Application Server)设计的授权软件。EAS是企业级应用服务器,它提供了一个平台,用于部署和管理各种企业应用程序,如Web服务、Java EE应用以及...
EAS BOS提供了用户管理和权限控制机制,开发者需要理解角色、用户、权限的关系,以及如何在服务端代码中实现权限检查,确保系统的安全性。 7. **集成与扩展**: EAS BOS支持与其他系统集成,例如通过Web服务或API...
接着,"EAS测试许可全套license"中的"全套"意味着它包括了所有EAS模块的访问权限,这可能包括但不限于财务管理、采购管理、库存控制、销售和分销、项目管理、人力资源管理等。这样,用户就能全面评估每个模块对业务...
通过深入理解EAS数据库的结构,开发者可以更好地实现功能扩展、数据迁移、报表定制等任务,确保系统的稳定性和扩展性。 在实际工作中,配合EAS的开发文档和在线帮助,结合数据库表结构查看器,开发者可以更加高效地...
通过EAS权限申请表,企业能够根据员工的角色和职责,精确地分配访问权限,确保数据安全和业务流程的顺畅运行。每个模块的详细设置和权限分配应根据企业的具体需求进行定制,以最大化系统的效能。