起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 435|回复: 2

[分享] 按照管理权限过滤下属数据**

[复制链接]
发表于 2007-1-23 15:06:04 | 显示全部楼层 |阅读模式
function TRYXX.GetSubordinations: TStrings;
var
  i : integer;
  s : string;
  lOperator : TOPerator;
  lPersonMember: TOrgUnit;
  lSubs : TStrings;
  ResultUrls :Tstrings;
begin
  ResultUrls:=TStringlist.Create;//隐式向上转型
  try
    lOperator := TContextUtils.GetOperator(Context);//取出操作者
    for i := 0 to lOperator.PositionCount-1 do //取出操作者所属岗位
      begin
        lPersonMember := lOperator.Positions.PersonMember;//取出所属岗位对应的人员成员
        lSubs := GetSubordinations(lPersonMember);//取出该人员成员对应的管理权限
        {1
        if lSubs.Count = 1 then
          if ResultUrls.IndexOf(lSubs[0]) < 0 then
            ResultUrls.Add(lSubs[0]);
        if lSubs.Count > 1 then
          ResultUrls.AddStrings(lSubs);}
        {2}
        ResultUrls.AddStrings(lSubs);
        lSubs.Free;
      end;
  finally
    {2}
    for i := ResultUrls.Count-1 downto 0 do
       begin   //取出人员成员截取后四位并大写
        s := SysUtils.UpperCase(StringUtils.Copy(ResultUrls, Length(ResultUrls)-3, 4));
        if (ResultUrls.Count > 1) and (s = '.PSM') then
          ResultUrls.Delete(i);
      end;
    Result := ResultUrls;
  end;
end;
回复

使用道具 举报

 楼主| 发表于 2007-1-23 15:07:43 | 显示全部楼层
function TRYXX.GetSubordinations(APersonMember: TOrgUnit): TStrings;//定义根据人员成员参数获得其管理权限的函数
var
  lOrgUnit : TOrgUnit;
  lOrgSubordinationItems : TOrgSubordinationItems;
  i : integer;
  ResultUrls : TStrings;
begin
  ResultUrls := TStringList.Create;
  lOrgSubordinationItems := TOrgSubordinationItems.Create;//定义TOrgSubordinationItems对象,里面存储一个下属列表
  try
    OrgSys.OrgSystem.GetAllSubordinationItems(APersonMember, lOrgSubordinationItems);
    if lOrgSubordinationItems.Count > 0 then
      for i := 0 to lOrgSubordinationItems.Count-1 do
        begin
          lOrgUnit := OrgSys.OrgSystem.FindUnit(lOrgSubordinationItems.DeptID,
            lOrgSubordinationItems.PositionID, lOrgSubordinationItems.PersonID);
          ResultUrls.Add(lOrgUnit.BizUrl.URL);
        end
    else ResultUrls.Add(APersonMember.BizUrl.URL);
  finally
    lOrgSubordinationItems.Free;
    Result := ResultUrls;
  end;
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-9 17:03:17 | 显示全部楼层
这个函数GetSubordinations有两个循环,分别是实现的具体目的,要不你把每句话都写明注释,什么作用,为什么取,谢谢
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2024-12-26 09:49 , Processed in 0.039104 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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