起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 404|回复: 11

【结贴】指定发布范围

[复制链接]
发表于 2009-10-21 08:54:31 | 显示全部楼层 |阅读模式
X3_3088
新闻发布申请的:发布范围,如何指定到当前登录部门及其以下部门成员。

11.png

11.48 KB, 下载次数: 201

回复

使用道具 举报

发表于 2009-10-21 08:57:13 | 显示全部楼层
不是很理解楼主的意思,请具体描述一下。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-10-21 09:05:42 | 显示全部楼层

??

现在的发布范围是整个组织机构,我想根据登录者的信息限制范围为当前登录者及其以下部门,如登录者的部门为采油厂,那发布者的范围即为采油厂及其以下部门。

12.png

17.94 KB, 下载次数: 193

回复 支持 反对

使用道具 举报

发表于 2009-10-21 09:19:18 | 显示全部楼层
请楼主看一下这个 发布范围 选择的相关代码

业务模型\业务系统\产品OA\信息发布\基类\信息发布
function TISSUEBASICINFO.SelectRange: Boolean;
以及 业务模型\系统空间\用户界面基础\界面库\系统接口\选择组织单元对话框
procedure TSELECTORGUNITSFORM.RefreshSource;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-10-22 09:59:39 | 显示全部楼层

??

当前部门组织机构已经取得
//取当前登陆者机构
  lContextCurrent := Business.Model.TContextCurrent.Create(Self.Context);
  try
    lOrgUnit := OrgSys.OrgSystem.GetUnit(lContextCurrent.Dept.ID, '', '');
    lBizURL := lOrgUnit.BizURL;            
  finally
    lContextCurrent.Free;
  end;
  dialogs.ShowMessage(lBizURL.URL);
-----------------------------------------------------------------------------------------------
function TISSUEBASICINFO.SelectRange: Boolean;
中如何替换我取得的lBizURL.URL(当前登录者的部门信息)
回复 支持 反对

使用道具 举报

发表于 2009-10-22 10:47:42 | 显示全部楼层
可以看看是不是替换:

业务模型\业务系统\产品OA\信息发布\基类\信息发布
function TISSUEBASICINFO.SelectRange: Boolean;

中的: ASourceURLs.Add('Org:\Root');
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-10-22 10:57:22 | 显示全部楼层

??

试过,不是替换这个
回复 支持 反对

使用道具 举报

发表于 2009-10-22 11:49:22 | 显示全部楼层
Result := TSystemCore.SystemInterface.SelectOrgUnits(
      Context, '选择', nil, lSelectOrgURLs, False, lCanSelectKinds);
这个方法中第3个参数就是可以选择组织机构,你把你的登陆者部门想办法赋给这个参数就可以了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-10-22 14:51:15 | 显示全部楼层

??

代码
function TISSUEBASICINFO.SelectRange: Boolean;
var
  ASourceURLs, ASelectedURLs: TStrings;  //lSelectOrgURLs
  lSelectOrgURLs,lDeptURLs: TOrgURLs;
  lCanSelectKinds: TBizObjectKinds;
  i: integer;

  lContextCurrent: TContextCurrent;
  lOrgUnit: TOrgUnit;
  lBizURL: TBizURL;
begin
  //取当前登陆者机构
  lContextCurrent := Business.Model.TContextCurrent.Create(Self.Context);
  try
    lOrgUnit := OrgSys.OrgSystem.GetUnit(lContextCurrent.Dept.ID, '', '');
    lBizURL := lOrgUnit.BizURL;             //取得机构的URL
  finally
    lContextCurrent.Free;
  end;
  dialogs.ShowMessage(lBizURL.URL);

  if not RangeDataSet.Active then
    RangeDataSet.Open;
  ASourceURLs   := TStringList.Create;
  ASelectedURLs := TStringList.Create;
  lSelectOrgURLs := TOrgURLs.Create;
  //begin
  lDeptURLs := TOrgURLs.Create;
  lDeptURLs.Add(lBizURL);
  //end
  try
    //TDataSetUtils.GetDataSetIDValues(RangeDataSet, 'FRANGEURL', ASourceURLs);
    ASourceURLs.Add('Org:Root');
    lCanSelectKinds := [TBizObjectKind.boOrgan, TBizObjectKind.boDept, TBizObjectKind.boPositionMember, TBizObjectKind.boPersonMember,
                        TBizObjectKind.boWorkGroup, TBizObjectKind.boWorkGroupMember];
    {Result := TOrgSelectSearchDialog.StaticExecute(Context, ASourceURLs, TResultType.rtURLList,
              ASelectedURLs, nil, DoExpendProp, Graphics.clYellow, lCanSelectKinds, True);}
    Result := TSystemCore.SystemInterface.SelectOrgUnits(Context, '选择', lDeptURLs, lSelectOrgURLs, False,
                                          [TOrgUnitKind.boPersonMember, TOrgUnitKind.boWorkGroupMember]);
    for i := 0 to lSelectOrgURLs.Count - 1 do
    begin
      ASelectedURLs.Add(lSelectOrgURLs.items.BizURL.URL);
    end;
    if Result then
    begin
      DoAddMemberToDataSet(ASelectedURLs);
      ChangeRangeText;
    end;
  finally
    ASourceURLs.Free;
    ASelectedURLs.Free;
    lSelectOrgURLs.Free;
  end;
end;
将当前登录者部门替换第三个参数后,执行结果如图。这并不是我要的结果,我是要这个单位及其以下部门,并且人员没有了,不能执行分配结果了。如何修改代码。

11.png

3.31 KB, 下载次数: 168

回复 支持 反对

使用道具 举报

发表于 2009-10-22 16:10:25 | 显示全部楼层
楼主,你这样子试试
根据这个部门节点,获取到所有的子,然后赋给 lDeptURLs ,最后把它传入到 SelectOrgUnits这个函数的第三个参数。
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-15 06:51 , Processed in 0.044140 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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