问题标签 [edifact]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1608 浏览

python - 在 Python 中解析 EDIFACT UN

我需要在 python 中解析 EDIFACT 消息。
要查找段,例如 UNB,我正在尝试使用正则表达式

和测试字符串

段分隔符是'(撇号)和? 是转义字符。在 RegexCoach 中,匹配字符串是UNB+64+654+54?'UNC+54+654+654'
这是正确的,因为 UNB 转义后的第一个撇号
但在 Python 3.5

return None :( 你知道错误在哪里吗?或者建议其他解决方案?

感谢
测试:

正则表达式可视化

调试演示

0 投票
1 回答
5649 浏览

edifact - 在编辑消息中释放字符

我是阅读 EDI FACT 消息的新手。刚刚陷入对释放字符的理解中(?)。

从谷歌得到这个定义

任何人都可以通过任何示例帮助我理解这一点吗?

谢谢

0 投票
2 回答
670 浏览

biztalk - BizTalk 2013 - AS2 自签名

在尝试通过 AS2 协议发送 EDIFACT 消息时,我在事件日志中收到以下有关签名的条目:

广告 1)

来源:BizTalk Server EDI
事件 ID:8132
常规:尝试对消息进行编码时遇到 BTS MIME 错误。错误:引发了“Microsoft.BizTalk.Component.MIMEException”类型的异常。,HResult:-1061152225

广告 2)

来源:BizTalk Server
事件 ID:5720
常规:执行发送管道失败:“Microsoft.BizTalk.EdiInt.DefaultPipelines.AS2Send,Microsoft.BizTalk.Edi.EdiIntPipelines,版本 = 3.0.1.0,文化 = 中性,PublicKeyToken = 31bf3856ad364e35” 来源:“AS2 编码器” 发送端口:“001HCC.SndPort.AS2-OW.TEST” URI:“ https://ourPartner.com/receiveas22017/BTSHTTPReceive.dll ” 原因:MIME 编码器未能签署消息,因为证书开启了私钥保护或私钥不存在。请禁用私钥保护以允许 BizTalk 使用证书进行签名。

广告 3)

来源:BizTalk Server
事件 ID:5754
常规:在发送端口“001HCC.SndPort.AS2-OW.TEST”上使用 URI“https://ourPartner.com/receiveas22017/BTSHTTPReceive.dll”发送到适配器“HTTP”的消息是暂停。错误详细信息:执行发送管道失败:“Microsoft.BizTalk.EdiInt.DefaultPipelines.AS2Send,Microsoft.BizTalk.Edi.EdiIntPipelines,版本=3.0.1.0,文化=中性,PublicKeyToken=31bf3856ad364e35”来源:“AS2 编码器" 发送端口:"001HCC.SndPort.AS2-OW.TEST" URI:"https://ourPartner.com/receiveas22017/BTSHTTPReceive.dll" 原因:MIME 编码器未能签署消息,因为证书已开启私钥保护on 或私钥不存在。
消息 ID:{A53EB31E-34B4-4489-8809-C3CF0AA4E1FD} 实例 ID:{C09270AF-5A27-4449-A89B-CF6F149D7714}

广告 4)

来源:XLANG/s
事件 ID:10001
常规:xlang/s 引擎事件日志条目:创建 qbq.quibis.Generic.Processes.AcknowledgementGenerator 服务时失败。

