PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → AIDE CREATION XML
AIDE CREATION XML
Iniciado por Yann LE GOUADEC, 27,nov. 2018 17:47 - No hay respuesta
Miembro registrado
1 mensaje
Publicado el 27,noviembre 2018 - 17:47
Bonjour à tous,

je vous sollicite pour un aide sur la création d'un xml.

A partir d'une table alimentée par une requete (acces natif sql) j'ai besoin de créer un xml.
Je me suis inspiré du code présent dans un sujet par Philippe SB.

Je rencontre 2 soucis, le premier est un message d'erreur (voir ci -dessous), le second est que je n'arrive pas à mettre un noeud fils.

Je m'explique, à partir de la requête
Select TVA,Raison_Sociale,Code,Adresse,Complement,CP,VIlle,Pays,Mail, IBAN,Numero_Facture,Date_Facture,Date_Echeance,Code_Rgt,Devise,Montant_Facture from FACTURE, on obtient comme exemple de résultat :

TVACLIENT1,CLIENT1,CODECLIENT1,ADRESSE 1 CLIENT1,COMPLEMENT1 CLIENT1,VILLE1 CLIENT1,PAYS CLIENT1,mail CLIENT1, iban client1,FA036584,26/11/2018,25/01/2019,CHQ,EUR,643.76
TVACLIENT1,CLIENT1,CODECLIENT1,ADRESSE 1 CLIENT1,COMPLEMENT1 CLIENT1,VILLE1 CLIENT1,PAYS CLIENT1,mail CLIENT1, iban client1,FA036586,26/11/2018,25/01/2019,LSA,EUR,500.00
TVACLIENT2,CLIENT2,CODECLIENT2,ADRESSE 1 CLIENT2,COMPLEMENT1 CLIENT2,VILLE1 CLIENT2,PAYS CLIENT2,mail CLIENT2, iban client2,FA036582,26/11/2018,25/01/2019,VIR,EUR,3142.18

Je dois obtenir le fichier xml :


<?xml version="1.0" encoding="UTF-8"?>
<FACTURES>
<VERS>2</VERS>
<TVAEUR>IT12345678901</TVAEUR>
<NBRFAC>3</NBRFAC>
<TOTMTT>4285.94</TOTMTT>
<IMPORT>
<IDIMP>TVACLIENT1</IDIMP>
<NOMIMP>CLIENT1</NOMIMP>
<CODCLI>CODECLIENT1</CODCLI>
<ADRIMP>
<ADR1>ADRESSE 1 CLIENT1</ADR1>
<ADR2>COMPLEMENT1 CLIENT1</ADR2>
<CP>CP1 CLIENT1</CP>
<VILLE>VILLE 1 CLIENT1</VILLE>
<PAYS>PAYS 1 CLIENT1</PAYS>
</ADRIMP>
<EMAIL>mail CLIENT1</EMAIL>
<IBANIMP>iban CLIENT1</IBANIMP>
<RIBIMP></RIBIMP>
<MODREGIMP>SDD</MODREGIMP>
<SDDRUM></SDDRUM>
<SDDPAI></SDDPAI>
<DATERUM></DATERUM>
<BIC></BIC>
<FACTURE>
<NUMFAC>FA036584</NUMFAC>
<DATEFACT>181126</DATEFACT>
<DATEECH>190125</DATEECH>
<PAYSRGT>PAYS 1 CLIENT1</PAYSRGT>
<MODREG>CHQ</MODREG>
<DEVISE>EUR</DEVISE>
<MTFACT>643.76</MTFACT>
<IBANCRED>iban CLIENT1</IBANCRED>
</FACTURE>
<FACTURE>
<NUMFAC>FA036583</NUMFAC>
<DATEFACT>181126</DATEFACT>
<DATEECH>190125</DATEECH>
<PAYSRGT>PAYS 1 CLIENT1</PAYSRGT>
<MODREG>LSA</MODREG>
<DEVISE>EUR</DEVISE>
<MTFACT>500.00</MTFACT>
<IBANCRED>iban CLIENT1</IBANCRED>
</FACTURE>
</IMPORT>
<IMPORT>
<IDIMP>TVACLIENT2</IDIMP>
<NOMIMP>CLIENT2</NOMIMP>
<CODCLI>CODECLIENT2</CODCLI>
<ADRIMP>
<ADR1>ADRESSE 1 CLIENT2</ADR1>
<ADR2>COMPLEMENT1 CLIENT2</ADR2>
<CP>CP1 CLIENT2</CP>
<VILLE>VILLE 1 CLIENT2</VILLE>
<PAYS>PAYS 1 CLIENT2</PAYS>
</ADRIMP>
<RIBIMP>iban CLIENT2</RIBIMP>
<MODREGIMP>VIR</MODREGIMP>
<FACTURE>
<NUMFAC>FA036582</NUMFAC>
<DATEFACT>181126</DATEFACT>
<DATEECH>190125</DATEECH>
<PAYSRGT>PAYS 1 CLIENT2</PAYSRGT>
<MODREG>VIR</MODREG>
<DEVISE>EUR</DEVISE>
<MTFACT>3142.18</MTFACT>
<IBANCRED>iban CLIENT2</IBANCRED>
</FACTURE>
</IMPORT>
</FACTURES>


