Cuando se requiere validar si un archivo aún existe en una ruta y/o validar el tipo de archivo de acuerdo a la extensión, se puede usar dos opciones. Con una de ellas se debe tener cuidado porque no funciona si se requiere para un proceso batch.
static void ValidateFile(Args _args)
{
Contracts contract;
boolean existe;
System.IO.FileInfo fileInfo;
container datosArchivo;
str extArchivo;
//se busca un registro de una tabla que en uno de sus campos contiene un path completo del tipo c:\\carpeta1\archivo.docx
contract = Contracts::find("CONTRATO 050717");
//Opción 1: del lado del server, si funciona en procesos batch
new InteropPermission(InteropKind::ClrInterop).assert();
fileInfo = new System.IO.FileInfo(contract.AttachmentPath);
extArchivo = fileInfo.get_Extension();
existe = fileInfo.get_Exists();
CodeAccessPermission::revertAssert();
if (existe)
{
info("si existe");
//Valida si es un word
if(strStartsWith(extArchivo, ".do"))
info("si es doc");
else
info("no es doc");
}
else
{
info("no existe");
}
//Opción 2 - del lado del cliente, no funciona bajo procesos batch
if (WinAPI::fileExists(itsContract.AttachmentPath))
{
info("si existe 2");
//Valida si es un word
new InteropPermission(InteropKind::ClrInterop).assert();
datosArchivo = Global::fileNameSplit(contract.AttachmentPath);
CodeAccessPermission::revertAssert();
if(strStartsWith(conPeek(datosArchivo, 3), ".do"))
info("si es doc 2");
else
info("no es doc 2");
}
else
{
info("no existe 2");
}
}
Post relacionados:
Registrar diario de producción por código, Dynamics Ax 2009, X++
Métodos display y métodos edit en un datasource o tablas temporales, Dynamics Ax 2012
Imprimir factura electrónica (México) a partir de una CustInvoiceJour por código - Dynamics Ax 2012
No olvides que te puedes unir a la página en Facebook Aprendiendo Dynamics Ax donde únicamente se tratan temas de desarrollo y se busca crear una comunidad de desarrollador@s de Ax en nuestro idioma.
No hay comentarios.:
Publicar un comentario