PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Problème Webservice incompréhensible
Problème Webservice incompréhensible
Iniciado por dl, 25,sep. 2019 22:25 - No hay respuesta
Publicado el 25,septiembre 2019 - 22:25
Bonjour, je m'arrache les cheveux sur un problème depuis plusieurs heures et j'aurais besoin d'un avis extérieur pour avancer.
J'ai créé un webservice. J'utilise ces structures :
STBac est une structure
NUMBAC est chaîne
CODSOC est chaîne
DATCRE est une Date
UTICRE est une chaîne
HEUCRE est chaîne
DEBVAL est Date
FINVAL est une Date
NUMVER est chaîne
MONBAC est un monétaire
SOLBAC est un monétaire
GESREN est un booléen
UTIUNI est un booléen
TYPBAC est un entier
FIN
STTabBAC est structure
tabBAC est un tableau de STBac
bTraitementOK est un booléen
sMessErreur est une chaîne
FIN

J'ai une procédure qui doit me renvoyer un tableau de STBac dans un STTabBAC (les autres composants de la structure sont là à des fins de traitement d'erreur de connexion notamment):
Procedure RecupereTableauBAC(DossierLocal,SOC,vcodsoc)

stRepDet est un STBac
stRepTab est un STTabBAC

bOk est un booléen=Faux
sErr est chaîne=""
(bOk,sErr)=ConnecteBase(DossierLocal,SOC,"ENTBAC")

SI bOk ALORS
POUR TOUT ENTBAC AVEC "CODSOC='"+vcodsoc+"'"
stRepDet.CODSOC=ENTBAC.CODSOC
stRepDet.DATCRE=ENTBAC.DATCRE
stRepDet.DEBVAL=ENTBAC.DEBVAL
stRepDet.FINVAL=ENTBAC.FINVAL
stRepDet.HEUCRE=ENTBAC.HEUCRE
stRepDet.MONBAC=ENTBAC.MONBAC
stRepDet.NUMBAC=ENTBAC.NUMBAC
stRepDet.NUMVER=ENTBAC.NUMVER
stRepDet.UTICRE=ENTBAC.UTICRE
stRepDet.GESREN=ENTBAC.GESREN
stRepDet.SOLBAC=ENTBAC.SOLBAC
stRepDet.UTIUNI=ENTBAC.UTIUNI
stRepDet.TYPBAC=ENTBAC.TYPBAC
TableauAjoute(stRepTab.tabBAC,stRepDet)
FIN
FIN

stRepTab.bTraitementOK=bOk
stRepTab.sMessErreur=sErr

RENVOYER stRepTab

Quand j'appelle ma fonction depuis une application cliente j'obtiens cette erreur:
Echec de la récupération de la valeur de retour 'WS_iGestion_RecupereTableauBAC_MessageOut' de l'opération.

Quand j'appelle ma fonction depuis une page web j'obtiens un fichier réponse vide:
<SOAP-ENV:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body/>
</SOAP-ENV:Envelope>

Pourtant mon tableau est bien alimenté, si je mets
RENVOYER stRepTab.tabBAC..Occurence

j'ai bien le nombre de résultats attendus.

Le plus bizarre c'est qu'une autre procédure, construite de la même façon, me renvoie bien un résultat:
Procedure RecupereBAC(DossierLocal,SOC,vnumbac)

stRepDet est un STBac
stRepTab est un STTabBAC


bOk est un booléen=Faux
sErr est chaîne=""
nErr est un entier
(bOk,sErr)=ConnecteBase(DossierLocal,SOC,"ENTBAC")

SI bOk ALORS
bOk=HLitRecherchePremier(ENTBAC,NUMBAC,Complete(vnumbac,20))
SI HTrouve(ENTBAC) ALORS
stRepDet.CODSOC=ENTBAC.CODSOC
stRepDet.DATCRE=ENTBAC.DATCRE
stRepDet.DEBVAL=ENTBAC.DEBVAL
stRepDet.FINVAL=ENTBAC.FINVAL
stRepDet.HEUCRE=ENTBAC.HEUCRE
stRepDet.MONBAC=ENTBAC.MONBAC
stRepDet.NUMBAC=ENTBAC.NUMBAC
stRepDet.NUMVER=ENTBAC.NUMVER
stRepDet.UTICRE=ENTBAC.UTICRE
stRepDet.GESREN=ENTBAC.GESREN
stRepDet.SOLBAC=ENTBAC.SOLBAC
stRepDet.UTIUNI=ENTBAC.UTIUNI
stRepDet.TYPBAC=ENTBAC.TYPBAC

nBrep est entier=TableauAjoute(stRepTab.tabBAC,stRepDet)
SINON
nErr=HErreur()
SI nErr=0 ALORS
bOk=Vrai
sErr="Pas d'enregistrement"
SINON
bOk=Faux
sErr=HErreurInfo()
FIN
FIN
FIN

stRepTab.bTraitementOK=bOk
stRepTab.sMessErreur=sErr

RENVOYER stRepTab

<SOAP-ENV:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<ns1:RecupereBACResult xmlns:ns1="urn:WS_iGestion">
<tabBAC>
<NUMBAC>DMO1900000001 </NUMBAC>
<CODSOC>DMO</CODSOC>
<DATCRE>2019-08-29</DATCRE>
<UTICRE>ADMIN</UTICRE>
<HEUCRE>14:58</HEUCRE>
<DEBVAL>2019-08-29</DEBVAL>
<FINVAL>2019-12-31</FINVAL>
<NUMVER> </NUMVER>
<MONBAC>100</MONBAC>
<SOLBAC>83.7</SOLBAC>
<GESREN>false</GESREN>
<UTIUNI>false</UTIUNI>
<TYPBAC>0</TYPBAC>
</tabBAC>
<bTraitementOK>true</bTraitementOK>
<sMessErreur/>
</ns1:RecupereBACResult>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>


Je suis aussi presque sûr (disons à 85%) que la procédure qui pose problème a déjà fonctionné avant que je rajoute les deux variables de gestion des erreurs. J'ai essayé de faire sans, ça fait la même chose... De toute façon ces variables ne posent aucun soucis dans d'autres procédures.

Quelqu'un aurait une idée de ce qui se passe voire un début de solution à me proposer? Je n'ai bientôt plus de cheveux à m'arracher...