En un proyecto que hice recientemente se necesitaba recoger información de campo en unos formatos predefinidos para posteriormente vaciar esa información en un sistema hecho con Genexus, dicha información consiste en una lista de empleados y las horas hombre laboradas por cada uno de ellos en los diferentes módulos de un invernadero, esto forma parte de un sistema de costos de producción. Los formatos ya los estaban utilizando para un control interno aunque con algunas variantes, de modo que la idea era que los supervisores capturaran esa información en el nuevo sistema. Como todos estan muy acostumbrados a utilizar Excel para hacer todo tipo de cosas se me ocurrió que en lugar de capturar en un grid del sistema toda la información que tenían en las hojas de trabajo, capturaran esa información en un formato de Excel y luego importar en el sistema ese archivo de Excel para obtener de ahi la información que el sistema necesitaba. Utilicé para ello el tipo de dato ExcelDocument de Genexus, en el sistema se pueden configurar una serie de parámatros como la linea donde comanzar a leer la información en la hoja, las columnas donde está cada dato que el sistema necesita, la ruta default de los archivos entre otros, el sistema valida toda la información antes de grabarla en las tablas de la base de datos tal como si la hubiese introducido el usuario de la manera tradicional en el sistema, si el archivo no pasa la validación le indica al usuario la celda donde encontró la inconsistencia y el motivo por el que no se puede importar esa hoja.
En esta primera fase está funcionando asi, conforme se vean resultados positivos con el sistema tengo contemplado utilizar una tecnología que estube investigando y creo que vendría muy bien en este caso, se trata de una Pluma electrónica, que segun los que ya la utilizan facilita la transición de los procesos de forma manual a electrónica al utilizar el usuario una pluma "normal" para escribir en papel "normal", con la particularidad de que la pluma guarda todo lo que el usuario escribe y esa información luego es leída e interpretada por la computadora, pero eso es tema para otro post.