1-9自动下推

当单据达到一定条件时(例如审核完毕),希望能够依据单据转换规则自动生成下游单据,这种场景我们称为自动下推。
自动下推有三种实现方式:工作流的自动单据转换服务、操作上的自动下推服务、插件实现自动下推。
注意:自动下推是后台自动生成,不会触发值更新事件、实体服务规则。经常有将预设单据手工下推的改为自动下推后,发现无法保存,原因就是手工下推会打开单据界面,有些必录项的赋值是通过值更新、实体服务实现的。
解决办法:通过单据转换规则的字段映射关系、表单服务策略、插件策略等多种配置方法实现相应必录字段的赋值,从而确保自动下推生成的单据可以通过保存校验。
自动单据转换服务
步骤1,在工作流调用审核操作的节点之后,添加“自动单据转换”。同时,视需要可以在之后添加“自动单据提交”,表示自动生成下游单据后,将生成的单据提交。
步骤2,打开自动单据转换动作,选择需要自动生成的下游单据。注意必须是单据转换中分组策略设为“一对一生成”的规则才能使用。
所以,工作流中使用自动单据转换的特点是:可以依据某个特点工作流程版本审批才触发自动单据转换;可以配置自动下推生成的单据自动提交。
自动下推服务
如果我们希望单据不论何种审核完成,都能够自动下推生成单据,那么可以在审核操作上配置“自动下推”服务。
步骤1,登录BOS IDE,打开单据属性“操作列表”,选择列表中的审核操作编辑;
步骤2,在审核操作的“其他控制”页签,配置服务端服务,新增服务“自动下推”。
插件实现自动下推
直接上示意代码,该代码中,this = 列表插件。示意代码没有测试过,仅用于说明过程.
// 获取源单与目标单直接的转换规则,如果规则未启用,则返回为空,注意容错
// 假设:上游单据FormId为sourceFormId,下游单据FormId为targetFormId
var rules = ConvertServiceHelper.GetConvertRules(this.View.Context, sourceFormId, targetFormId);
var rule = rules.FirstOrDefault(t => t.IsDefault);
// 获取在列表上当前选择需下推的行
ListSelectedRow[] selectedRows = ((IListView)this.View).SelectedRowsInfo.ToArray();
// 如下代码为单据上获取当前当前选择行
// string primaryKeyValue = ((IBillView)this.View).Model.GetPKValue().ToString();
// ListSelectedRow row = new ListSelectedRow(primaryKeyValue, string.Empty, 0, this.View.BillBusinessInfo.GetForm().Id);
// ListSelectedRow[] selectedRows = new ListSelectedRow[] { row };
// 调用下推服务,生成下游单据数据包
ConvertOperationResult operationResult = null;
Dictionary<string, object> custParams = new Dictionary<string, object>();
try
{
PushArgs pushArgs = new PushArgs(rule, selectedRows)
{
1-9自动下推
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



