sábado, 27 de agosto de 2011

Mover Archivos desde MS Dynamics AX

Hola, mediante este codigo se podra mover archivos desde Dynamics AX, teniendo esto, tambien se puede copiar y eliminar archivos, es cuestion de hacer unos pequeñisimos cambios en la parte del FOR (se los dejo a su investigación :D).

static void MoverArchivos(Args _args)

{
     System.IO.DirectoryInfo di;
     System.Type arrayType;
     System.Array array;
     System.IO.FileInfo fi;
     FilePath filePath, moveFilePath, shortFile;
     FileNameOpen fileNameOpen;
     FileIOPermission dirPermission, filePermission;
     InteropPermission interopPermission;
     Set permissionSet;
     int i;
     int l;
     ;

     interopPermission = new InteropPermission(InteropKind::ClrInterop);
     filePath = '\\\\MSAXPRB\\Prueba\\a\\';
     dirPermission = new FileIOPermission(filePath, 'R');
     permissionSet = new Set(Types::Class);
     permissionSet.add(interopPermission);
     permissionSet.add(dirPermission);
     CodeAccessPermission::assertMultiple(permissionSet);
     di = new System.IO.DirectoryInfo(filePath);
     arrayType = System.Type::GetType("System.IO.FileInfo");
     array = System.Array::CreateInstance(arrayType, 1);
     array = di.GetFiles();
     l = array.get_Length();
     CodeAccessPermission::revertAssert();
     if (l > 0)
    {
          for (i = 0; i < l; i++)
         {
               interopPermission = new InteropPermission(InteropKind::ClrInterop);
               interopPermission.assert();
               fi = array.GetValue(i);
               fileNameOpen = fi.get_FullName();
               CodeAccessPermission::revertAssert();
               filepermission = new FileIOPermission(fileNameOpen, 'W');
               interopPermission = new InteropPermission(InteropKind::ClrInterop);
               permissionSet = new Set(Types::Class);
               permissionSet.add(interopPermission);
               permissionSet.add(dirPermission);
               CodeAccessPermission::assertMultiple(permissionSet);
               shortFile = fi.get_Name();
               moveFilePath = "\\\\MSAXPRB\\Prueba\\b\\" + shortFile;
               fi.MoveTo(moveFilePath);
               CodeAccessPermission::revertAssert();
         }
     }
     box::info("Archivos movidos");
}


Un ejemplo del uso de este codigo podria ser al momento de hacer procesos en batch para importar data de archivos.


Saludos.

1 comentario: