//代码生成lRange
lRange:='';
dsbRequireDetail.DataSet.First;
for icount:=0 to dsbRequireDetail.Dataset.RecordCount -1 do
begin
if dsbRequireDetail.Dataset.FieldByName['IsAgree'].AsInteger=0 then
begin
if lRange ='' then
lRange:='OrgChildren(OrgKey('''+ dsbRequireDetail.DataSet.FieldByName['DepartmentId'].AsString +''','''',''''), '''', True, False)'
else
lRange:=lRange + ' or '+'OrgChildren(OrgKey('''+ dsbRequireDetail.DataSet.FieldByName['DepartmentId'].AsString +''','''',''''), '''', True, False)';
end;
dsbRequireDetail.DataSet.Next;
end;
//结束生成
//代码控制下一环节的执行人员
lFlowTask:=Command.FlowTasks[0];
if lFlowTask <> nil then
begin
lFlowTask.ExecutorAmount:=TTaskExecutorAmount.teaAll;
lFlowTask.AllowExecutorRange:=lRange;
lFlowTask.ExecutorRange:=lRange;
end;
//结束代码控制下一环节的执行人员
现在的问题是不同的用户执行这一段代码获得的结果会截然不同,而lRange是相同的。
点流转应该是到财务部和生计科的两个主任那里,大部分用户使用这个功能都是正确的,但是孙露这个用户使用这个功能就会出现异常
这时候点添加
可以看到信息中心的孙露根本没有在可执行人员当中。
客户那边几十个用户当中有3个出这样的问题。
请告诉我是我的代码问题还是系统问题,我们现在使用的版本是2617,代码是写在业务信息上的FlowBroker的onCreateFlowOutFlowTasks事件上。
在调试过程中我们发现另外一个问题。
在这个地方设置断点,运行到断点时如果直接选择运行(F9),看到的结果和上面的一样,但是如果执行了一次逐语句执行(F7),再运行下去的话,可以看到
lFlowTask.AllowExecutorRange:=lRange;
lFlowTask.ExecutorRange:=lRange;
这两句根本没有起作用。 |