• Este debate tiene 7 respuestas, 3 mensajes y ha sido actualizado por última vez el hace 1 año, 5 meses por Avatarsanti.galan.
Viendo 8 entradas - de la 1 a la 8 (de un total de 8)

Respuestas del foro


  • Avatar
    santi.galan
    Participante
    santi.galan

    Hola a todos,

    Tengo un «Poltergeist» a ver si me podeis echar un cable. Estoy llamando un XML de exportación de la tabla Item desde una codeunit mediante el siguiente código:

    RecItem.GET(‘ART1800001’);
    CustXmlfile.CREATE(‘C:\Xml\styles\PLM\’+ ‘Archivo’ + ‘.xml’);
    CustXmlfile.CREATEOUTSTREAM(xmlstream);
    XMLPORT.EXPORT(50019,xmlstream,RecItem)  ;
    CustXmlfile.CLOSE;
    MESSAGE(‘XML Creado’);

    El problema es que no filtra los registros que se van a exportar y me exporta todo el fichero… 🙁

    Alguna idea?

     

    Un saludo y gracias

     

    #7875
    Avatar
    Laura Nicolàs
    Superadministrador
    Laura Nicolàs

    Hola Santi,

    Sin probarlo, creo que el problema es que estás haciendo un GET en lugar de un SETRANGE.

    Con el GET te posicionas en un registro, pero no filtras. Cambia el GET por SETRANGE(«No.»,‘ART1800001’);

    Salut!
    Laura Nicolàs

    #7877
    Avatar
    santi.galan
    Participante
    santi.galan

    Muchas Gracias Laura,

    Tienes razón ese es el motivo. Aprovecho para hacerte otra pregunta:

    Quiero importar a NAV cualquier fichero de una tipología (XML) que exista en un directorio en concreto, el tema es que importar un fichero en concreto ya lo tengo hecho, el problema se me plantea es cuando quiero ir procesando TODOS los ficheros que hayan en un directorio.

    Se te ocurre algo?

     

    Un saludo,

    Santi

    #7880
    Avatar
    Cristina Nicolàs
    Superadministrador
    Cristina Nicolàs

    Hola Santi,

    Hace mucho tiempo que no programo algo así y no sé si aún funciona o no.

    En versiones antiguas recuerdo que existía una tabla de estas de sistema con numeración por los 20000000, que tenía información de los directorios y los archivos. Ponías un filtro sobre el Path en la carpeta que te interesara y después podías recorrer los registros de esta tabla para ir encontrando todos los ficheros que contenía.
    No recuerdo como se llamaba la tabla y ahora haciendo una búsqueda rápida en BC no veo cual puede ser. No sé si es que ya no existe o si es que al no recordar el nombre de la tabla no soy capaz de encontrarla.

    Otra opción sería crearse una variable de tipo DotNet para recorrer archivos en un directorio.
    No sé exactamente como se tendría que hacer, pero como ejemplo buscaría en la codeunit 419 File Management donde por ejemplo hay unas funciones llamadas GetClientDirectoryFilesList y GetServerDirectoryFilesList que tienen toda la pinta que te van a poder servir para tu propósito.

    Un saludo,
    Cristina Nicolàs

    #7881
    Avatar
    santi.galan
    Participante
    santi.galan

    Muchísimas gracias Cristina!!

    Voy a probarlo.

    Un saludo,

    Santi

    #7883
    Avatar
    santi.galan
    Participante
    santi.galan

    Hola Cristina

    Otra cosa que me está pasando es que cuando quiero importar un XML que tiene varios registros de una misma tabla me sale el error:

    Hay varios elementos Raíz…

    Este error sale cuando va a leer el segundo registro del XML.

     

    Gracias

     

    #7894
    Avatar
    santi.galan
    Participante
    santi.galan

    Solucionado!!!! Me había olvidado poner un Nivel por encima de la tabla

     

     

    #7897
    Avatar
    santi.galan
    Participante
    santi.galan

    Hola Cristina,

     

    Respecto al tema de leer todos los ficheros de un directorio efectivamente existe una tabla (2000000022) que se puede usar para recorrerla aplicando filtros. (Uso NAV 2018).

     

    Muchísimas gracias

     

    Santi

    #8088
Viendo 8 entradas - de la 1 a la 8 (de un total de 8)

Debe iniciar sesión para responder a este tema.