Importar archivo .txt de lotes

Este debate contiene 6 respuestas, tiene 2 mensajes y lo actualizó  pedperpat hace 1 año, 6 meses.

Viendo 7 publicaciones - del 1 al 7 (de un total de 7)
  • Autor
    Publicaciones
  • #3112

    pedperpat
    Participante

    Buenos días, tengo que importar un archivo .txt que contiene números de lotes de envasado, cada número de lote es una línea del archivo de texto.

    Un ejemplo del archivo sería:

    000001
    000002
    000003
    000004

    Lo que necesito es importar el archivo y por lo que veo la mejor opción es la codeunit “File Management” para poder abrir la ventana y elegir el archivo que yo quiera subir.

    A partir de ahí estoy muy perdido, he buscado información y según parece tengo que subirlo al servidor para trabajar con el archivo una vez esté en el servidor. El proceso es muy simple, sólo se trata de ir leyendo línea a línea para coger los lotes pero estoy atascado en el paso de subir el archivo al servidor.

    Además he visto funciones como “UploadFileSilentToServerPath” y para ello necesito saber la ruta del archivo que estoy importando y además fijar la ruta TEMP en el servidor.

    ¿Alguna ayuda? Estoy ahora mismo algo perdido con lo que tengo que hacer.

    #3113

    Laura Nicolàs
    Jefe de claves

    Hola pedperpat,

    La ruta del archivo lo vas a necesitar siempre, o no vas a poder cargar el fichero…

    – Si tiene un nombre y una ruta fija, puedes hacer:

    ClientFileName := 'C:\MiRuta\MiFichero.txt';
    ServerFileName := FileMgt.UploadFileSilent(ClientFileName);

    Después tienes que trabajar siempre con el ServerFileName.

    – Si no sabes dónde esta el fichero, se lo tendrás que pedir al usuario en la RequestPage, en el trigger OnAssitEdit del campo “ClientFileName”:

    ClientFileName := FileMgt.OpenFileDialog(<Parametros>);
    ServerFileName := FileMgt.UploadFileSilent(ClientFileName);

    Salut!
    Laura Nicolàs

    Curso presencial. Conviértete en un Experto en Business Central. Para futuros consultores y futuros programadores. Empezamos de cero.

    Curso organizado como un máster.
    Inicio del curso: 26 de Abril
    Más información

    #3114

    pedperpat
    Participante

    Muchas gracias por tu respuesta y gracias por traer al español tantos conocimientos de NAV que desgraciadamente escasean por internet.

    Lo estoy probando pero me salta ahora un mensaje de error en el que aparece lo siguiente:

    No se ha cargado el archivo C:\Users\paperez\Desktop\lotes.txt

    ¿Quiere decir que la codeunit no gestiona los CLOSE del archivo que ha abierto?¿O igual es que no encuentra la ruta en el servidor?

    El código que he puesto es el siguiente:

    textFicheroLocal := cuFileManagement.OpenFileDialog('Importar fichero lotes', '*.txt','');
    textFicheroEnServidor := cuFileManagement.UploadFileSilentToServerPath(textFicheroLocal, cuFileManagement.Magicpath);

    Según he entendido, con OpenFileDialog obtengo la ruta del archivo local y posteriormente con UploadFileServerSilent subo el archivo pasando la ruta local y especificando que quiero que en el servidor aparezca en el directorio temporal para que una vez procesado sea borrado el archivo.

    #3115

    Laura Nicolàs
    Jefe de claves

    Si al leer el fichero tienes que hacer “manipulaciones” tendrás que escribir código y por eso hacerlo con un Report o un XMLport es una buena idea.

    Si tienes que cargar datos tal cual están el fichero, también puedes usar la funcionalidad Rapid Start Services. Se usa para importar/exportar datos a nivel usuario y no necesitas escribir nada de código.

    Para saber cómo funciona esta funcionalidad, puedes seguir el Curso Rapid Start Service.

    Salut!
    Laura Nicolàs

    Curso presencial. Conviértete en un Experto en Business Central. Para futuros consultores y futuros programadores. Empezamos de cero.

    Curso organizado como un máster.
    Inicio del curso: 26 de Abril
    Más información

    #3116

    Laura Nicolàs
    Jefe de claves

    Prueba con la función UploadFileSilent, en lugar de UploadFileSilentToServerPath.
    Es la que utilizo yo siempre y me funciona. También lo deja en la carpeta temporal.

    Curso presencial. Conviértete en un Experto en Business Central. Para futuros consultores y futuros programadores. Empezamos de cero.

    Curso organizado como un máster.
    Inicio del curso: 26 de Abril
    Más información

    #3126

    Laura Nicolàs
    Jefe de claves

    Después de tener el fichero subido al servidor, necesitas tener una variable tipo File y hacerle el OPEN.

    Si sigues con dificultades, podrás poner después el .txt completo? Así te podré ayudar mejor.

    Salut!
    Laura Nicolàs

    Curso presencial. Conviértete en un Experto en Business Central. Para futuros consultores y futuros programadores. Empezamos de cero.

    Curso organizado como un máster.
    Inicio del curso: 26 de Abril
    Más información

    #3147

    pedperpat
    Participante

    Ya está conseguido, al final resultaba que no cogía bien la ruta. Aún así muchas gracias por toda la ayuda.

Viendo 7 publicaciones - del 1 al 7 (de un total de 7)

Debes estar registrado para responder a este debate.

Members Currently Active: 4
actio.pn, robertemg, Juan Elmudesi, actio.dz
Keymaster | Moderator | Participant | Spectator | Blocked
Additional Forum Statistics
Threads: 722, Posts: 2.395, Members: 809
Welcome to our newest member, Carlos Lopez
Most users ever online was 15 on 5 April, 2019 9:31 am