起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 851|回复: 26

【搞定】2617中关于取当前操作者岗位的疑问**

[复制链接]
发表于 2007-3-6 11:43:04 | 显示全部楼层 |阅读模式
我看平台中许多地方用 TSystemCore.Operator.Positions[0].Context此类的代码 ,以及http://bbs.justep.com/forum.php?mod=viewthread&tid=9474中的
2、使用系统函数
   在“ 业务模型\系统空间\系统运行库\系统核心库”中
   TSystemCore.Operator
      在主界面中需要获取用户信息时,由于还没有环境信息,所以必须使用此种方法。
  TSystemCore.Operator.Positions[0].PersonMember.ID  //当前操作者ID
    TSystemCore.Operator.Positions[0].PositionMember.ID  //当前操作者岗位ID
    TSystemCore.Operator.Positions[0].PositionMember.Parent.ID  //当前操作者部门ID
  TSystemCore.Operator.Positions[0].PositionMember.Parent.Parent.ID //当前操作者机构ID

如果一人多岗的是不是有问题?
回复

使用道具 举报

 楼主| 发表于 2007-3-6 13:17:32 | 显示全部楼层
TSystemCore.Operator.DefaultPosition 也不对
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-6 14:00:11 | 显示全部楼层
人呢?
回复 支持 反对

使用道具 举报

发表于 2007-3-6 14:06:09 | 显示全部楼层
Positions[0]取到的是系统默认排序后第一个岗位,但不一定是当前选择的岗位。

DefaultPosition应该是当前人员在使用自动方式登录时的岗位,可以在人员属性中设置。

取当前登录的岗位(系统空间\系统运行库\系统函数库)
{ 根据指定环境查找操作者岗位 }
    static function FindOperatorPosition(AContext: TContext): TOperatorPosition; overload;
    { 根据指定环境获取操作者岗位 }
    static function GetOperatorPosition(AContext: TContext): TOperatorPosition; overload;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-6 14:47:41 | 显示全部楼层
TContextUtils.FindOperatorPosition(TSystemCore.Operator.Context) ????
还是不对。
还是你们给我个最简单通用的方法吧:在一个业务功能如何中取当前操作者的ID,岗位ID,部门ID,机构ID。
(该用户多个岗位)

比如像以前的TCOMMONCOMPONENTLIBRARY.UserSystem...
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-6 15:19:54 | 显示全部楼层
在一个功能中运行 Dialogs.ShowMessage(SYSTEMUTILS.TContextUtils.FindOperatorPosition(Context).PositionMember.DisplayName);   
也不对
回复 支持 反对

使用道具 举报

发表于 2007-3-6 15:20:51 | 显示全部楼层
FindOperatorPosition是可以取到当前操作者的岗位对象的。你需要传入当前功能或窗体的环境作为参数

你使用有什么问题吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-6 15:32:13 | 显示全部楼层
当然传入了啊,你可以测试一下看看,为什么显示的不是我登陆的那个岗位?
回复 支持 反对

使用道具 举报

发表于 2007-3-6 16:28:51 | 显示全部楼层
我这里一切正常啊:
var
  pID, pName : string;
begin
  pID := SystemUtils.TContextUtils.GetOperatorPosition(Context).Position.ID;
  pName := SystemUtils.TContextUtils.GetOperatorPosition(Context).Position.DisplayName;
  jsDialogs.ShowMsg(pName, pID);
end;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-6 16:48:03 | 显示全部楼层
怪事!!!

该功能是这样运行的:
TSystemCore.FuncManager.RunFunc(FDefaultPosition.Context, '',
  'Biz:COLLABORATIONJUSTEPNOTEBOOK.FUNC', '', False, nil, False);

procedure TNOTEBOOKMAINFORM.Button1Click(Sender: TObject);
var
  pID, pName : string;
begin
  pID := SystemUtils.TContextUtils.GetOperatorPosition(Context).Position.ID;
  pName := SystemUtils.TContextUtils.GetOperatorPosition(Context).Position.DisplayName;
  jsDialogs.ShowMsg(pName, pID);
end;

a.jpg

8.65 KB, 下载次数: 313

回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-1-13 02:31 , Processed in 0.043237 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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