问题标签 [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.
parsing - 如何使用条件数据元素格式化 EDIFACT 组合
我目前正在做一个小项目来生成 EDIFACT 消息,我想知道下面的示例复合应该如何生成为字符串 if0004 = ATEPA
和0008 = ADDR01
?
是否应该从输出字符串中排除空的条件元素?0007
如果是这样,如果为空 ,输出字符串会是什么样子?
它看起来像ATEPA::ADDR01
,还是会这样ATEPA:ADDR01
?我希望它不是后者,因为解析它是不可能的,因为没有办法确定是否ADDR01
属于0007
or 0008
。
edifact - EDIFACT 用条件数据元素标记为强制的复合元素
我遇到了一种情况,即 EDIFACT 复合元素被标记为强制,但包含所有条件数据元素。
我不明白这是怎么可能的,因为如果未提供所有数据元素,则不会呈现复合材料。如果第一个元素1001
是强制性的,那么我可以理解,但它没有任何意义。
这是一个例子:
我觉得这很令人困惑,不知道如何处理这种情况。我目前正在用 C# 开发一个 API 来生成和处理 EDIFACT 消息,但我不确定如何验证和呈现上述示例。
任何 EDIFACT 专家可以为我澄清一下吗?
** 更新 **
我怀疑复合是强制性的,至少需要提供一个数据元素——这只是基于常识和我已经知道的 EDIFACT 的有根据的猜测。
biztalk - Append invoice list EDI message on outgoing batch
One of our partners requires that a "summary" edi message is appended to any EDI invoice interchange (apparently known as "invoice list"). This message contains a reference that every individual invoice should have in an RFF
segment, as well as the cummulated MOA
values.
My question is: does BizTalk Server (in particular BizTalk 2009) provide a convenient way to append another EDI message to the outgoing EDI batch upon release? I cannot find anything on MSDN.
My current idea is to append it in the send pipeline of the port that will transmit the batch, but I really would like a more convenient way.
xslt - 在 BizTalk 中使用分隔符包括空 EDIFACT 段
我们的一个贸易伙伴要求IMD+F
其 EDI 发票中的每个项目都有一个分段,即使它是空的。他们希望它看起来像这样:
在映射到 EDIFACT (D96A) 发票的 XSLT 中,我有以下内容:
注意C27304
段中的空间。BizTalk 将其组装到以下 EDI 中:
如何获得带有分隔符的完整段?
apache-camel - 与 smooks 交换 edifact 消息 - 响应期间出错
我需要将 osgi 包编写为简单的解组编组消息(发票),并将发票保存在数据库中。我在响应期间收到异常
我的环境:-ServiceMix 5.0.0
我有以下骆驼路线
其中 smooks-config.xml 是:
如您所见,我使用的是标准 d96a 绑定和映射。
当我调用 netcat 发送示例 edifact 消息时,除了响应之外,所有处理都会很好。在回复期间,我收到:
xml - wso2 esb 将 un/edifact 96a EDI 转换为 XML
我几乎没有从 WSO2 ESB 开始,需要创建一个方案,允许我从通过 VFS(已启用)获得的 .edi 文件(96a)将其转换为 XML ......为此,我正在使用 Smooks 和UN / EDIFACT 执行解析。执行时会出现以下错误 WSO2:
Smooks的配置是:
我在 Java 应用程序中使用过同样的配置,而且我工作得很好。
此外,除了创建 CLASSPATH 甚至 build-classpath-directory 命令之外,我还尝试在 WSO2 中的 dropins 和 lib 目录中手动添加依赖项,但没有成功。
c# - Regex.Split 忽略空结果
我有这个字符串:
我想把它分成两个步骤。首先,我想在 + 上拆分,除了转义的加号“?+”。其次,我想在 : 上拆分结果,但转义冒号“?:”除外。
使用以下正则表达式,我可以成功拆分我的字符串:
结果:
结果不正确。它应该是数组的 4 个输入。它删除了空结果。我需要将空结果留在数组中。结果应该是:
有谁知道它为什么会这样?有什么建议么?
c# - dotNet 中的开源 EDIFACT baplie 解析器?
如何在 c# 或 VB 中读取 Edifact Baplie 文件?
是否有任何开源来读取 dotnet 中的 Edifact baplie 文件?
c# - EDIFACT 到 DB 对象或 DB
我正在寻找一种工具,它既提供我们可以在代码中使用的 C# API,又提供将 EDIFACT 文件 (ISO 9735) 转换为 XML 或其他格式(如 CSV)的脚本。我们正在构建一个系统,该系统将帮助我们翻译从客户端获得的 EDIFACT 数据并保存在 DB 或 DB 对象中。
问题: 1. 您能否推荐我们可以使用的任何具有成本效益的工具,以帮助我们将 EDIFACT (ISO 9735) 数据转换为其他格式,例如 XML 或 CSV 或 DB 对象等。我需要 C# API 和 SCRIPT。
- 是否有任何开源 API 可用于执行此作业?下面提供了一个示例 EDIFACT 文件数据。
谢谢, 帕莎
FAD+114:526411642:4::TKFAD:1:1+20141220:070825037+1+20141220:070825037'VAI+S:KK+CH:75799099'MGA+S:SSSS+1+1+20141220'OFI+S:SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS+CH:804522+C+175+20150821++3044848+211444238+1+1+100+100+2+CH:804522+++2015:08:21+T1:333'FMB+S:SSSSSSSSSSSSSSSS+8++4+1++3+20141220+++TKN:4+++2+501'FMU+S:K+1'VAK+S:KKSSSS+TKN:4+PANERA C 175 AUG15+Option on equity+Call August 175'VAL+S:KKSS+TKN:1+OCC/O PANERA 08 2015 C 175+OCC/O PANERA 08 2015 C 175'VAL+S:KKSS+TKN:2+OCC/O PANERA 08 2015 C 175+OCC/O PANERA 08 2015 C 175'VAL+S:KKSS+TKN:3+OCC/O PANERA 08 2015 C 175+OCC/O PANERA 08 2015 C 175'VAL+S:KKSS+TKN:4+OCC/O PANERA 08 2015 C 175+OCC/O PANERA 08 2015 C 175'GEI+S:KK+GK:709030'GEK+I:KKI+TKN:4+OCC'NKN+S:KSSSS+CH:75799099+20141220++2'FMG+S:KSS+TKT+Z'FMG+S:KSS+TKPRK+1'FMG+S:KSS+CFI+OCASPS+3
algorithm - 使用什么算法来格式化 EDIFACT 文件?
我使用 EDIFACT 消息并开发了许多工具来帮助我从原始文件格式中解析和提取相关信息。
我一直在努力解决的问题是展示原始的 EDIFACT。我通常只是将消息复制到 Microsoft Word 中,对段分隔符进行查找和替换,然后逐行查看内容。
我一直想以层次结构格式显示 EDIFACT 文件,但我一生都无法找到一种方法来做到这一点。
下面是原始 EDIFACT 消息的一小部分摘录。左侧显示了我如何获取数据(不包括行号),右侧显示了我希望如何根据客户规范显示它。
您可以看到数据是基于树的,并且由发送给我的规范描述。上述 EDIFACT 消息的一种规范如下:
重要的列是 Tag、St(M=Mandatory,C=Conditional)、Max(可以重复的最大次数)、lvl(树的深度)。以 SG 开头的标签表示存在循环
我面临的问题是格式非常灵活,可以有条件段、条件循环、重复段。试图想出一种可以处理这一切的方法一直是我的问题。
从上面规范的顶部开始,您可以立即看到,当您来到 DTM 标签时,它最多可以重复 10 次。在示例 EDIFACT 消息中,它仅在第 5、6、7 行出现了 3 次。按照规范,FTX 可能会出现但不会出现在我的示例消息中,然后有一个 SG2 标记,这意味着下面的 NAD 标记可能重复 99次。
在 LIN 标签(SG12 组下,可以重复多达 9999 次,并且在许多情况下确实重复多次)内稍微向前移动,它来到了第一个 QTY 标签。根据规范,这个段可以有条件组(SG15)RFF和它下面的一个DTM。使用我的示例,您可以在第 17 行和第 18 行看到它有 QTY 段,但第 18 行也有这个条件组。
当您查看 SCC 细分市场时,类似的事情也开始发生。
我的想法是能够将该规范输入某种文件格式,然后根据该规范的规则运行原始 EDIFACT 消息,以便输出基于层次结构,以便一目了然地查看哪些数据涉及到什么段以及检查 EDIFACT 消息是否有效的方法。
我遇到的麻烦是进行该转换的实际算法或过程。
我尝试过幼稚的方法,例如逐行进行,但是当我尝试确定当前行是在一个组中,还是重复或其他内容时,它会变得混乱。我尝试了一种递归方法,通过将整个 EDIFACT 按最大组(SG12-LIN 组)拆分,然后递归处理每个拆分并构建输出。这是我迄今为止最好的方法,但由于我的逻辑不正确,它距离处理许多错误读数还很远。
我基本上需要能够选择消息的一部分,并确定它应该在层次结构中的哪个位置并显示它。
我不知道如何解决这个问题。我确信有一个很好的简单方法可以做到这一点,但我就是无法解决。
任何帮助将不胜感激。
轻微更新。
我已按照所述规范的层次结构将规范转换为 XML 文件。该 XML 文件现在包含与每个标签相关的所有组和各种属性。现在我也开始了解 EDIFACT 需要遵守的内容。
如果我在纸上(和头脑中)通过它,我可以通过一些前瞻性思维来构建我想要做的输出,所以我的新想法是在 EDIFACT 文件中“向前扫描”,并构建一个可能基于结果。有点像国际象棋人工智能如何向前看几步。