instanceId, Guid& serviceId, IBTMessage currentMsg) 在 Microsoft.BizTalk.XLANGs.BTXEngine.BTXSession.ReceiveMessages(IBTMessage[] messages, Int32 firstIdx, Int32 count) 在 Microsoft.BizTalk.XLANGs.BTXEngine.AppDomains.AppDomainRoot.Microsoft.XLANGs.BizTalk .ProcessInterface.IAppDomainStub.ReceiveMessages(Object objMsg) 在 Microsoft.XLANGs.BizTalk.CrossProcess.AppDomainStubProxy.Microsoft.XLANGs.BizTalk.ProcessInterface.IAppDomainStub.ReceiveMessages(Object msgs) 其他错误信息:无法加载文件或程序集 'qbq.quibis .Generic.Processes,Version=1.0.0.0,Culture=neutral,PublicKeyToken=d7f6a42d27d4b3ed' 或其依赖项之一。该系统找不到指定的文件。Microsoft.BizTalk.XLANGs.BTXEngine.AppDomains.AppDomainRoot.Microsoft.XLANGs.BizTalk.ProcessInterface.IAppDomainStub.ReceiveMessages(IBTMessage[] 消息,Int32 firstIdx,Int32 计数) 在 Microsoft.XLANGs.BizTalk.CrossProcess。 AppDomainStubProxy.Microsoft.XLANGs.BizTalk.ProcessInterface.IAppDomainStub.ReceiveMessages(Object msgs) 其他错误信息:无法加载文件或程序集 'qbq.quibis.Generic.Processes,版本 = 1.0.0.0,文化 = 中性,PublicKeyToken = d7f6a42d27d4b3ed'或其依赖项之一。该系统找不到指定的文件。Microsoft.BizTalk.XLANGs.BTXEngine.AppDomains.AppDomainRoot.Microsoft.XLANGs.BizTalk.ProcessInterface.IAppDomainStub.ReceiveMessages(IBTMessage[] 消息,Int32 firstIdx,Int32 计数) 在 Microsoft.XLANGs.BizTalk.CrossProcess。 AppDomainStubProxy.Microsoft.XLANGs.BizTalk.ProcessInterface.IAppDomainStub.ReceiveMessages(Object msgs) 其他错误信息:无法加载文件或程序集 'qbq.quibis.Generic.Processes,版本 = 1.0.0.0,文化 = 中性,PublicKeyToken = d7f6a42d27d4b3ed'或其依赖项之一。该系统找不到指定的文件。CrossProcess.AppDomainStubProxy.Microsoft.XLANGs.BizTalk.ProcessInterface.IAppDomainStub.ReceiveMessages(Object msgs) 其他错误信息:无法加载文件或程序集 'qbq.quibis.Generic.Processes,版本 = 1.0.0.0,文化 = 中性,PublicKeyToken = d7f6a42d27d4b3ed' 或其依赖项之一。该系统找不到指定的文件。CrossProcess.AppDomainStubProxy.Microsoft.XLANGs.BizTalk.ProcessInterface.IAppDomainStub.ReceiveMessages(Object msgs) 其他错误信息:无法加载文件或程序集 'qbq.quibis.Generic.Processes,版本 = 1.0.0.0,文化 = 中性,PublicKeyToken = d7f6a42d27d4b3ed' 或其依赖项之一。该系统找不到指定的文件。

异常类型:FileNotFoundException
来源:mscorlib
目标站点: Void GetTypeByName(System.String, Boolean, Boolean, Boolean, System.Runtime.CompilerServices.StackCrawlMarkHandle, IntPtr, Boolean, System.Runtime.CompilerServices.ObjectHandleOnStack) 下面是一个堆栈跟踪,用于标识发生异常的位置在 System.RuntimeTypeHandle.GetTypeByName(字符串名称,布尔 throwOnError,布尔 ignoreCase,布尔反射仅,StackCrawlMarkHandle stackMark,IntPtr pPrivHostBinder,布尔 loadTypeFromPartialName,ObjectHandleOnStack 类型)在 System.RuntimeTypeHandle.GetTypeByName(字符串名称,布尔 throwOnError,布尔 ignoreCase,布尔反射, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName) at System.RuntimeType.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase,在 Microsoft.BizTalk.XLANGs.BTXEngine.BTXServiceStaticState.Resolve() 在 Microsoft.BizTalk.XLANGs.BTXEngine.BTXSession._createNewService(Guid& serviceId, Guid& instanceId, BTXServiceStaticState staticState) 在 Microsoft.BizTalk.XLANGs.BTXEngine.BTXSession._createOrRehydrateRealService(Guid& instanceId, IBTMessage currMsg)_createOrRehydrateRealService(Guid& instanceId, IBTMessage currMsg)_createOrRehydrateRealService(Guid& instanceId, IBTMessage currMsg)

消息从不同服务器上的一个测试环境发送到另一个测试环境。

第一个环境包括 Windows Server 2012 R2 64x、IIS7、BizTalk v. 3.11.266.2、最后一个适配器包 R2 CU4 (KB 3167705)。另一个包括 Windows Server 2008 R2 64x、IIS7、BizTalk v. 3.10.350.2、最后一个适配器包 CU4 (KB 3185629)。

应用程序池 IIS 设置在 IIS 上启用 32 位,加载用户配置文件:True。消息使用 Party 发送,其中包括在 Windows Server 2008 上使用 SHA256 生成的 SelfSigned Certificate V3。导入强证书保护已关闭并且正在使用以下设置:本地安全策略 > 本地策略 > 安全选项 > 系统加密:强制对存储在计算机上的用户密钥进行强密钥保护 > 不需要用户输入(... )

