GeneXus - Rutas relativas con .net en Genexus

 
Vista:

Rutas relativas con .net en Genexus

Publicado por Gabriela Miranda (4 intervenciones) el 12/03/2008 16:28:59
Objetivo del Programa:

A través de un web Service mandar llamar un objeto que genere un archivo .pdf, una vez generado el archivo mandarlo como un fichero adjunto en un correo.

Problema:

Al querer adjuntar el archivo PDF al mail me marca un error en la función del Attachment en tiempo de ejecución, en este error me dice que no se puede encontrar el archivo creado. (Aunque físicamente exista en la ruta).

Comportamiento observado:

- El PDF se crea en un carpeta de la kb que está a la altura de la carpeta del modelo, se llama ARCHIVOSTMP/NomArchivo.PDF

- La ruta absoluta desde el sitio web para acceder al archivo es algo como: D:/inetpub/wwwroot/Compras/ArchivosTMP/NomArchivo.PDF

- La ruta física del archivo es algo como: K:/Kbs/Compras/ArchivosTmp/NomArchivo.PDF

- Me dijeron que no puedo adjuntar un archivo con la ruta física, por lo que hay que adjuntarlo con la ruta absoluta ( de esta manera si se adjunta el archivo ), pero lo que quiero es poderlo adjuntar mandando una ruta relativa para que sea un poco más "dinámico".

//--------------------Código -----------------------------//

//-- Generar el nombre del Archivo --//

&Numero = Random()
&Archivo = Substr( &Time , 1, 2 ) + Substr( &Time , 4, 2 ) + Substr( &Time , 7, 2 ) + Substr( Str( &Numero, 11, 9 ), 3, 2 ) + '.pdf'
&Path = ".ArchivosTMP" + "" + &Archivo
&Path2 = "." + &Path//-- La ruta donde se va a generar es "..&Archivo.pdf"

//-- LLamar al objeto que nos genera el PDF --//
Call( RADOrdZPdf , &EmpCod, &OrdFol, &Path2) //-- Generar archivo pdf. --//

//-- CREAR EL MAIL PARA ENVIAR LA ORDEN --//
//-- Configurar la variable MTPSESSION --//
&MensSMTP.Timeout = 600 //-- Tiempo de espera máximo, en segundos --//
&MensSMTP.Host = 'mail.mtk.com.mx'
&MensSMTP.Authentication = 0

&Envio.HTMLText = 'Cadena que genera un mensaje en el cuerpo del mail'
&MensSMTP.UserName = 'compras'
&MensSMTP.Password = 'compras'
&MensSMTP.ErrDisplay = 1 // No mostrar en la pantalla del servidor mensajes de error.
&MensSMTP.Sender.Name = Trim('Compras Manufacturas Zapaliname')
&MensSMTP.Sender.Address = Trim('[email protected]')

&MensSMTP.Login()
msg(str(&MensSMTP.ErrCode) + &MensSMTP.ErrDescription)

&DirCC.Address = &mail
&DirCC.Name = &mail
&Envio.CC.Clear()
&Envio.CC.New(&DirCC.Name ,&DirCC.Address)

&Envio.Attachments.Clear()
//&Path = 'D:/inetpub/wwwroot/Compras/ArchivosTMP/' //-- Con esta #$%$& ruta si lo guarda porque usa una ruta absoluta -_- cuando se ejecuta en el Servidor //

&vFileExist = FileExist(&Path)
If &vFileExist = 1 //-- El archivo si existe en la ruta relativa --//
&Envio.Attachments.Add(&MensSMTP.AttachDir(&Path)) //-- La ruta donde debe
//-- buscar el archivo es
//-- "..ArchivosTmp&Archivo.pdf"
Endif

&Envio.Subject = 'Orden de Compra :' + Str( &OrdFol ) + ', Proveedor: ' + &Proveedor

&MensSMTP.Send(&envio)
msg(&MensSMTP.ErrDescription)
&MensSMTP.Logout()

//--------------------Código -----------------------------//

Y bueee si alguien me puede dar alguna idea lo agradecería n_n.

Saludos!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder