起步软件技术论坛-X3

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

【结贴】[请求]帮忙看一个错误!**

[复制链接]
发表于 2008-5-20 10:03:41 | 显示全部楼层 |阅读模式
想通过代码改变流程的默认执行者, 代码如下:

procedure TNG.FlowBroker1CreateFlowOutFlowTasks(Sender: TObject; Command: TFlowOutCommand);
var
   arrStr1: TStrings;
   arrStr2: TStrings;
   tmpStr1: String;
   tmpStr2: String;
   strChr1: String;
   strChr2: String;
   v_i:     Integer;
   lFlowTask:TFlowTask;
   lOrgURL: TOrgURL;
begin
    //Dialogs.ShowMessage('2');
    arrStr1 := TStringList.Create ;
    tmpStr1 :=  DataSetBroker1.DataSet.FieldByName('zs').AsString;
    strChr1 :=';';
    jsCommon.SplitStrEx(strChr1,tmpStr1,arrStr1);

    for v_i:=0 to (arrStr1.Count-1) do
    begin
         //Dialogs.ShowMessage( arrStr1[v_i] );
         arrStr2 :=  TStringList.Create ;
         tmpStr2 :=  arrStr1[v_i];
         strChr2 := '';
         jsCommon.SplitStrEx(strChr2,tmpStr2,arrStr2);

         lFlowTask := Command.FlowTasks.FindFlowTask('NGBMSH');//根据任务环节查找任务
         if lFlowTask <> nil then
           begin
                 dialogs.ShowMessage('hi');
                 lOrgURL := TOrgURL.Create('msk','ms','scp' ); //部门、岗位、人员创建组织
                 lFlowTask.Executors.Add(lOrgURL);//添加执行者
                 lOrgURL.Free;

         end;

         arrStr2.free;
    end;

    arrStr1.Free;

end;

当执行到 lOrgURL := TOrgURL.Create('msk','ms','scp' );  的时候报错, 如下图:

err.jpg

71.04 KB, 下载次数: 77

回复

使用道具 举报

发表于 2008-5-20 10:22:45 | 显示全部楼层
不要TOrgURL.Create,也不要Free
调用这个对象 Org.OrgSys.OrgSystem 的
function GetUnit(ADeptID: string; APositionID: string; APersonID: string): TOrgUnit; overload;
方法
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-20 10:40:06 | 显示全部楼层
还是有错误,在这句:

lFlowTask.Executors.Add(Org.OrgSys.OrgSystem.GetUnit('msk','ms','scp' ));//添加执行者

err.jpg

16.34 KB, 下载次数: 70

回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-20 10:40:52 | 显示全部楼层
我把代码拆开来, 是这个函数调用有问题:

Org.OrgSys.OrgSystem.GetUnit
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-20 10:45:28 | 显示全部楼层
能否给出一段完整的改变默认执行者的代码?
回复 支持 反对

使用道具 举报

发表于 2008-5-20 10:54:31 | 显示全部楼层
'msk','ms','scp' 这个人员成员可能有问题
我单独放一个按钮  Org.OrgSys.OrgSystem.GetUnit('ASUPPORT','ENGINEER','ry1');  
不报错
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-20 11:16:48 | 显示全部楼层
确认了下,人员应该没有问题.

上面的错误点确定后, 错误会定位到如下图:

err.jpg

49.17 KB, 下载次数: 65

回复 支持 反对

使用道具 举报

发表于 2008-5-20 11:20:04 | 显示全部楼层
单独放一个按钮  Org.OrgSys.OrgSystem.GetUnit('msk','ms','scp' );  

是否报错????
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-20 11:35:20 | 显示全部楼层
单独没有问题.

if lFlowTask <> nil then
           begin
                 //dialogs.ShowMessage('hi');
                 lFlowTask.Executors.Clear; //删除缺省执行者
                 //lOrgURL := TOrgURL.Create('秘书科','科长','张亮' ); //部门、岗位、人员创建组织单元
                 //lOrgURL := TOrgURL.Create(arrStr2[0],arrStr2[1],arrStr2[2] ); //部门、岗位、人员创建组织
                 //lOrgURL := TOrgURL.Create('msk','ms','scp' ); //部门、岗位、人员创建组织
                // lFlowTask.Executors.Add(lOrgURL);//添加执行者
                 //lOrgURL.Free;
                 //lTasks1.Add(lFlowTask);
                 //FlowBroker1.FlowControl.FlowOut(lTasks1); \
                 lOrgUnit := Org.OrgSys.OrgSystem.GetUnit('msk','ms','scp' );
                 //Org.OrgSys.OrgSystem.GetUnit('msk','ms','scp' );
                 lFlowTask.Executors.Add(lOrgUnit);//添加执行者
         end;

是在这句报错:

lFlowTask.Executors.Add(lOrgUnit);//添加执行者
回复 支持 反对

使用道具 举报

发表于 2008-5-20 13:35:00 | 显示全部楼层
这样写就可以了
var
lFlowTask:TFlowTask;
begin
         lFlowTask := Command.FlowTasks.FindFlowTask('LCZJGN');//根据任务环节查找任务
         if lFlowTask <> nil then
           begin
                lFlowTask.Executors.Clear;
                 lFlowTask.Executors.Add('ASUPPORT','ENGINEER','zs');//添加执行者

         end;

end;
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-13 05:53 , Processed in 0.047949 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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