我遇到过将EDIFACT复合元素标记为必需元素但有所有条件数据元素的情况。
我不明白这是怎么可能的,因为如果没有提供所有数据元素,将不会呈现复合。如果第一个元素1001
是强制性的,那么我可以理解,但因为它没有任何意义。
以下是一个例子:
010 C002 DOCUMENT/MESSAGE NAME M 1 1001 Document name code C an..3 1131 Code list identification code C an..17 3055 Code list responsible agency code C an..3 1000 Document name C an..35
我觉得这很混乱,不知道如何应对这种情况。我目前正在使用C#开发API来生成和处理EDIFACT消息,我不知道如何验证以及如何呈现上面的示例。
任何EDIFACT专家都可以为我澄清这个吗?
**更新**
我怀疑复合是强制性的,需要提供至少一个的数据元素 - 这只是基于常识和我已经知道的EDIFACT的有根据的猜测。 / p>
答案 0 :(得分:1)
确实意味着必须存在至少一个子元素。 在这种情况下: 要么使用文档代码1001 或描述1000。 元素1131和3055的功能有点类似于xml中的名称空间。
答案 1 :(得分:0)
我的猜测是强制性的,因为它是片段中的第一个元素,所以如果它是空的,它也需要在片段中。
澄清自己:
答案 2 :(得分:0)
C0002复合通常用于BGM段,它始终存在于EDIFACT消息中,因为它是有效载荷中的第一个段,它标识当前消息。 BGM.C0002:1001标识消息功能,例如BGM + 381:...'表示商业发票,BGM + 382:......'表示信用票据
因此始终需要C0002:1001元素。 1131元素标识从中提取先前值的代码列表。
在元素3055中,报告负责该代码清单的机构。
第二个非常重要的元素是1000.标准不要求它,但通常用于识别消息的号码,如发票号16/000213
得出结论:在C0002中有两个要素应被视为强制性的:1001和1000.
基本上,这也适用于DOC段,其中引用了业务文档。