如题
在WebService里面该如何实现自动下推呢?
实现自动下推后还要考虑干预条件,例如,哪些行允许被下推,数量需要调整。
[code]//原单 使用根目录的规则
string sourceFormId = "PUR_ReceiveBill";
//目标单
string targetFormId = "STK_InStock";
// 获取源单与目标单的转换规则
IConvertService convertService = ServiceHelper.GetService
var rules = convertService.GetConvertRules(ctx, sourceFormId, targetFormId);[/code]我使用了我之前操作的自动下推插件的内容,在GetConvertRules的时候,报错。
System.Exception: Kingdee.BOS.App.Security.K3DataCenterService failed to Create Instance. 在 Kingdee.BOS.App.Data.KDatabaseFactory.GetConnectionString(Context ctx) 在 Kingdee.BOS.App.Data.KDatabaseFactory.CreateDataBase(Context ctx) 在 Kingdee.BOS.App.Data.DBUtils.ExecuteReader(Context ctx, String strSQL, IEnumerable`1 paramList, CommandType cmdtype, CommandBehavior cmdBehavior, Boolean bNewCn) 在 Kingdee.BOS.App.Data.DBUtils.ExecuteReader(Context ctx, String strSQL, IEnumerable`1 paramList, CommandType cmdtype, CommandBehavior cmdBehavior) 在 Kingdee.BOS.App.Data.DBUtils.ExecuteObject[T](Context ctx, String strSQL, IDataEntityType dt, IDictionary`2 propertyTypeMaps, CommandType cmdType, SqlParam[] paramList) 在 Kingdee.BOS.App.Data.DBUtils.ExecuteDynamicObject(Context ctx, String strSQL, IDataEntityType dt, IDictionary`2 propertyTypeMaps, CommandType cmdType, SqlParam[] paramList) 在 Kingdee.BOS.App.Core.Convertible.ConvertMetaDataService.GetConvertRuleDataEntity(Context context, String sourceFormId, String targetFormId) 在 Kingdee.BOS.App.Core.Convertible.ConvertMetaDataService.GetConvertRules(String sourceFormId, String targetFormId) 在 Kingdee.BOS.ServiceHelper.ConvertServiceHelper.GetConvertRules(Context ctx, String sourceFormID, String targetFormID)
【20170911更新】
这边考虑了一段时间,后发现,还是不能这样,在外部如果能构造出可以执行sql的Context估计会有安全问题。后面使用个性化的webapi处理了。
但是目前有个疑问。
在单据转换插件中如何去干预数据呢?
例子:
上游单据2条明细
A物料 10个数量
B物料 2个数量。
如何在单据转换里面。只下推物料B 1个数量呢?[code] PushArgs pushArgs = new PushArgs(rule, selectedRows)
{
TargetBillTypeId = "", // 请设定目标单据单据类型。如无单据类型,可以空字符
TargetOrgId = 0, // 请设定目标单据主业务组织。如无主业务组织,可以为0
CustomParams = custParams, // 可以传递额外附加的参数给单据转换插件,如无此需求,可以忽略
};
//执行下推操作,并获取下推结果
operationResult = ConvertServiceHelper.Push(this.KDContext.Session.AppContext, pushArgs, OperateOption.Create());[/code]是在CustomParams 里面操作吗?如何去做呢?
【20170911第二次更新】
选择行下推可以调整
[code]ListSelectedRow row = new ListSelectedRow(_billId, string.Empty, 0, sourceFormId);
ListSelectedRow[] selectedRows = new ListSelectedRow[] { row };[/code]关于数量调整丁老师回复要开发单据转换插件,这个自行研究。
20170911 结贴
推荐阅读