之前有些人对这块有些疑问,比如:

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)

05-21 22:29