用友U8+ERP平台目前是一个单组织业务模式,如果企业存在集团多分子公司,同时物料编码信息需要统一管理要求,物料编码信息一致性就存在问题。
常规方式就是安排录入人员在多公司进行同步维护,这种方式会增加企业运营成本,同时会存在数据同步差异问题。
为了解决这个问题,目前有多种方式去处理这个需求,针对企业的实际情况选定。
常规方式分为三种:
1、直接通过触发器方式实现多账套数据同步(新增,修改,删除),优点:可以实现实时同步 缺点:如果是跨服务器或者跨地区网络,会存在维护延时或者报错(未知错误)。
2、通过数据库代理方式定时进行同步更新(新增,修改,删除),优点:可以友好的进行跨服务器或跨区域网络,不影响数据维护速度 缺点:时效问题,可以根据需要设置同步时间。
3、就是通过手工指定导入编码,通过插件导入进行同步(新增,修改,删除),优点:手工指定需要的编码进行导入 缺点:工程相对大,操作工作量大。
重要前期准备工作:
1、存货分类的同步(通过代理实现,代理库指向目标账套库)
-----获取来源账套的分类信息
select * into #InventoryClass from [来源服务器].来源账套数据库.dbo.InventoryClass
-----导入新增存货分类
insert into InventoryClass(cInvCCode,cInvCName,iInvCGrade,bInvCEnd)
select cInvCCode,cInvCName,iInvCGrade,bInvCEnd from #InventoryClass where cinvccode not in (select cinvccode from InventoryClass)
---删除不存在的分类
delete from InventoryClass where cinvccode not in (select cinvccode from #InventoryClass)
2、计量单位信息可以按照如上方式操作或者手工指定(单位变更非常少)
3、存货档案生产部门处理
多组织存在每个公司的生产部门编码和名称不一致问题。同步的存货档案对应生产部门信息不存在会提示不成功。
针对这个问题,提前准备好对应关系。后续可以通过case when 或者对照表进行转换。
如下通过case when 代理定时更新同步,在同步可以通过如下方式实现(代理或触发器中)
update i set i.cInvDepCode=case
when i1.cInvDepCode='C1501' then '0303'
when i1.cInvDepCode='C0801' then '0304'
when i1.cInvDepCode='C1504' then '0305'
when i1.cInvDepCode='C1502' then '0306'
when i1.cInvDepCode='C1505' then '0307'
when i1.cInvDepCode='C0805' then '0308'
when i1.cInvDepCode='C1401' then '0309'
when i1.cInvDepCode='C1507' then '0310'
end
from inventory i
join [来源服务器].来源账套数据库dbo.inventory i1 on i.cinvcode=i1.cinvcode
--
4、存货档案仓库的问题可以按照3的方式进行处理。
如果有需要完整的代码,可以私信给我,提供一个邮箱信息。