KMKey dispone de un sistema de fabricación de listados poco habitual, pero muy útil. Se trata de confeccionar los listados o documentos generables usando OpenOffice, e incorporar dentro del documento, con el mismo OpenOffice, sentencias XML/python que permiten su dinamización y combinación con los datos de la aplicación. El resultado final puede obtenerse en el mismo formato OpenOffice, en PDF o en formato MS/Office (doc / xls), gracias a las capacidades que OpenOffice nos ofrece.
La forma de combinar datos puede variar en función de la configuración de schemas que tengamos en ZODB o en SQL (hay una entrada sobre este tema en este mismo blog). En general, los documentos generables afectan datos de un sólo expediente, por lo que pueden abordarse sin problemas usando datos via ZODB, lo que los hace más genéricos y reusables. En cambio, los listados que se obtienen sobre un filtro de expedientes pueden manejar volúmenes importantes de datos, y suele valer la pena tener los schemas implicados en SQL y usar sentencias SQL para la recuperación de datos.
En este primer capítulo, vamos a dar un breve repaso a las sentencias XML disponibles, y en capítulos posteriores abordaremos cómo realizar la instalación de los listados, o las expresiones python de uso más frecuente.
- <define nombre_variable expresion_python /> Sirve para definir variables que vamos a usar posteriormente. La expresión python puede ser una llamada a un método, una llamada a una setencia SQL a través de un conector, o simplemente un tratamiento de datos python. Por ejemplo, para obtener el proyecto dentro de un documento generable, podemos usar <define proyecto self.getContent().getKMProject() />
- <content expresion_python />Escribe texto en el documento. El texto escrito, óbviamente, es el resultado de evaluar la expresión python. Puede ser un nombre de variable, un método, un atributo de un objeto, etc. Siguiendo con el ejemplo anterior, para escribir el título del proyecto usaríamos <content proyecto['Title']() />
- <date expresion_python /> Igual que content, pero se espera que el resultado de la expresión python se corresponda con una fecha del tipo DateTime. Sólo es necesario usarla si estamos generando hojas de cáculo y queremos que el tipo de datos resultante sea una fecha, si nos vale con que sea string se puede usar content perfectamente.
- <float expresion_python /> Exactamente lo mismo que el caso de las fechas, pero con los tipos de datos numéricos. Del mismo modo, sólo tiene sentido para generar hojas de cálculo
- <image expresion_path_imagen /> Si la expresión python devuelve un path de imagen, ésta se incorpora en el documento generado
- <repeat nombre_variable expresion_python > ... </repeat>. Realiza un bucle sobre la expresión python, asignando nombre_variable en cada iteración. Para que funcione adecuadamente, debe situarse en una hoja de cálculo, o en una tabla si estamos en el procesador de textos, de otra forma el sistema no es capaz de llevar a cabo el bucle de construcción del documento
- <if expresion_python > ... </if>. Sólo ejecuta el interior del condiciona si la expresion python devuelve un valor True. Igual que en el caso del repeat, debe usarse en una hoja de cálculo o en una tabla
- checkboxs. Para generar checkbox activos o inactivos, se puede activar el modo formulario de OpenOffice y definir como nombre de campo del chekbox una variable. Si esa variable se encuentra definida y vale True, entonces el checkbox aparecerá marcado. En caso contrario, aparecerá desmarcado.
Etiquetas: Desarrollo KMKey