問題タブ [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 メッセージを生成する小さなプロジェクトに取り組んでい0004 = ATEPA
ます0008 = ADDR01
。
空の条件要素を出力文字列から除外する必要がありますか? 0007
もしそうなら、空白 の場合、出力文字列はどのようになりますか?.
のように見えますかATEPA::ADDR01
、それともそうでしょうATEPA:ADDR01
か? またはADDR01
に属しているかどうかを判断する方法がないため、解析が不可能であるため、後者ではないことを願っています。0007
0008
biztalk - 送信バッチに請求書リスト EDI メッセージを追加
当社のパートナーの 1 つは、「要約」edi メッセージを EDI 請求書交換 (明らかに「請求書リスト」として知られている) に追加することを要求しています。このメッセージには、個々の請求書がRFF
セグメント内に持つ必要がある参照と、累積MOA
値が含まれています。
私の質問は、BizTalk Server (特に BizTalk 2009) は、リリース時に発信 EDI バッチに別の EDI メッセージを追加する便利な方法を提供しますか? MSDN で何も見つかりません。
私の現在の考えは、バッチを送信するポートの送信パイプラインに追加することですが、もっと便利な方法が本当に欲しいです。
xslt - 区切り記号を使用して BizTalk に空の EDIFACT セグメントを含める
取引パートナーの 1 つはIMD+F
、EDI 請求書が空であっても、アイテムごとにセグメントを要求しています。彼らはそれを次のように見せたいと思っています:
EDIFACT (D96A) Invoice に対応する XSLT には、次の情報があります。
C27304
セグメント内のスペースに注意してください。BizTalk はこれを次の EDI にアセンブルします。
セパレーターを使用して完全なセグメントを取得するにはどうすればよいですか?
apache-camel - edifact メッセージを smooks と交換する - 応答中のエラー
単純な非整列化 edifact メッセージ (請求書) に osgi バンドルを書き込み、請求書をデータベースに保持する必要があります。応答中に例外が発生しました
私の環境: - ServiceMix 5.0.0
次のラクダルートがあります
smooks-config.xml の場所:
ご覧のとおり、標準の d96a バインディングとマッピングを使用しています。
サンプルの edifact メッセージを送信するために netcat を呼び出すと、応答以外のすべての処理は正常に行われます。応答中に私は受け取ります:
xml - wso2 esb smooks un/edifact 96a EDI から XML
私は WSO2 ESB から始めることはほとんどなく、VFS (既に有効になっている) 経由で取得した .edi ファイル (96a) から XML に変換できるスキームを作成する必要があります ... このために、私は Smooks を使用しています。 UN / EDIFACT を使用して解析を実行します。実行すると、次のエラー WSO2 が表示されます。
Smooks の構成は次のとおりです。
これと同じ構成を Java アプリケーションで使用したことがあり、完全に機能しました。
また、CLASSPATH と build-classpath-directory コマンドを作成する以外に、ドロップインと lib ディレクトリ内の WSO2 に依存関係を手動で追加しようとしましたが、役に立ちませんでした。
c# - Regex.Split は空の結果を無視します
私はこの文字列を持っています:
2段階に分けたいと思います。まず、エスケープされたプラス記号 "?+" を除いて + で分割したいと思います。次に、エスケープされたコロン「?:」を除いて、: で結果を分割します。
次の正規表現を使用すると、文字列を正常に分割できます。
結果:
結果は正しくありません。配列への 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 にコピーし、セグメントの区切り文字を検索して置換し、内容を 1 行ずつ表示します。
私は常に EDIFACT ファイルを階層形式で表示したいと思っていましたが、これを行う方法を見つけることはできません。
以下は、生の EDIFACT メッセージの抜粋です。左側はデータの取得方法 (行番号は含まない) を示し、右側は顧客の仕様に基づいてデータを表示する方法を示しています。
データはツリー ベースであり、私に送信された仕様によって記述されていることがわかります。上記の EDIFACT メッセージの 1 つの仕様は次のとおりです。
重要な列は、Tag、St (M=必須、C=条件付き)、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ファイルで「先にスキャン」し、おそらくベースの結果。チェスの AI が数手先を見るのと少し似ています。