起步软件技术论坛-X3

 找回密码
 立即注册
搜索
楼主: icemei

【结贴】数据集策略的问题**

[复制链接]
 楼主| 发表于 2009-4-30 10:56:40 | 显示全部楼层
还是没有实现,想实现的功能是:
管理者下面有多个业务员,业务员只能看到自己填的单据,管理者可以看到所管理的所有业务员填写的单据。

思路大体是:(1)分配管理权限,(2)在代码中取管理者所管理的所有业务员的URL (3)结合第2部取出的URL,通过单据中业务员的字段拼出SQL过滤条件

能就这个过程进行详细的说明吗? 包括步骤和代码 (任务中心和计划中心的东西真有点看不懂),搜的内容太零散了,衔接不上,搞了好几天了,这个还是不明白具体怎么做。请求支持啊。
回复 支持 反对

使用道具 举报

发表于 2009-4-30 13:22:30 | 显示全部楼层
(1)分配管理权限
     使用组织机构设计器分配
(2)在代码中取管理者所管理的所有业务员的URL
        a、使用4楼代码获得指定人员所有的下属Url(楼主也可以修改该代码,直接返回3个ID)
    b/使用8楼的方法得到a中所有人员成员子节点,返回的也是人员成员的bizurl
   
(3)结合第2部取出的URL,通过单据中业务员的字段拼出SQL过滤条件
    分析b的返回结果,组织成sql语句的条件
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-5-4 08:15:29 | 显示全部楼层
以上代码都测试过,能取到的内容是:公司、部门、岗位等的URL。就是取不到下属人员的URL,其他的我都已经实现了, 请问要怎么才能取到下属人员的URL?
    如果有时间,请帮忙远程看一下啊,这个问题弄了太久了,我的QQ:181622915
回复 支持 反对

使用道具 举报

发表于 2009-5-4 08:39:07 | 显示全部楼层
管理权限与数据 1年前写的一个demo,参考下吧。

管理权限与数据.rar

777.55 KB, 下载次数: 55

回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-5-4 09:10:52 | 显示全部楼层
导入时出错:
1:        失败        09:11:40
对 业务模型\业务系统\业务系统数据库\管理权限和数据访问权限\管理业务数据(BIZ2:\OPERATION\OPERATIONDB.DATABASE\GLQXHSJFWQX\GL_YWSJ.TABLE) 执行数据迁移任务时发生了错误。错误信息: 错误类型:Exception
错误信息:资源包中没有该表数据:GL_YWSJ

明白了,是导入时不能复制数据。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-5-4 09:42:08 | 显示全部楼层
功能我已经看了:
   你这个是通过左面的CheckBizTreeView先将公司、部门、人员成员、人员的节点选中,然后通过lDeptURLs.Add(TBizNode(CheckBizTreeView1.items.data).BizURL.URL);这一句,取选中节点的URL,这个和我说的还是有点区别的。
   我是想通过分配管理权限,取管理者所管理的下属列表,现在能取到的是公司、部门、人员成员等组织单元,但不能取到具体的人的URL。
    比如开发部部门经理(JL)管理一个开发部(KFB),开发部下有两个业务员(YWY1,YWY2),要求取到下面四个内容:
(1)业务员1:ORG:\ROOT\ZJRBJDYXGS.OGN\KFB.DPT\FGSYWY.PTM\YWY1.PSM
(2)业务员2:ORG:\ROOT\ZJRBJDYXGS.OGN\KFB.DPT\FGSYWY.PTM\YWY2.PSM
(3)经理自己:ORG:\ROOT\ZJRBJDYXGS.OGN\KFB.DPT\FGSYWY.PTM\JL.PSM
(4)开发部:ORG:\ROOT\ZJRBJDYXGS.OGN\KFB.DPT
但现在通过前面提到的GetSubordinations函数只能取到(4),后缀是“.PSM”(人员)是取不到的,怎样才能取到呢?
回复 支持 反对

使用道具 举报

发表于 2009-5-4 09:57:57 | 显示全部楼层
用组织机构表达式去取。搜论坛  组织机构表达式 关键字
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-5-4 13:45:06 | 显示全部楼层
上面说的通过管理权限能取吗?需要怎么实现?
如果用组织结构来取,又得重新改组织结构了,这样实施起来耗时会多一些。
回复 支持 反对