pour cela, j'utilise ce fichier modele.xml après l'avoir importé dans la Description :





Le code que j'ai commencé à faire :

nIndiceImport est entier

MonXML est un xmlDocument <Description="MODELE">
MonImport est un xmlNoeud,Description="MODELE.IMPORT"

MonXML.FACTURES.VERS = "2"
MonXML.FACTURES.TVAEUR = "FR"

//Récupération du nombre de facture de la remise

reqnbfactures est une Requête SQL =
[
SELECT COUNT(cbMarq) AS NBRFAC FROM FACTURES
]
SI PAS HExécuteRequête(reqnbfactures,hRequêteDéfaut) ALORS
Info("Erreur lors de l'éxécution de la requête "+ErreurInfo())
SINON
HLitPremier(reqnbfactures)
POUR TOUT reqnbfactures
MonXML.FACTURES.NBRFAC = reqnbfactures.NBRFAC

FIN
FIN

//Récupération du total de la remise
reqmtremise est une Requête SQL =
[
SELECT SUM(Montant_Facture) AS TOTMTT FROM FACTURES
]
SI PAS HExécuteRequête(reqmtremise,hRequêteDéfaut) ALORS
Info("Erreur lors de l'éxécution de la requête "+ErreurInfo())
SINON
HLitPremier(reqmtremise)
POUR TOUT reqmtremise
MonXML.FACTURES.TOTMTT = reqmtremise.TOTMTT

FIN
FIN


reqcliregroupement est une Requête SQL =
[
SELECT TVA, Code_Client, Raison_Sociale, Adresse, Complement, Code_Postal, Ville, Pays
FROM FACTURES
GROUP BY TVA, Code_Client, Raison_Sociale, Adresse, Complement, Code_Postal, Ville, Pays
]

SI PAS HExécuteRequête(reqcliregroupement,hRequêteDéfaut) ALORS
Info("Erreur lors de l'éxécution de la requête "+ErreurInfo())
SINON
HLitPremier(reqcliregroupement)

POUR TOUT reqcliregroupement
nIndiceImport++
MonImport.IDIMP = reqcliregroupement.TVA
MonImport.NOMIP=reqcliregroupement.Raison_Sociale
MonImport.CODCLI=reqcliregroupement.Code_Client

FIN

MonXML.FACTURES.IMPORT[nIndiceImport] = MonImport

FIN

XMLSauve(MonXML,fRepExe()+"\test.xml",XMLMiseEnForme)

Info("Création du fichier terminé")


Quand je le teste, j'ai cette erreur :

"Erreur à la ligne 69 du traitement Clic sur BTN_TEST_CREATION_XML.
Indice de sous-élément incorrect : vous accédez au sous-élément 2 alors qu'il y a 0 sous-éléments"

Je n'arrive pas à comprendre ce qui ne vas pas (je suis débutant sur windev).

Et pour insérez les noeuds <ADRIMP> du noeud <IMPORT> ainsi que <FACTURE>, je n'y arrive pas.

Merci de votre aide.

--
Yann LE GOUADEC
Mensaje modificado, 27,noviembre 2018 - 17:48