是否有可能找到这些错误消息的原因?您能否提出任何可以帮助我解决问题的指导方针?

0 投票
3 回答
1107 浏览

elasticsearch - 使用 Elasticsearch 搜索准确的短语

我目前开始使用 Elasticsearch。我已经索引了一些 EDIFACT 消息(一种史前数据格式;-)内容看起来像这样:

当我搜索短语 UNH+66304+CODECO:D:95B 时,它应该只返回一次命中,但似乎它正在返回包含这些单词中的任何一个的所有文件(并且 UNH 在每个文档中)。我的查询是这样的:

我尝试像这样添加“和”运算符:

但随后没有返回任何结果。我在这里阅读了建议:搜索 我需要使用双引号的确切短语。我已经尝试过 "query":"'UNH+66304+CODECO'" 和 "query":"\"UNH+66304+CODECO\"" 但这没有什么区别。

我也试过 match_phrase

时不返回结果

做。对于普通文本,它似乎可以工作,但不知何故,Elasticsearch 不喜欢搜索字符串中的 +: 等(不幸的是,这是 EDIFACT 的一部分)。

如果您想要完全匹配,如何在 ElasticSearch 中使用不同的分析器使 query_string 搜索精确短语?

更新: abhishek mishra 确认分析器可能是要走的路。我正在使用 Elasticsearch 5.4,有很多分析器可供选择:https ://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-analyzers.html

关键字分析器可能会映射到 abhishek 建议的“未分析”,因为它是一个 noop 分析器。但是我有点担心使用它,因为消息可能会很长。搜索对性能有何影响?如果我使用关键字分析器,我仍然可以搜索整条消息的部分内容吗?

我想知道模式分析器是否适合?EDIFACT 消息由以 3 个大写字符开头并以 ' 结尾的段组成(但您可以通过在其前面加上 ? 来转义 ')

所以上面的例子是两个部分。如果我将使用分隔这些段的模式,那会是一个很好的匹配吗?

唯一的问题是当前 MESSAGE 字段可以包含 EDIFACT 消息和 XML 消息。我猜使用相同的模式分析器是行不通的,所以我必须根据 MESSAGE 字段的内容创建两种不同的类型(其余的都是相同的)。

第二次更新: 我已按照建议研究分析仪。我认为关键字分析器可能不是一个好主意,因为文本可能很长。我发现模式分析器(没有任何自定义模式)工作得很好。它将所有内容拆分为:和+。搜索喜欢

或者

在工作,在忙。之前的问题是 eg 被拆分为 [rff,abt:atb150538080520172452]。

0 投票
1 回答
156 浏览

erp - 实施 B2B 通信的最佳方式是什么?

对于我的学士学位,我的任务是为我目前工作的公司开发的 ERP 系统实施 B2B 通信。因为它还应该能够与我考虑使用 EDI 消息 (EDIFACT) 或 cXML 的其他软件进行通信。完成这项任务的最佳方法是什么。

我的想法是将 EDIFACT 消息转换为由一个 xsd 定义的 xml,该 xsd 描述了每条 EDIFACT 消息。然后我会使用自写映射器将 xml 写入数据库或业务对象。对于编写 EDIFACT 消息,我只是反过来使用相同的方法。我认为首先使用 XML 转换会更容易进行映射,并有机会将 xml 用于其他目的,例如编写其他 edi 格式。另一个想法是只使用 cXML 并对其进行映射。

完成这项任务的最佳方法是什么?

0 投票
0 回答
33 浏览

edifact - 在谈论 EDIFACT 消息时,“全球”形容词是什么意思?

我的问题也可以概括为......“全球”在(例如)“全球发票”中的含义而不仅仅是“发票”。

我的猜测是 EDIFACT 标准添加了一些功能,从那时起,EDIFACT 消息的版本允许它们用于“全球”通信。在我看来,这一年是 2000 年(D00.A)。但我没有找到任何明确的参考。

是真的还是什么原因?

更新:

稍后我发现以下注释EN VDA 4938 Part 2 Global INVOIC V2.2 July 2016.pdf可以作为 zip 文件的一部分从 https://www.vda.de/en/services/Publications/global-invoic-implementation-guideline.html下载

该建议的第 2 部分包含 UN/EDIFACT 消息 INVOIC 的消息实施指南,是由AIAG、JAMA/JAPIA 和 Odette 联合开发的用于汽车行业的 Global INVOIC的子集。本建议的第一部分描述了有关过程要求的详细信息。

(我自己强调过。)无论如何,文档只在少数地方使用了全局这个词,并且没有澄清它。然而,它使用Global INVOIC(大写 G)表明它是一个正式术语。

