一般都使用传xml对象的方式。这种方式方便在只需传入正确的视图就行了。但是如果字段不全,或者字段的数据类型与api要求的不服,会报些莫名其妙的错误,比如这些:
项目大类0不存在项目大类0不存在货位不合法!
货位不合法!
存货01019002069没有自由项1管理,不能输入
存货01019002069没有自由项2管理,不能输入
存货01019002069没有自由项3管理,不能输入
存货01019002069没有自由项4管理,不能输入
存货01019002069没有自由项5管理,不能输入
存货01019002069没有自由项6管理,不能输入
存货01019002069没有自由项7管理,不能输入
存货01019002069没有自由项8管理,不能输入
存货01019002069没有颜色管理,不能输入
存货01019002069没有内存管理,不能输入
存货01019002069输入项目大类不合法,请重新输入
存货01019002069输入项目大类不合法,请重新输入
存货01019002069没有设置为追踪管理,不能输入入库单号
不是代管仓库,不能录入代管供应商!
收发类别 14 在本系统中不存在收发类别 2a 在本系统中不存在转出仓库不能为空
入库类别不合法
转入仓库不能为空
出库类别不合法
解决办法是:
1.构建一个和用友单据一摸一样的视图
仿照单据对应的用友的视图写一个自己的视图,保证 自己写的字段名和用友的视图的字段名一摸一样。如果自己表有值的地方就保证自己的表里的这个字段数据类型和用友单据对应的表的字段类型一样。
如果是自己表没有的字段,而用友视图上有的字段,就不能简单的赋值为NULL了,这样会得到莫名其妙的错误。
2.构造正确的数据类型。
比如要插入的单据是 其他出库单主表 ,视图名称:kcotherouth,首先在u8上录入一条其他出库单的数据。
为了保证自己的视图数据类型一样,可以使用 select top 1 * into t_tempKcotherouth from kcotherouth 这条语句构建一个和其他出库单主表数据类型,字段名称都一样的临时表。
然后在自己的视图里left join t_tempKcotherouth on 视图名称.关键字段=t_tempKcotherouth.不要和关键字段名称有关联的字段,保证这个 左连接不会查出临时表的任何记录。这样做的目的
是为了使用这个临时表的数据结构,保证自己的视图和用友u8的视图数据结构一摸一样。
这两步做完插入的成功率就会大大的提高。