NC外部交换平台XML使用及解析

下图是一个典型的XML文档头,文档头的根标签名是ufinterface,后面跟着就是各种初始化信息的设置。我们将这些属性分为三类:必须设置的属性、根据Servlet的URL参数设置决定是否必设的属性和根据需要决定是否设置的属性。

1、必须设置的属性:

billtype属性,这个属性值决定了这个XML文件(文档)中所有单据的单据类型,外部交换平台所有的处理都是围绕单据类型的。

sender属性,这个属性值设置的是外系统编码,指定的是数据的来源系统,即习惯上所说的发送方。

2、根据Servlet的URL参数设置决定是否必设的属性:

这些属性其实也是必设属性,但如果Servlet的URL参数里面设置了这几个属性的话,XML文档头里面可以不设置这几个属性值,即使设置了也不会起作用。

account属性,这个属性指定要将数据导入至NC系统的哪个帐套。

receiver属性,这个属性指定数据的接收方。接收方又是有一定格式的,可以将这个格式用一个正则表达式表示为:

接收方  =(公司编码|公司主键)(@主体帐簿编码)?

也就是说接收方根据单据类型的需要,可以是公司或者公司下的主体帐簿。当接收方是公司,如编码为“yy”名称为“yk”的公司,其主键为“1046”,那么根据外部交换平台总体参数设置中的接收公司匹配规则的设置(参考2.5节)可设为receiver=yy或者receiver=1046。当接收方是公司下的主体帐簿时,如编码为“yy”名称为“yk”主键为“1046”的公司下有一编码为“yy-0001”名称为“yy公司基准帐簿”的主体帐簿时,根据外部交换平台总体参数设置中的接收公司匹配规则可将接收方属性设置为receiver=yy@yy-0001或者receiver=1046@yy-0001。

3、根据需要决定是否设置的属性:

filename属性,在数据导入过程中,对于每张单据我们都可以记录其原始数据、翻译后数据,对整个文档我们也可以记录其导入后的回执信息,这个filename属性的值就是用于记录上述数据文件时的文件名。当然,如果您没有设置的话,系统会为每个导入的文档默认生成文件名。

isexchange属性,这个属性值决定了在外系统的数据在导入NC系统的过程中,是否使用外部交换平台提供的翻译转换和校验功能。正常情况下应将这个属性设置为“Y”,或者干脆不设。除非从其他NC系统产生的符合NC转换后标准的XML数据直接导入NC系统,并且很多基础档案数据字段直接用的是PK值,此时可以设置属性为“N”和“n”,可避免无谓的翻译转换。

在我们制作好的XML进行发送加载的时候,翻译转换可能会将某一个属性重复翻译而导致发送失败,这时我们可以将isexchange属性设置为“N”。

replace 属性,这个属性值决定是否允许将相同单据往同一个接收方重复导入。V50版的插件一般允许相同单据重复导入,除了将第一次导入视作新增之外,其余导入视作更新。关于这方面的具体内容请参见2.6节内容。如果不允许相同单据的重复导入,那么将这个属性值设置为“N”或者“n”。否则将其设置为“Y”或者干脆不设。

如果我们要通过发送XML来更改某一张单据的时候,可以将该单据的单据号填入XML中,其余属性填上你要修改的数据或保持与原单据数据一致。

单据流水号在外部交换平台中是一个相当重要的概念,可以将其看作一张单据在外部交换平台中的标识。一般情况下,需要为待导入的每张单据定义一个流水号,如果未定义的话,系统会自动为导入的每张单据生成一个独一无二的流水号。外部交换平台将同一单据类型并具有相同流水号的单据看作是同一张单据,如果重复往同一接收方发送具有相同流水号的单据时,第一次会在NC系统新增该单据,其后均更新已导入单据。但如果往不同接收方导入具有相同流水号的单据,第一次同样是新增该单据,其后也是新增且是往不同接收方新增,但往往会发生编码名称重复等错误,取决于不同的档案或者单据在不同组织内是否控制编码或者名称重复。

总的来说,XML文档头的“必须设置的属性”和“根据Servlet的URL参数设置决定是否必设的属性”,均为在外系统交换文档发送过程中必须得到的初始化信息,可以在Servlet的URL地址参数中设置,也可以在XML文档头属性中设置,但必须进行设置。而对于XML文档头的“根据需要决定是否设置的属性”,也可以在Servlet的URL地址的参数中设置,但一般不推荐这么做。


猜你喜欢

转载自blog.csdn.net/qq_37729885/article/details/80347269