En utilisant du code comme:"Aucun échange n'a été démarré." erreur sur la sérialisation EdiMessage
...
EdiMessage ediMessage = (EdiMessage)instance;
using (FileStream ediStream = File.OpenWrite(file))
{
using (EdifactWriter writer = new EdifactWriter(ediStream))
{
writer.Write(ediMessage);
}
}
Je reçois un message d'erreur 'Aucun échange a commencé.'
trace de la pile en dessous de l'appel writer.Write (dernière version publique de Edifabric):
at EdiFabric.Framework.Writers.EdiWriter`2.Write(EdiMessage message)
Il porte sur un objet INVOIC D96A avec BGM, certains FTX et UNH. La classe d'objet est. Et l'exception est soulevée par EdiWriter sur l'appel writer.Write
. Les données ediMessage
semblent avoir été validées. Selon Edifabric documentation il faut ajouter les séparateurs de EDIFACT par défaut automatiquement:
Si non spécifié explicitement l'auteur utilisera les séparateurs par défaut par la norme:
Qu'est-ce que j'oublie de configuration?
Le message 'Aucun échange a commencé.' signifie qu'aucun segment d'en-tête d'échange n'a été créé. Les documents EDI suivent une structure telle que: En-tête d'échange-> En-tête de groupe (facultatif pour EDIFACT) -> Transaction-> Remorque de groupe-> Remorque d'échange. Dans votre cas, vous devez d'abord écrire un UNB, puis écrire toutes les transactions \ messages. –
@DonZoeggerle merci pour le fond; le mot "Interchange" dans l'erreur était dû au manque de termes EDIFACT pas clair pour moi alors. Avec quelques cellules grises supplémentaires, je sais maintenant qu'il se réfère à un échange de messages EDI. EDIFACT fonctionne très bien; design simple et élégant! –