Buscar en este blog

martes, 12 de septiembre de 2017

Validar si existe un archivo y la extensión del mismo por código - Dynamics Ax 2012


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.