Escritos

De Egeasy
Revisión del 11:02 8 ene 2009 de Irodriguez (Discusión | contribuciones) (Componente {{T|documento}})

Saltar a: navegación, buscar

Introducción

A la hora de crear un documento en ODL es necesario hablar de ciertos conceptos que intervienen en este tipo de operaciones. Por un lado están las definiciones de componentes documento y plantilla, y por otro lado existe un formato de fichero .rtf (Rich Text Format) que contendrá la información del escrito. Este tipo de ficheros ofrece la posibilidad de declarar marcas en el contenido, de forma que esas marcas sean sustituídas por campos que provienen, en este caso, de nuestro código ODL. Veamos con más detalle cada uno de los conceptos:

Componente documento

La definición de documento se realiza a nivel de contenedores. Este componente lo definiremos en aquel contenedor en el cual queramos que aparezca la opción de elaboración de escrito. Para esta definición existe sólo un atributo, plantilla_documento, que especificará el fichero .rtf asociado. No podremos incluir más de una definición de documento en un mismo contenedor.

Componente plantilla

Es un componente de ODL donde definiremos, mediante secciones, los campos a rellenar en el fichero .rtf. La plantilla tomará los valores de los campos mediante referencia.

Pero, ¿y cómo sabe la plantilla a qué documento tiene que enviar esos campos?

Existe un atributo documento donde especificaremos la definición de la componente documento que, a su vez, tendrá declarado el nombre del fichero .rtf. Podríamos decir que la componente documento actúa como puente de comunicación entre la plantilla y el documento .rtf.

Rich Text Format

Es el formato que utiliza egEasy para la creación de escritos. Este formato permite definir unas marcas o tags, de forma que podamos crear un escrito en función de la información contenida en un objeto.

Ejemplo básico

Aprovechando el ejemplo utilizado en el artículo Contenedores, vamos a incluir código ODL para que podamos elaborar un escrito.

En primer lugar, debemos tener claro la estructura e información que contendrá nuestro escrito, para así poder definir las marcas que necesitemos. Para este ejemplo básico, y utilizando la definición del contenedor "Libro", queremos generar simplemente una ficha con los datos de un objeto "Libro". Veamos pues cómo definimos las marcas en nuestro fichero .rtf para que al elaborar el escrito, se traduzcan en valores concretos:
FICHA DEL EJEMPLAR Nº <#=Código>

Título: <#=Título>
Autor: <#=Autor>
Tipo: <#=Tipo>

Esta es la marca más básica que puede integrar un documento .rtf. Su sintaxis, <#=Nombre_del_campo>, es muy simple. La marca completa será sustituída por el valor del campo que indiquemos, y para eso, el nombre debe coincidir con el incluído en la plantilla. Una vez creado el documento .rtf, tenemos que declarar la componente documento en el contenedor desde donde queremos que se lance la orden de "Elaborar escrito":

tipo [Libro] es contenedor
   [Datos] es formulario
   ...
   ...
   ...
   fin
[Escrito] es documento -plantilla_documento= "Escrito_001.rtf" fin
fin

Como ya explicamos anteriormente, en el atributo plantilla_documento especificamos el documento .rtf con el que se va a generar el escrito. Veamos cómo se refleja el código insertado en la herramienta egExplorer:

Inclusión de la componente documento en un objeto

Como vemos, nos aparece una pestaña nueva al abrir un objeto de tipo "Libro", que obtiene el nombre de la definición de documento. En esta instancia del objeto, podremos elaborar y abrir los escritos que se generen.

Ahora solamente nos falta definir la componente plantilla. Esta componente, no hay que definirla dentro de un contenedor como la definición de documento, sino que declararemos un tipo plantilla como código independiente de cualquier definición de contenedor.

tipo [Elaborar Escrito] es plantilla
   -documento = [Libro].[Escrito];
   [Campos a rellenar] es seccion
      [Enlace] es variable
         -vinculo.definicion = [Libro];
         -edicion.modo = referencia;
         -edicion.valor = [&Dominio];
      [Código] es texto
         -edicion.modo = referencia;
         -edicion.valor = [Enlace]->[Datos].[Código];
      [Título] es texto
         -edicion.modo = referencia;
         -edicion.valor = [Enlace]->[Datos].[Título];
      [Autor] es texto
         -edicion.modo = referencia;
         -edicion.valor = [Enlace]->[Datos].[Autor];
      [Tipo] es texto
         -edicion.modo = referencia;
         -edicion.valor = [Enlace]->[Datos].[Contenido].[Tipo];
   fin
fin
Hemos incluído los campos que se corresponden con las marcas definidas en el fichero .rtf y que serán los encargados de almacenar los valores del objeto que luego sustituirán a las marcas en el .rtf.

Como habrás observado, hay definida una variable. En este caso, la variable obtiene el valor [&Dominio] aunque no es estrictamente necesaria. Podríamos eliminar la variable y sustituir la referencia a los campos de esta forma, [&Dominio]->[Datos].[Campo]. Pero hay casos en los que sí es recomendable utilizar variables y que veremos más adelante.

Veamos entonces cómo se produce la obtención de valores por parte de la plantilla y su posterior sustitución en el .rtf:
Cumplimentar el documento mediante la plantilla

Una vez aceptado el cumplimentado, se abrirá el documento con los valores intercambiados. El documento ya estárá creado, y el resultado sería el siguiente:

FECHA DEL EJEMPLAR Nº 0008
Título: ASP.NET con AJAX Autor: Rama Krishna Tipo: Científico