Biztalk 在参与方协议中设置EDIFACT分隔符

Biztalk 在参与方协议中设置EDIFACT分隔符,biztalk,biztalk-2010,edi,edifact,Biztalk,Biztalk 2010,Edi,Edifact,我目前正在BizTalk Server 2010中实施EDI解决方案。 这是一个场景: BizTalk负责在X.400邮箱和客户的ERP软件之间进行正确的邮件路由。它还用于使用SharePoint Web服务将有关交换邮件的信息放入SharePoint网站。 我正在使用角色链接和BizTalk参与方管理应用正确的设置(发送端口、UNB6段中的密码等) 现在我有一个问题: 当我尝试从客户的ERP系统获取传出的INVOIC消息,提取业务流程中的相关信息并将其写入SharePoint网站时,使用EDI

我目前正在BizTalk Server 2010中实施EDI解决方案。 这是一个场景:

BizTalk负责在X.400邮箱和客户的ERP软件之间进行正确的邮件路由。它还用于使用SharePoint Web服务将有关交换邮件的信息放入SharePoint网站。
我正在使用角色链接和BizTalk参与方管理应用正确的设置(发送端口、UNB6段中的密码等)

现在我有一个问题:
当我尝试从客户的ERP系统获取传出的INVOIC消息,提取业务流程中的相关信息并将其写入SharePoint网站时,使用EDI接收管道的接收端口将挂起,并显示以下错误消息:

An output message of the component "EDI disassembler" in receive pipeline 
"**********.Pipelines.FileNamePromotionEDIReceivePipeline, **********.Pipelines, 
Version=1.0.0.0, Culture=neutral, PublicKeyToken=****************" is suspended 
due to the following error: 
     Error: 1 (Miscellaneous error)
     33: Invalid occurence outside message, package or group.
The sequence number of the suspended message is 1. 
这是因为消息在每个段分隔符后使用CR和LF作为后缀。现在,我可以将CR和LF的ASCII十六进制代码添加到管道的“EfactDelimiters”设置中,但问题是,还有其他没有CR和LF的消息,无法使用相同的管道接收。顺便说一句,当我使用管道(也没有将CR和LF设置为分隔符)获取其中一条没有CR和LF的消息时,接收端口也会挂起,这一次由于使用点而不是逗号作为十进制分隔符而导致错误消息(尽管我在管道中启用了选项“UseDotAsDecimalSeparator”)。同样,只有更改EFactDelimiter才有帮助

我认为party agreement中的“字符集和分隔符”页面应该能够做到这一点:为每个业务方分别设置分隔符。但我在这些设置中所做的更改似乎没有任何效果。我将“UNA6后缀”设置为“crlf”,将“十进制表示法(UNA3)”设置为“.”(十进制)”,重新启动主机实例。。。同样的问题


有人能帮忙吗?

我从未使用过biztalk,但我知道我的EDIFACT,据我所知,那些包含CR/LF的消息在语法上是错误的。UNA6后缀似乎是微软添加的,因为我在EDIFACT的官方文档中找不到它的踪迹

通常,要在EDIFACT消息中用作特殊字符的字符由特殊(可选)
UNA
段设置,该段始终位于第一位。当你写的时候,你设置了分隔符/分隔符,我真的不知道,你的意思是什么,因为它可以指为创建的消息设置选项(消息中使用了什么分隔符),设置接收程序用于解析的分隔符,或者它可以引用打印在
UNA
段中的字符

我知道,在
UNA
段中,我所知道的没有办法表明使用了任何UNA6后缀(正如文件中非常明确地指出的那样,
UNA
段的长度必须正好是9个字符,请参阅)。这让我得出结论,您为创建的消息设置了选项。如果可以避免的话,我不建议使用UNA6后缀。人类阅读信息可能很好,但它不属于那里,机器阅读也没有用

如果接收程序没有允许可选的CR/LF出现的选项,并且您无法避免这些消息的混合,我认为除了插入一个小程序以摆脱CR/LF之外,您没有其他方法

当然,最重要的原则是,让发送程序和接收程序使用相同的语法进行对话,否则它将无法工作。十进制分隔符的问题也是如此。截止到,逗号或点是允许的,这是一个非常松散的定义。如果要保存,请发送
UNA
段,指定使用哪一段,然后仅使用该段

我不确定这对解决特定问题有多大帮助,因为这可能只是关于如何配置biztalk的问题,但我认为一些背景信息应该有用