之前有些人对这块有些疑问,比如:
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)