用友TurboCRMU8EAI数据接口常见问题Word文档格式.docx
《用友TurboCRMU8EAI数据接口常见问题Word文档格式.docx》由会员分享,可在线阅读,更多相关《用友TurboCRMU8EAI数据接口常见问题Word文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
17.U8EAI返回错误:
“未设置对象变量或Withblock变量,ErrNumber:
91SourceU8Login”或“拒绝访问”7
18.客户新增接口,返回错误:
“未设置对象变量或Withblock变量”8
19.EAI的SQLEXEC方式,返回错误:
9
20.新增销售订单的接口,返回错误:
“导入失败本单据已被他人修改或修改不成功或网络冲突”。
11
21.当EAI导出的xml超出IIS最大限制时,EAI返回的不是xml,而是IIS的报错页面13
22.调用U8EAI服务,报错:
“系统未找到指定的资源”,或“指定资源下载失败”13
23.查询订单接口,报错:
另一程序正在使用此文件,进程无法访问13
24.怎么看适配器正在工作14
25.为什么提示没有找到订单明细14
26.数据库用企业管理器查询分析器都可以连接但适配器打不开14
27.适配器报错:
对象不存在14
28.什么是中间表为什么要用14
29.什么是识别码14
30.什么是触发器在什么情况下需要用15
31.U8原价格、含税价格等字段与CRM对应公式15
32.U8适配器中CRM创建的客户导出到U8,U8修改后仍然同步到CRM,相反流向可通过适配器选项15
33.U8适配器为什么每次再不选择导入全部时导入都是全部数据15
34.U8适配器所有发货单导入CRM都提示订单明细必须填写的错误15
35.U8适配器到处订单总提示“该数据已在对方系统存在,不能导出”16
36.U8适配器导入交付成功后中间表中数据不能够删除16
37.U8适配器6.1API版本订单导出失败时报错信息为空18
38.U8适配器导入发票成功但订单没有关联上18
39.U8适配器当前单据价税合计总额表头税率(100+表头税率)-税额总额的差超过整单容差18
40.U8适配器U8年结对CRM的影响18
41.U8适配器U8年度帐套对CRM的影响18
42.U8适配器ObjectvariableorWithblockvariablenotset19
43.U8多账套导出枚举值识别码问题19
44.PHP内存溢出解决方法19
45.关于在CRMEAI与U8接口使用中出现带有msxml3.dll错误的问题19
46.EAI后台任务调试步骤20
47.EAI的配置文件是哪些21
48.UFInterfaceroottag=return错误。
21
解决方案:
在SQLSERVER查询分析器,选择到U8的帐套数据库,例如:
UFDATA_001_2009,运行以下命令:
select@@dbts将查询结果(该结果为数据库的时间戳),拷贝到以下字段:
则在该时间以后修改的数据才会同步到CRM。
该方式一般是将客户和产品等数据通过excel方式导入CRM后,需要手工维护该字段,保证再同步的数据为导入之后更新的数据。
注意:
各类单据目前不支持时间戳。
只有客户、产品等数据支持此方式。
首先检查CRM系统中的导入交付记录状态,如果不是“完成”状态,在CRM-U8适配器里配制出交付的状态,取默认值“完成”即可。
主要原因之一是订单可能是通过excel导入的,订单明细上没有U8订单表体的识别码。
那么只能手工维护了,将CRM订单明细上的识别码填上U8订单表体的ID字段。
原因是执行的操作从U8中导出的数据量太大,超过了U8所使用的IIS的缓冲区限制,因此报错。
如果是872版本,可以打开“U8EAI接口设置”,点击“自动设置IIS”,会将缓冲区设大,一般情况下可以解决该问题。
如果是872之前的版本,U8服务器系统为2003,可以查找c:
\windows\system32\inesrv\metabase.xml文件有一行,如AspBufferingLimit="
4194304"
,表示4096(4M),至少改为100兆以上,重启IIS,即可以解决该问题。
tc_ufinterfaceupdate表中roottag字段为同步对象类别,例如saleorder为订单。
code为数据的U8编码。
Updateflag为同步标志,未同步的数据该字段为‘1’,同步后该字段为‘3’,并且定期系统会自动清除‘3’的数据。
例如:
如果想手工控制同步某几条数据,那么只需将这几条数据Updateflag字段更改为‘1’,然后手工同步即可。
CRM在实施过程中,会涉及到与各个区域分公司打交道,也会跟各个业务线公司打交道。
而每个分公司的财务核算又是独立的。
那么CRM接口会遇到两种情况:
第一种情况:
如果是跟各个区域分公司做部署的时候,大部分情况分公司的各个帐套存货存货(产品)是一样的。
那么在接口设置“CRM产品识别码上是否加入U8帐套号”是不用选的;
第二种情况:
如果是跟各个业务线的公司做部署的时候,大部分情况分公司各个帐套存货(产品)是不一样的。
这样CRM在下订单的时候就必须区分具体CRM某个产品需要具体传递到哪个帐套。
所以接口设置“CRM产品识别码上是否加入U8帐套号”是需要选的。
那么导入过来的存货就会加入识别码,这样就不会出现重复了,也避免下单出错。
应该是与U8系统帐套没有对应上导致的,在CRM系统中建立的ERP-U8适配器的系统编码,应与U8系统EAI接口设置---外部系统注册的帐套系统编码相同。
网址应填入U8系统服务器的IP地址或服务器的域名,如http:
//severip/U8EAI/import.asp或http:
//servername/U8EAI/import.asp,用IE浏览器打开上述网址时,如无法打开,请确认该计算机的IIS服务是否可用。
CRM系统中的ERP-U8适配器提供定时同步U8系统数据到CRM系统的功能,即在U8中新建的数据后,在CRM系统的ERP-U8适配器中启用后台任务后,CRM系统即通过EAI适配器来更新U8系统中新建的数据,之后根据同步周期来更新到CRM系统中。
订单从U8导入到CRM系统中,有时该订单状态为失效状态,此时需要手动更改订单状态为生效状态后,才能成功导入。
从U8系统导入订单到CRM系统时,需先在CRM系统中建立价格表,再从U8中导入产品、员工、客户到CRM系统,并且,建立的价格表与该订单产品、员工、客户相关联。
从U8系统中导入CRM系统的收款单必须为U8中做过核销的单据,其他单据不做处理。
U8数据按年度帐保存,因此在U8年结之后,需将U8-EAI的注册配置对应的新年度帐套:
在U8数据库服务器的新年度的UFMeta库中执行“Update_UFMeta.sql”脚本,在U8数据库服务器的新年度的UFData库中执行“Update_UFData.sql”脚本。
在CRM系统的对象数据交换的部门对应页面,将U8部门档案中末级部门的编码,填写到CRM系统的相应部门的识别码上即可。
CRM与U8有接口的项目,U8有年度账,一般会在12月份新建年度账,然后进行年结(即将09年未完成的数据结转到10年度的数据库中)等操作,因此:
1、需要在U8年结完成之后,对于新的年度账,如UFData_001_2010数据库,执行“Update_UFData.sql”脚本或“Update_UFData_870.sql”脚本,否则U8新年度的业务数据无法自动传回CRM
2、U8使用会计期间来确定使用2009年、2010年帐套的标示,如2010年第一个会计期间为2009-12-20到2010-1-19,则登录U8的日期为2009-12-22日时,登录的就是2010年的帐套
3、注意U8EAI接口设置中的登录日期,由该日期确定当前通过U8EAI接口进入U8的数据,是进入新年度还是进入旧年度。
4、关于适配器上记录的U8的时间戳(TimeStamp),时间戳是用来处理U8基础档案增量数据的。
年结过后,适配器一旦对应新年度数据库,时间戳即失效,因为原有时间戳是旧年度数据库的。
因此建议在U8年结完成后,对于新年度数据,通过查询分析器执行:
SELECT@@DBTS,取得最新的时间戳后,写入适配器所有的基础档案对应的TimeStamp中,即可保证CRM仍旧可以取得U8基础档案的增量数据。
识别码这个字段最终的值,是从CRM导出到U8后,根据U8的客户编码回写的,所以不会重复,不存在并发问题。
可以在适配器里做设置,如果新增客户时不录入识别码,会在导出U8时自动使用客户编号作为识别码。
U8保存成功后,会取U8的客户编码作为CRM的识别码,因此不会存在重复的问题,所以也不用再使用自动编号。
91SourceU8Login”或“拒绝访问”
Ø
问题原因:
用户权限丢失。
解决:
将IUSR_***(计算机名)和ASPNET用户加至Administrators组。
具体操作:
如下图1、2、3。
图1
图2
图3
“未设置对象变量或Withblock变量”
EAI基础档案组件内部Bug。
打上各个版本的SP补丁。
略。
特别说明:
对872版本,如不能打SP1补丁,则可以采用替换文件的方式。
替换SP1文件步骤:
1)组件替换
✓将附件
中《U872EAI(sp1)》中的U8Distribute.dll和EAICompression.dll替换至“U8Soft\EAI”下的同名文件(注意先将源文件保存一份);
中《U872EAI(sp1)》中的TransSrv.dll替换至“U8Soft\ufcomsql”下的同名文件(注意先将源文件保存一份)。
2)组件注册
✓使用附件文件夹“U8EAI诊断工具”中的U8EAIDiagnoseTool.exe工具,先在“用户权限”页签点击“停止IIS”,然后再“组件注册”页签点击“COM组件注册”(注意有两个组件,都需要注册!
),接着在同一页签点击“.Net组件生成tlb”按钮,最后回到“用户权限”页签点击“重启IIS”。
图4
1)调用业务组件UFIDA.U8.IEAISqlExecutor.SQLExecutor发生异常,原因:
创建只读用户出错:
Noerrormessageavailable,resultcode:
DB_E_ERRORSOCCURRED(0x80040E21).(错误号:
-2146233088)
2)调用业务组件UFIDA.U8.IEAISqlExecutor.SQLExecutor发生异常,原因:
执行查询出错:
无法打开登录'
UFDATA_008_2009'
中请求的数据库。
登录失败。
(错误号:
创建数据库用户“reader”,或通过“reader”用户查询帐套数据库无权限。
在U8数据库服务器中打开SQLServer,执行创建“reader”用户的脚本。
如下所示。
-----------------步骤一:
打开SQLServer后执行如下脚本---------------------
usemaster
ifnotexists(selectnamefromsysloginswherename='
reader'
)
begin
--创建新的登录名
execsp_addlogin@loginame='
@passwd='
reader345'
end
---------------------------------------------------------------------
----------------步骤二:
切换帐套数据库后执行如下脚本------------------------
--1.切换帐套数据库,如下图5:
图5
--2.执行如下脚本
ifnotexists(selectnamefromsysuserswherename='
--为新的登陆给予只读权限
execsp_grantdbaccess@loginame='
execsp_addrolemember@rolename='
db_datareader'
@membername='
else
--为用户赋予更高的DB权限
execsp_droprolemember'
'
db_owner'
end
情况1:
U8中存在异常任务或单据被锁定;
情况2:
导入的销售订单数据项超过规定长度。
1)在U8“系统管理”中,清除“异常任务”和“单据锁定”;
2)参照EAI销售订单的导入模板,检查输入数据字段长度是否合法。
✓打开U8服务器中“系统管理”,单击菜单“视图”,单击“清除异常任务”和“清除单据锁定”。
图6
打开EAI导入模板库(路径:
U8SOFT\EAI\XML\Template),如下所示。
图7
检查输入数据项是否合法,如表头自定义项9,文本格式,可最高输入八位。
当输入字符超过时,便会提示此错误。
21.当EAI导出的xml超出IIS最大限制时,EAI返回的不是xml,而是IIS的报错页面
IIS上传下载文件大小设置:
一、解决SERVER2003不能上传大附件的问题
在“服务”里关闭IISAdminService服务。
找到windows\system32\inetsrv\下的metabase.xml文件。
找到ASPMaxRequestEntityAllowed把它修改为需要的值(可修改为20M即:
20480000,如果不够,可以继续增大)
存盘,然后重启iisadminservice服务。
二、解决SERVER2003无法下载超过4M的附件问题
在“服务”里关闭IISAdminService服务。
找到AspBufferingLimit把它修改为需要的值(可修改为20M即:
存盘,然后重启IISAdminService服务。
“系统未找到指定的资源”,或“指定资源下载失败”
防火墙阻挡或操作系统问题。
1)“系统未找到指定的资源”,即800c0005,解决办法是在防火墙中允许dllhost.exe访问网络;
2)返回错误是“指定资源下载失败”,即800c0008,解决办法是关闭防火墙;
3)如以上均无效,则重装系统。
另一程序正在使用此文件,进程无法访问
IIS出现“另一个程序正在使用此文件,进程无法访问。
”错误提示,说明U8应用服务器的TCP80端口已打开。
一般情况下,可能是有另一个WEB服务已启动,它打开了80端口,另一种可能就是某个软件打开了80端口。
查看IIS网站下是否有其他WEB服务也占用了80端口,如果有则将其改为非80端口,然后重启IIS。
如下图所示。
图8
24.怎么看适配器正在工作
打开资源管理器,code\www\datacache\org1,看是否有类似于EAI_OBJECT开头的xml文件生成,生成的时候系统会有些慢,请不要终止服务,造成无谓的数据丢失。
25.为什么提示没有找到订单明细
主要体现在U8、外部系统两个适配器上,因为外部系统有可能不根据订单进行发货或核销,没有绑定订单,可通过数据库查询或系统查询来确认。
26.数据库用企业管理器查询分析器都可以连接但适配器打不开
在命令行模式执行>
telnet数据库服务器地址1433
看是否可以连接上,因为查询分析器和企业管理器不需要通过tcp/ip即可连接。
对象不存在
“对象不存在”的报错主要是由于数据错误造成,数据错误可能因为适配器配置错误。
产品中配置了产品类别ID(Product.FamilyID)对应到外部系统的ID上,两个系统的ID不一样,所以造成数据错误。
另外如果没有数据权限也会造成“对象不存在”的报错。
28.什么是中间表为什么要用
中间表名称为tc_*interfaceupdate,(*为任何字母)。
我们经常往要交换数据的对方系统中放置一个中间表,它包括4个字段“ObjectName”,"
updateflag"
"
id"
updatedate"
,分别是对象名称,更新状态,编号,更新时间。
对象名称其实就是对方数据库表名,为了以后适配器查找完整数据时用的,可以根据select*from对象名称whereid=编号获取到更新的信息,更新状态分为1,2,3。
1新增,2修改,3删除。
中间表应用在U8及外部适配器中。
29.什么是识别码
识别码就是与其他系统做数据交换的中间桥梁,通过它与其他系统的主键作对应,达到一对一的目的。
适配器是可以导入和导出的,我们把数据导入是如果不配置一个识别码这样的标示字段,那么导入进来后我们想通过CRM修改外部系统的数据,在CRM导出时我们就会发现不知道要修改其他系统中是哪一条数据。
识别码特性:
1、唯一,不能够重复
2、可以是以0开头的字符串
3、不是所有对象都有这个属性,大部分标准对象及枚举字段都有识别码。
30.什么是触发器在什么情况下需要用
触发器就是为数据库中表创建的一个工具,一般我们用到的触发器是在表做增、改、删操作的时候。
记录下来操作的记录ID。
放在tc_**interfaceupdate表(常称呼为中间表),这样接口以后就可以通过查询中间表数据来知道最近哪些需要导入到CRM
31.U8原价格、含税价格等字段与CRM对应公式
件数=主计量单位数量/换算率
原币无税单价=外币成交价/(1+税率)
原币含税单价=外币成交价
原币无税金额=外币金额/(1+税率)
原币税额=外币金额*税率/(1+税率)
原币价税合计=外币金额
本币无税单价=成交价/(1+税率)
本币无税金额
=税后金额
本币税额=
金额-税后金额
本币价税合计=金额
32.U8适配器中CRM创建的客户导出到U8,U8修改后仍然同步到CRM,相反流向可通过适配器选项
U8适配器中CRM创建的客户导出到U8,U8修改后仍然同步到CRM,相反流向可通过适配器选项。
33.U8适配器为什么每次再不选择导入全部时导入都是全部数据
因为导入时哪怕有一条数据错误,系统也不会更新时间戳,那么始终会在当前时间戳的时间点开始导入数据,请将错误数据处理使其成功导入或手工修改时间戳。
34.U8适配器所有发货单导入CRM都提示订单明细必须填写的错误
请检查U8是否是新帐套,试着在UFMeta_00*数据库需要重新执行接口提供的脚本。
确认是否执行脚本的方法也可以通过如下操作:
1、打开U8EAI工具导出要到的发货单,看<
head>
节点下最后一个<
bcredit>
后是否有<
csocode>
这个节点,如果没有说明脚本没有执行成功,如果有并且导入不成功,那么进入下一步操作
2、打开CRM路径code\www\datacache\org1找到刚才导入的交付日志文件名类似"
EAI_OBJECT_Inventory_Response****"
开头,打开里面看是否有<
节点,如果没有,那么重新启动一下U8服务器
35.U8适配器到处订单总提示“该数据已在对方系统存在,不能导出”
原因是因为U8接口报错:
“拒绝访问”,原因确认可打开U8安装目录u8soft