之前有些人对这块有些疑问,比如:
1.选单操作是否和下推基本一样,都是公用同一套单据转换规则,只不过下推是源单推目标单,选单是目标单去选择源单,最终操作结果一样?
2,我想实现选单的时候,选单列表先通过插件过滤..是否支持这做法?..插件应该挂在哪个地方...重写哪个事件?其实是一样的,选单会拿单据界面已经录入的部分字段对源单数据进行过滤,至于哪些字段参与过滤可以在单据转换规则上设置。配置在单据转换路线的插件策略上,派生AbstractConvertPlugIn类,可以看到有一些可重载的方法。
1、下推和选单走的是同一个规则。
2、不同的是选单先根据过滤条件弹出符合条件源单列表。 3、整个过程主要几个大步骤 1)构造过滤条件 2)取源单数据 3)分组 4)构目标单 5)字段映射 6)创建关联关系,及单位换算 7)执行表单服务 8)输出结果单据转换插件事件执行顺序:
1、下推事件及顺序 //初始化变量 OnInitVariable(InitVariableEventArgs e) //解析字段映射关系,并构建查询参数。这里可以加入你想要的额外的字段 OnQueryBuilderParemeter(QueryBuilderParemeterEventArgs e) //构建列表中选择数据行的In语句 OnInSelectedRow(InSelectedRowEventArgs e) //解析选单条件策略 OnParseFilter(ParseFilterEventArgs e) //获取源单数据 OnGetSourceData(GetSourceDataEventArgs e) (下推执行) //执行分组前 OnBeforeGroupBy(BeforeGroupByEventArgs e) //创建目标单 OnCreateTarget(CreateTargetEventArgs e) (下推执行) //字段映射开始 OnBeforeFieldMapping(BeforeFieldMappingEventArgs e) //单个字段映射 OnFieldMapping(FieldMappingEventArgs e) //计算公式映射 OnFieldCalculate(FieldCalculateEventArgs e) //所有字段映射完成 OnAfterFieldMapping(AfterFieldMappingEventArgs e) //关联关系(Link表)创建前 OnCreateLink(CreateLinkEventArgs e) //关联关系(Link表)创建完成 OnAfterCreateLink(CreateLinkEventArgs e) //单据转换后事件 AfterConvert(AfterConvertEventArgs e) 2、选单前事件及顺序(弹出选单列表前) OnInitVariable(InitVariableEventArgs e) //解析映射关系中的过滤选项 OnParseFilterOptions(ParseFilterOptionsEventArgs e)(选单执行) OnParseFilter(ParseFilterEventArgs e) 3、选单事件及顺序 OnInitVariable(InitVariableEventArgs e) OnQueryBuilderParemeter(QueryBuilderParemeterEventArgs e) OnInSelectedRow(InSelectedRowEventArgs e) //获取源单数据 OnGetDrawSourceData(GetDrawSourceDataEventArgs e)(选单执行) OnBeforeGroupBy(BeforeGroupByEventArgs e) //目标单创建后 OnCreateDrawTarget(CreateDrawTargetEventArgs e)(选单执行) OnBeforeFieldMapping(BeforeFieldMappingEventArgs e) OnFieldMapping(FieldMappingEventArgs e) OnFieldCalculate(FieldCalculateEventArgs e) OnAfterFieldMapping(AfterFieldMappingEventArgs e) OnCreateLink(CreateLinkEventArgs e) OnAfterCreateLink(CreateLinkEventArgs e) //单据转换后事件 AfterConvert(AfterConvertEventArgs e)