起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 893|回复: 3

申请保存后,点流转,发生错误:流程未启动,不能填写处理意见

[复制链接]
发表于 2010-5-7 19:24:12 | 显示全部楼层 |阅读模式
你好,我在用x3  时有一个问题:

一个申请保存后,点流转,发生错误:流程未启动,不能填写处理意见


我跟踪了一下午,发现是

这个系统代码 TBIZDETAILFORMDOC.fbMainBeforeFlowOut 运行了两次,正常是运行一次,第一次 FStartUnitListVisible = true,  第二次 FStartUnitListVisible = FALSE
导致 GetBizInfo.AutoGenerateFlowProcessData;  运行而出错
正常运行一次,会执行 TBIZDETAILFORMDOC.fbMainBeforeFlowOut

而 //生成新FFlowID
    FFlowID := Business.System.JSCommon.CreateGUIDStr;
    Command.FlowValue.IDs.Add(FFlowID);


请帮忙看看,是什么造成运行两次出错


----------------------------------------
procedure TBIZDETAILFORMDOC.fbMainBeforeFlowOut(Sender: TObject; Command: TFlowOutCommand);
var lWarningMsg: string;
begin
  FFlowFinished := False;
  FFlowArchived := False;

  GetBizInfo.SaveBizData;

  if (not GetCanFlowOut(lWarningMsg)) then
  begin
    jsDialogs.ShowWarning(lWarningMsg, '警告');
    Command.Accept := False;
    exit;
  end
  else if (not FStartUnitListVisible) and (GetBizInfo.ProcUnitInfo.NeedProcess and (not GetBizInfo.Processed)) then
  begin
    //if jsDialogs.ConfirmBox('你还没有【处理】,确实要流转吗?', '提示', Business.Forms.Controls.mrCancel) then
    if True then
    begin
      GetBizInfo.AutoGenerateFlowProcessData;
      GetBizInfo.SaveBizData;
    end
    else begin
      Command.Accept := False;
      exit;
    end;
  end;
end;


procedure TBIZDETAILFORMDOC.fbMainBeforeFlowStartup(Sender: TObject; Command: TFlowStartupCommand);
var IDIndex: Integer;
begin
  //当流程重复处理数据范围不是新建填充,手动生成FFlowID
  if (TFT_FUNCLIB.GetFlowRepeatProcessDataMode(Command.FlowControl) <> TRepeatProcessDataMode.rpdmNewAndAutoFill) then
  begin
    //删除原FlowID
    IDIndex := Command.FlowValue.IDs.IndexOf(FFlowID);
    if IDIndex > -1 then Command.FlowValue.IDs.Delete(IDIndex);

    //生成新FFlowID
    FFlowID := Business.System.JSCommon.CreateGUIDStr;
    Command.FlowValue.IDs.Add(FFlowID);
  end;
end;



procedure TFT_BIZINFO.DataSetsdsProcessBeforeInsert(DataSet: TDataSet);
begin
  with DataSetsdsBizMain do
  begin
    if FieldByName('FFlowID').AsString = '' then
    begin
      jsDialogs.ShowWarning('流程未启动,不能填写处理意见!', '警告');
      SysUtils.Abort;
    end;
  end;
end;
回复

使用道具 举报

发表于 2010-5-8 13:11:55 | 显示全部楼层
出现问题,肯定逻辑出问题了,要不楼主自己跟一下代码,看看是否按照你的需求在执行,要不你做过简单例子传上来,我们恢复环境跟一下,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-7-27 18:23:50 | 显示全部楼层
有两个DOCVIEW的时候,要将优化加栽文档的勾选项要勾上,否则就会出现上面的问题!
回复 支持 反对

使用道具 举报

发表于 2011-11-1 17:11:09 | 显示全部楼层
另外在详细页文档打开时(FormDocCreate方法)中重新打开了业务主表也可能出现这种情况。
问题原因就是流程启动时FStartUnitListVisible的值原来是true,就不会在流程启动时检查是否有流程ID了。但出于某种原因,又运行了方法TBIZDETAILFORMDOC.fbMainBeforeFlowOut ,这时FStartUnitListVisible的值变成了false。所以检查了flowid是否存在。
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2024-12-22 22:56 , Processed in 0.035995 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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