二开单据自动下推销售出库单,大神看看还缺哪个没映射
金蝶云社区-yangyong_yy
yangyong_yy
0人赞赏了该文章 1,213次浏览 未经作者许可,禁止转载编辑于2015年10月27日 17:33:16

如下图,配置了二开单据下推到销售出库单的单据转换字段映射关系,当直接点击源单【下推】按钮下推时,可以下推完以后就直接保存,不需要在手工录入数据;
但是当在插件中直接用代码后台自动下推时却提示“未将对象应用设置到对象实例”,判断应该是转换规则字段映射的问题?下图是我配置的字段映射,大神帮忙看看还有哪些数据是直接要在后台下推插件中指定?(代码应该没有问题的,我在别的转换规则中测试过,可以自动后台下推并保存下游单据的)

[code]
// 获取源单与目标单直接的转换规则,如果规则未启用,则返回为空,注意容错
List rules = ConvertServiceHelper.GetConvertRules(this.View.Context, "TP_FZC_BankSlip", "AR_RECEIVEBILL");
ConvertRuleElement rule = rules.FirstOrDefault((ConvertRuleElement t) => t.IsDefault);
//string primaryKeyValue = ((IBillView)this.View).Model.GetPKValue().ToString();
string primaryKeyValue = "100248";
//ListSelectedRow row = new ListSelectedRow(primaryKeyValue, string.Empty, 0, this.View.BillBusinessInfo.GetForm().Id);
ListSelectedRow row = new ListSelectedRow(primaryKeyValue, string.Empty, 0, "TP_FZC_BankSlip");
ListSelectedRow[] selectedRows = new ListSelectedRow[] { row };
// 调用下推服务,生成下游单据数据包
ConvertOperationResult operationResult = null;
Dictionary custParams = new Dictionary();
try
{
PushArgs pushArgs = new PushArgs(rule, selectedRows)
{
TargetBillTypeId = "670b3608188c425a9f696d7ccb47843d", //单据类型 = 标准销售出库单
TargetOrgId = 1, // 请设定目标单据主业务组织。如无主业务组织,可以为0
CustomParams = custParams, // 可以传递额外附加的参数给单据转换插件,如无此需求,可以忽略
};
//执行下推操作,并获取下推结果
operationResult = ConvertServiceHelper.Push(this.View.Context, pushArgs, OperateOption.Create());
}
catch (KDExceptionValidate ex)
{
this.View.ShowErrMessage(ex.Message, ex.ValidateString);
return;
}
catch (KDException ex)
{
this.View.ShowErrMessage(ex.Message);
return;
}
catch
{
throw;
}
// 获取生成的目标单据数据包
DynamicObject[] objs = (from p in operationResult.TargetDataEntities
select p.DataEntity).ToArray();
// 读取目标单据元数据
var targetBillMeta = MetaDataServiceHelper.Load(this.View.Context, "AR_RECEIVEBILL") as FormMetadata;
OperateOption saveOption = OperateOption.Create();
// 忽略全部需要交互性质的提示,直接保存;
saveOption.SetIgnoreWarning(true); // 提交数据库保存,并获取保存结果
var saveResult = BusinessDataServiceHelper.Save(this.View.Context, targetBillMeta.BusinessInfo, objs, saveOption, "Save");
[/code]