使用道具 举报

发表于 2009-5-4 14:17:08 | 显示全部楼层
你不是已经知道部门url了吗?取他下面的人员成员用17楼方式。2个方法组合起来
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-5-6 09:30:35 | 显示全部楼层
完成,代码如下:高手帮忙看看有些什么需要改进的啊,里面循环的地方用得比较多

//***********************************************************************************************************
//取管理权限下属的URL,返回所有管理下属人员成员列表
function TRCCS.GetSubPersonURL : TStrings;  //1
var
     i : integer;
     j : integer;
     lBizUrl :TBizURl;
     ResultsURL : TStrings;
     UnitURl : string;
     lOrgUnit : TOrgUnit;
     rs : TStrings;
     PersonURL : TStrings;
     begin
          PersonURL := TStringList.Create;
     try
              lBizUrl :=TBizUrl.Create;
              ResultsURL := GetSubordinationURLs; //取所有下属bizURL
         for i :=0 to ResultsURL.Count-1 do
         begin
              lBizUrl.URL := ResultsURL.ToString;
              lOrgUnit := org.OrgSys.OrgSystem.GetUnit(lBizURL);
              UnitURL := lOrgUnit.ID.ToString;
              rs := GetOrgSubPerson(UnitURL);   //调用GetOrgSubPerson,返回组织机构下的所有人员成员的URL
             //PersonURL.AddStrings(rs);
              if rs.Count>0 then
              begin
                  for j :=0 to rs.Count-1 do
                  begin
                   PersonURL.Add(rs[j].ToString);  //将管理权限管理的部门下的所有人员的URL存入PersonURL中
                  end;
                  rs.Clear;
              end;
         end;
     finally
             Result := PersonURL;
     end;
     end;


//根据传进来的组织机构URL取所有下属人员成员,返回组织机构下的所有人员成员的URL
function   TRCCS.GetOrgSubPerson(UnitURL : string) : TStrings; //2
var
         lTemp : TStrings;
         Results : TStrings;
         lpos, lcon, lOrgExpr : String;
         i : Integer;
         lContextCurrent: Business.Model.TContextCurrent;
begin
         lContextCurrent := Business.Model.TContextCurrent.Create(Self.Context);
         lpos :=''''+UnitURL+'''';       //'''HZD''';
         lcon := '''*.psm''';
         lOrgExpr := SysUtils.Format('OrgChildren(OrgKey(%s, '''', ''''), OrgCondition(%s, '''', ''''), True, False)', [lpos, lcon]);
         lTemp := TStringList.Create;
try
         OrgSys.OrgSystem.GetBizURLsByOrgExpr(lOrgExpr, lTemp);
finally
        Result := lTemp;
        //lTemp.Free;
end;
end;


procedure TRCCS.Button6Click(Sender: TObject);
var
         i : integer;
         Results : TStrings;
         lBizUrl :TBizURl;
         lOrgUnit : TOrgUnit;
         idstr : string;
         SqlFilterString : string;  //sqlfilter1
begin
         lBizUrl := TBizURL.Create;
try
         Results := GetSubPersonURL;
        memo1.Clear;
        for i :=0 to Results.Count-1 do
        begin
             lBizUrl.URL :=Results.ToString;  //'ORG:\ROOT\ZJRBJDYXGS.OGN\XSB.DPT\HZRBJDYXGS.DPT\HZD.DPT\FGSYWY.PTM\YWY2.PSM'; //
             lOrgUnit := org.OrgSys.OrgSystem.GetUnit(lBizURL);
             idstr := lOrgUnit.ID.ToString;
             SqlFilterString  := SqlFilterString + 'YWYSZGS like ''%'+idstr +'%''';    //idstr换成Results.ToString
          if i<>Results.Count - 1 then
             SqlFilterString  := SqlFilterString +' OR  ';
        end;
finally
        lBizURL.Free;

        memo1.Lines.add(SqlFilterString);
        DataSetBrokerRZRCXX.DataSet.Filter :=SqlFilterString;//'YWYSZGS like ''%'+idstr+'%''';   //过滤
        DataSetBrokerRZRCXX.DataSet.Filtered := True;
        DataSetBrokerRZRCXX.DataSet.Refresh;

end;
end;
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-21 16:15 , Processed in 0.044203 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表