【结贴】自己做的WebService里面如何操作自动下推
金蝶云社区-姜李直
姜李直
0人赞赏了该文章 711次浏览 未经作者许可,禁止转载编辑于2017年09月08日 12:53:09

如题

在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 结贴