任何人(可能来自汽车行业)都可以澄清与 UN/EDIFACT 的区别吗?

0 投票
1 回答
2059 浏览

json - 将 XML 或 Json 转换为 EDIFACT

所以我已经开始处理从 XML 或 JSON 到 Edifact (EDI) 的转换,但我不知道从哪里开始。我已经开始阅读一些关于 edifact 的内容,我想我在这里发布一个问题,也许可以得到一些关于什么是好的知道的指针,也可能是一些链接和开始学习如何转换为 edifact 的地方。

所以我开始尝试将 XML 转换为 Edifact,并很快意识到我需要一个 XSD。而且我认为如果 Edifact 是一个非常严格的标准,那么是否有任何现有的用于 Edifact 911 ORDERS 和 DESADV 的 XSD。我找不到任何东西。

此时任何信息都会有所帮助。谢谢!

0 投票
1 回答
83 浏览

edifact - “没有开始交换。” 序列化 EdiMessage 时出错

使用如下代码:

我收到一条错误消息“没有开始交换。”

writer.Write 调用下方的堆栈跟踪(Edifabric 的最后一个公共版本):

它涉及一个带有 BGM、一些 FTX 和一个 UNH 的 D96A INVOIC 对象。对象类是 。EdiWriter 在调用时引发了异常writer.Write

内容ediMessage似乎有效。根据 Edifabric文档,它应该自动添加默认的 EDIFACT 分隔符:

如果没有明确指定,作者将使用每个标准的默认分隔符:

我忘了设置什么?

0 投票
1 回答
857 浏览

edi - UN/Edifact Segment Terminator

I understand that edifact syntax for the segment terminator is character " ' ". I have a situation where I receive an edifact file with no segment terminators

example instead of IFT+3+XYZCOMPANY AVAILABILITY' my segments ends like IFT+3+XYZCOMPANY AVAILABILITY without the terminator.

I would highly appreciate anyone who could explain to me the theory behind this.

0 投票
1 回答
423 浏览

notepad++ - 用于格式化/转换结构 EDI/BAYPLIE 文件的重复关键字

当有相同的重复关键字时,是否可以或允许格式化 EDIFACT/BAYPLIE 文件,例如?*( RFF + BM: 1'EQD + CN + ) 在编辑器(Notepad++ 或 UltraEdit)中打开它并转换 /format 结构每个单独的新行?

3 个容器的编辑器提取示例如下:

RFF + BM: 1'EQD + CN +GESU6445322 45G0 + ++ 0 + + 5'NAD CA + EMC: 172: 147 20'LOC + + 0,781,584 + 5'MEA :: WT ++ KGM: 13400'LOC + 9 + + 11 + CNNBO'LOC DEHBG 'RFF + BM: 1'EQD + CN +ZCSU8245400 45G0 + ++ 0 + + CA + 5'NAD ZIM 172: 147 20'LOC + + 0,781,586 + 5'MEA :: WT ++ KGM: 12300'LOC + 9 + + 11 + CNNBO'LOC DEHBG 'RFF + BM: 1'EQD + CN +TCNU8547134 45G0 + ++ 0 + + CA + 5'NAD ZIM 172: 147 20'LOC + + 0,781,588 + 5'MEA :: WT ++ KGM: 07900'LOC + 9 + + 11 + CNNBO'LOC DEHBG 'RFF + BM: 1'EQD + CN + ...

转换后的最终结果可以以更简单的视觉方式显示并开始

RFF + BM: 1'EQD + CN +GESU6445322 45G0 + ++ 0 + + 5'NAD CA + EMC: 172: 147 20'LOC + + 0,781,584 + 5'MEA :: WT ++ KGM: 13400'LOC + 9 + + 11 + CNNBO'LOC DEHBG ' RFF + BM: 1'EQD + CN +ZCSU8245400 45G0 + ++ 0 + + CA + 5'NAD ZIM 172: 147 20'LOC + + 0,781,586 + 5'MEA :: WT ++ KGM: 12300'LOC + 9 + + 11 + CNNBO'LOC DEHBG ' RFF + BM: 1'EQD + CN +TCNU8547134 45G0 + ++ 0 + + CA + 5'NAD ZIM 172: 147 20'LOC + + 0,781,588 + 5'MEA :: WT ++ KGM: 07900'LOC + 9 + + 11 + CNNBO'LOC DEHBG 'RFF + BM: 1'EQD + CN +

如何在 Notepad++ 或 Ultraedit 编辑器中制作?