Re: [gx-l] Enviar Datos por XML

Luis Alberto,

Es porque en el último While estás usando  ReadType, con lo cual se saltea los cambios de DetGuia hasta consumir todo el documento.

Probalo de esta forma:

do while &ArchivoXML.eof <> 1
   Do While &ArchivoXML.ReadType(1, 'DATOS') <> 0
       do while &ArchivoXML.ReadType(1, 'guias') <> 0
         do while &ArchivoXML.ReadType(1, 'DetGuias') <> 0
                       
            Do While &ArchivoXML.ReadType(1) <> 0

                Do Case
                Case &ArchivoXML.Name = 'SuCCodigo'
                    &SuCCodigoDat = &ArchivoXML.Value.ToNumeric()
                Case &ArchivoXML.Name = 'GxSSerie'
                    &GxSSerie = &ArchivoXML.Value.Trim()
                Case &ArchivoXML.Name = 'GxSNumFis'
                    &GxSNumFis = &ArchivoXML.Value.ToNumeric()
                Case &ArchivoXML.Name = 'DetalleIndividual'

                    &ArchivoXML.ReadType(1, 'GSDNumBul')
                    &GSDNumBul = &ArchivoXML.Value.ToNumeric()
                    &ArchivoXML.ReadType(1, 'GSDPrecio')
                    &GSDPrecio = &ArchivoXML.Value.ToNumeric()
                    &ArchivoXML.ReadType(&ArchivoXML.EndTagType, 'DetalleIndividual')

                EndCase

            EndDo
         enddo
      enddo
   enddo
enddo


Saludos,
Pablo Moleri



From: "Luis Alberto Sangacha V." <luis_sangacha@outlook.com>
To: "Genexus Programacion" <gx-l@gxtech.com.uy>, "Foro GX Genexus" <vfp-l@gxtech.com.uy>
Sent: Miércoles, 26 de Diciembre 2012 11:22:41
Subject: [gx-l] Enviar Datos por XML


Que tal, deseándoles unas lindas navidades y de paso un lindo fin de año para todos, espero alguien me pueda dar una guía en un problema que tengo:

Necesito pasar los datos de las guías de una sucursal a otra y quiero usar un archivo XML, he podido Generar el archivo pero la lectura del mismo es el que me da problemas y no logro ver la solución, la estructura y el problema es el siguiente:

<?xml version="1.0" encoding="ISO-8859-1"?>
<DATOS>
        <Anio>2012</Anio>
<Mes>01</Mes>
<guias>
<DetGuias>
<GxSSecuen>2209</GxSSecuen>
<SuCCodigo>2</SuCCodigo>
<GxSSerie>002</GxSSerie>
<GxSNumFis>8069</GxSNumFis>
<GxSRemCiuT>QUITO</GxSRemCiuT>
<DetalleIndividual>
<GSDNumBul>7</GSDNumBul>
<GSDPrecio>0.8</GSDPrecio>
<GSDParcial>5.6</GSDParcial>
<GSDConten>CAJAS</GSDConten>
                        </DetalleIndividual>
<DetalleIndividual>
<GSDNumBul>1</GSDNumBul>
<GSDPrecio>1.2</GSDPrecio>
<GSDParcial>5.00</GSDParcial>
<GSDConten>VIDRIOS</GSDConten>
                        </DetalleIndividual>
                </DetGuias>
<DetGuias>
<GxSSecuen>2209</GxSSecuen>
<SuCCodigo>2</SuCCodigo>
<GxSSerie>002</GxSSerie>
<GxSNumFis>666</GxSNumFis>
<GxSRemCiuT>QUITO</GxSRemCiuT>
<DetalleIndividual> <GSDNumBul>7</GSDNumBul>
<GSDPrecio>0.7</GSDPrecio>
<GSDParcial>5.5</GSDParcial>
<GSDConten>MALETAS</GSDConten>
                        </DetalleIndividual>
                 </DetGuias>
        </guias>
</DATOS>

El problema esta al querer leer el DetalleIndividual, éste me lee todos sin tomar en cuenta la cabecera, mi proceso de lectura es el siguiente:

do while &ArchivoXML.eof <> 1
    Do While &ArchivoXML.ReadType(1, 'DATOS') <> 0
        do while &ArchivoXML.ReadType(1, 'guias') <> 0
            do while &ArchivoXML.ReadType(1, 'DetGuias') <> 0
             &SuCCodigoDat = &ArchivoXML.Value.ToNumeric()
                        &GxSSerie = &ArchivoXML.Value.Trim()
                &GxSNumFis = &ArchivoXML.Value.ToNumeric()
                         Do while &ArchivoXML.ReadType(1, 'DetalleIndividual') <> 0
                     &GSDNumBul = &ArchivoXML.Value.ToNumeric()
                     &GSDPrecio = &ArchivoXML.Value.ToNumeric()
                         EndDo
              enddo
         enddo
   enddo
enddo

Alguien que por favor me diga que hago mal o que si tienen un ejemplo de envío de transacciones cabecera detalles.
Les agradezco de forma anticipada

  

Ing. Sist. Luis Alberto Sangacha

GeneraXion Soluciones Informáticas

 

 

0 Response to "Re: [gx-l] Enviar Datos por XML"

Publicar un comentario