Documentos Dinámicos Ahora


Introducción


Los DDA o Documentos Dinámicos de Ahora son una serie de formularios definidos por el propio usuario con los campos que más le interesen en cada caso, estos formularios llevan unas tablas asociadas las cuales se pueden explotar para visualizar la información contenida en ellos.


Los DDA’s los podemos utilizar como un documento más de nuestra gestión documental o bien como un objeto asociado. La diferencia radica en que podemos tener varios documentos asociados a un tipo de clasificación o bien  un único DDA asociado de forma directa al objeto. Más adelante veremos como realizar un DDA para una u otra opción.



Acceso a la configuración del DDA


El acceso a la configuración y edición de estos documentos se hace a través del menú principal:


  •     Documentos --> Definiciones DDA.     


Al entrar lo primero que nos pide la aplicación es la introducción de un usuario con permisos administrativos sobre la base de datos en la que nos encontramos. Esto es debido a que el usuario del DDA tiene que tener privilegios suficientes para la creación y modificación de tablas.




Definiciones del DDA


Una vez validado accedemos al siguiente formulario, desde donde podemos ver nuestra colección de DDA’s existentes en el sistema y ordenados por carpetas.


Además mediante el menú contextual sobre la pantalla obtenemos las siguientes opciones:

    Agregar/Modificar/Eliminar Carpeta     

  •         Agregar DDA nuevo

  •         Modificar DDA existente




Creación de DDA


A través de la definición de DDA’s, podemos empezar a diseñar nuestro documento DDA. Al entrar podemos observar un editor de interfaz gráfico de usuario, conocido por sus siglas en inglés como GUI.



A primera vista podemos observar como la pantalla está dividida en 3 secciones. A la izquierda de este documento podemos ver una barra de herramientas con los controles a los que tenemos acceso para diseñar nuestro formulario. En el centro tenemos una cuadricula donde iremos colocando los controles, cada uno de estos controles tiene sus propiedades (ancho, nombre,…)  que podremos editar mediante la lista que tenemos a la derecha del formulario.


Debemos de tener en cuenta que tenemos activadas las siguientes opciones de visualización, para ello iremos al menú ver y comprobaremos que tenemos marcado las siguientes opciones:



  •     Emulación de controles: Permite previsualizar los controles de la barra de herramientas con el mismo aspecto o apariencia que     tenemos configurado en el ERP.     

  •     Cuadrícula: Para colocar de una forma rápida todos los controles manteniendo cierto tipo de orden

  •     Regla: Si dibujamos una recta pinchando sobre la regla tanto horizontal como vertical podemos usar estas líneas para:     
     

    •  Ajustar de forma automática el nuevo control insertado para ello debemos de tener activado el check de ajustar a regla nuevo control al insertar (Herramientas -->  Opciones)  
    • Si tenemos puesto un control en la cuadrícula podemos mediante el menú contextual sobre el control ajustarlo a la regla.  
          


En la barra de herramientas tenemos los siguientes controles, ordenados por orden de visualización:


  •     Selección

  •     Etiqueta

  •     Caja de Texto

  •     Cuadro o Frame

  •     Botón     

  •     Desplegable o Combo     

  •     Objeto Imagen

  •     Check o botón de validación

  •     Botón de selección

  •     Grid o rejilla.





Por poner un ejemplo si queremos añadir una caja de texto, tendremos que pulsar el botón correspondiente de la barra de herramientas y a continuación irnos a la rejilla y manteniendo pulsado el botón del ratón iremos pintaremos el control mediante el arrastre del puntero, estableciendo de esta forma el ancho y alto del control.


Una vez pintado el control sobre la rejilla podemos eliminarlo o copiarlo pulsando el botón derecho del ratón y seleccionando la opción correspondiente del menú contextual:


  •     Copiar Control     

  •     Quitar / Eliminar Control     



Diseño del Objeto DDA


El diseño del DDA se basa siempre sobre la cuadrícula en la que estamos posicionados, debemos de tener en cuenta que antes de guardar todo el DDA hemos tenido que guardar las propiedades obligatorias de los controles que hayamos usado.


Si tenemos registros en la tabla y queremos añadir más campos esto no supone que vayamos a eliminar los registros existentes.


Tanto el control caja de texto, como el desplegable y el grid o rejilla van a  guardar la misma apariencia que tenemos configurada de forma global en el programa.


Tenemos la opción de realizar una simulación del formulario que estamos diseñando mediante la opción de menú: DefiniciónDDA --> Simulación. De esta forma podemos ver el resultado final.


Propiedades comunes a todos los controles


Las propiedades nombre y campo son comunes a todos los controles pero no deben de crearnos confusión puesto que cada una sirve para diferentes menesteres. Las diferencias son que la propiedad nombre se utiliza como identificador único del control en el DDA, mientras que la propiedad campo nos está diciendo el nombre del campo que se almacena en la base de datos. Esta propiedad debe de ir acompañada obligatoriamente por el tipo de dato y su longitud.


También tenemos dos propiedades comunes a todos los controles estos son propiedad y propiedad objeto. Estas propiedades solamente se van a poder rellenar si el DDA está vinculado a un Objeto.


  • Propiedad: Aparece un cuadro de lista con todos las propiedades de los objetos a los que está vinculado el DDA. Al seleccionar una propiedad estamos diciendo que en la carga del DDA vamos a coger el valor de la propiedad del objeto y escribirla en nuestro control del DDA.

  • Propiedad Objeto: Si el DDA es el formulario asociado a un objeto nuevo creado desde el programa ADMON, podremos ver un cuadro de lista  con todas las propiedades del nuevo objeto y seleccionaremos la propiedad que queremos guardar en ese campo. 


Si el DDA proviene de un objeto nuevo podemos tener rellenados los dos campos tanto propiedad como propiedad objeto. Puesto que al cargar el DDA visualizaremos el campo propiedad y al guardarlo lo haremos sobre el campo Propiedad Objeto.


Añadir Etiquetas


Debemos de considerar que las cajas de texto llevan sus propias etiquetas, por tanto si lo que queremos añadir es un título podemos usar este control etiqueta.


Las propiedades obligatorias que debemos de rellenar para este tipo de control son:

  •     Nombre

  •     Tamaño de Letra

Añadir Cajas de Texto


La caja de texto es el control más habitual de los formularios nos permite introducir valores de cualquier tipo ya sea texto, números, fecha.


Propiedades a destacar:

Multilínea: Si tenemos activado esta propiedad sobre el control de texto, hace que podamos pulsar la tecla intro sobre la caja y el foco no se vaya a otro control. Normalmente se utiliza para añadir un campo de notas o  comentarios en el formulario.


Añadir Desplegables al DDA


Después de pintar el control combo en la cuadrícula podemos observar como tenemos una multitud de propiedades que se repiten. Lo primero que tenemos que hacer es rellenar dentro de la sección de DATOS el campo SQL con una SELECT de las columnas que queramos visualizar.

A continuación nos iremos a la sección COLUMNAS e iremos rellenando las propiedades de anchura, tipo del campo y nombre. La propiedad nombre debe de coincidir tanto en orden como con el nombre de la columna de la SQL.


Ejemplo:


DATOS:

Propiedad SQL: SELECT IdEmpleado, Nombre + ‘  ’ + Apellidos as Empleado FROM Empleados_Datos

COLUMNAS:

Columna1 anchura: 1000

Columna1 nombre: IdEmpleado

Columna1 tipo: Entero

Columna2 anchura: 2000

Columna2 nombre: Empleado

Columna2 tipo: Texto

ColumnaActiva: 1 Estamos indicando que el valor de esta columna es el que vamos a guardar en la tabla.


Por último podemos activar la propiedad Etiqueta Link para de esta forma obtener un hipervínculo a un asistente donde nos mostrará los registros de la consulta SQL.  


¿Cómo se acceden a los valores de la combo mediante vbscript?

Como hemos dicho anteriormente todos los controles son accesibles gracias al editor de pantallas que se obtiene a través de la combinación de teclas Ctrl+F10 a través de la propiedad gform.ControlesDDA(“NombreCombo”).Columns(0).Value. 

También podemos acceder a estos valores del desplegable usando los eventos de los controles que tengamos en nuestro DDA.


Añadir Cuadro Contenedor o Frame


Este control dibuja un cuadro alrededor de los controles quedando estos contenidos en el cuadro. También podemos usarlo como separador dentro de un formulario para ello cambiaremos la propiedad estilo del recuadro a línea superior.


Es altamente recomendable insertar este control el último en nuestro formulario puesto que de lo contrario no podremos diseñar ningún control por encima de él.


Añadir Pestañas al formulario DDA


Si nos fijamos la cuadricula tiene una pestaña que por defecto que viene con el nombre de principal, si pulsamos sobre ella podemos cambiar el nombre de su lista de propiedades pero lo interesante es que podemos pulsar el botón derecho del ratón para agregar más pestañas.


Si solamente tenemos una pestaña a la hora de visualizar o simular el DDA aparecerá como si de un formulario único se tratase es decir, sin pestañas.


Añadir Control Imagen


Mediante la propiedad fichero podemos visualizar una imagen de extensión .jpeg al cargar el DDA. También podemos cambiar la imagen programando un evento AfterUpdate en otra caja de texto que tengamos en el formulario quedando de la siguiente forma:


Si nuestro control se llama PicFoto podemos usar la siguiente sentencia para cargar una foto, cada vez que se modifique una caja de texto llamada txtIdEmpleado


'a la funcion LoadPicture le pasamos una ruta 

Set gform.ControlesDDA("PicFoto").Picture = LoadPicture(gcn.DameValorCampo("SELECT Foto FROM Empleados_Datos WHERE IdEmpleado="& gform.ControlesDDA("txtIdEmpleado").text))

Añadir un control de tipo grid


Comentar que el control grid no se carga en simulación. Antes de elegir de la barra de herramientas el control de tipo grid y pintarlo en la cuadricula, lo primero que tenemos que hacer es guardar el DDA, a continuación una vez guardado ya podemos pintarlo sobre la cuadricula. Debemos de volver a guardar el DDA para que se habilite la opción del menú contextual, Editar Grid.


Pulsando con el botón derecho sobre la rejilla obtenemos los siguientes menús contextuales:


Menú Eliminar:

Elimina la grid, todos los controles del dda tienen esta opción de menú para poder eliminar el control.


Menú Copiar: 

Al copiar tendremos una copia exacta del grid. El origen de datos será el mismo para la copia del grid y este no se puede cambiar.


Menú Vincular Tabla: Este menú sólo saldrá si la grid no tiene ya una tabla vinculada, esta opción no se recomienda por que es mas fácil crear la tabla desde la propia edición de la grid, pero si decidimos vincular tabla esta debe tener como clave un campo llamado iddoc, al vincularla el DDA le inserta un índice propio IdDDA indicando así que esta tabla sólo es de este DDA y no para otro


Al pulsar sobre este menú podremos seleccionar una tabla o vista de nuestra base de datos a través de la siguiente pantalla:


Menú Editar Grid:

Permite editar, añadir o eliminar los campos de la tabla y crea la tabla, aparecerá el siguiente formulario:



Donde:


Nombre Tabla: es el nombre que le da a la tabla que crea o vincula

Nombre: Es el nombre del campo dentro de la tabla de la grid

Tipo: Es el Tipo de campo es obligatorio definirlo

Longitud: Es la longitud en el caso de que el campo sea texto

Sql: Podemos poner una sql para que pulsando F3 sobre este campo de la grid me salga el resultado del SQL en un asistente. Ejemplo: SELECT IdEmpleado, IdEmpleado as ID, Nombre FROM Empleados_Datos


De momento las grids tienen un pequeño inconveniente y es que una vez guardada la grid en la base de datos, no se pueden eliminar los campos que hemos creado. Podemos añadir campos nuevos, cambiar el tipo o tamaño de campo truncando este. Si queremos eliminar un campo podemos ir directamente a la tabla en SQL SERVER y realizar las modificaciones oportunas. La sentencia SQL se guarda en la descripción del campo dentro de la tabla de la grid.


Campos:

En la creación de campos debemos tener en cuenta que es obligatorio introducir el nombre del campo, el tipo de dato y la longitud en el caso de que este sea de texto, sino no nos dejará guardar el DDA, ya que son datos necesarios para crear el campo asociado en la tabla asociada al DDA. Mediante los botones de más y menos podemos ir añadiendo eliminando campos, con la salvedad antes comentada.


Impresión de un documento DDA


Para imprimir un DDA tenemos que acceder a la botonera que se encuentra en la parte inferior del formulario y pulsar el botón imprimir.



A la hora de imprimir tenemos 2 casos:



  •     Es un formulario DDA normal, creado a través del árbol de     definiciones. La acción que se realiza en ese momento es lanzar una     impresión del formulario tal cual lo estamos visualizando. Si     tenemos varias pestañas en el formulario DDA y pulsamos el botón     imprimir, lo que lanzamos es la impresión de la pestaña en la que     estamos situados.

    

  •     Es un formulario DDA de objeto: El formulario se ha creado desde el     ADMON a través del nuevo objeto y por tanto al ser un objeto más     de la aplicación podemos añadir listados como si de un objeto o     colección se tratara es decir, a través del ADMON iremos a la     configuración de listados, seleccionamos el nuevo objeto o     colección y empezamos a añadir el listado de la forma habitual.




Programación de eventos en los controles DDA


A pesar de que todos los DDA los podemos programar mediante el editor de pantallas (Ctrl+F10) por temas de compatibilidad con versiones anteriores, hemos mantenido la programación de eventos en los controles del formulario DDA.


Todos los controles que usamos para diseñar un DDA poseen dentro de su lista de propiedades, una sección dedicada a los eventos. Estos eventos se pueden programar usando el lenguaje de VBScript. Podemos usar nuestros objetos gcn y gform como podemos observar en la captura de pantalla.


Muy importante: Tanto en el editor de pantallas (Ctrl+F10) como en el editor de eventos del DDA los controles deben de llamarse en código de la siguiente forma: gform.ControlesDDA(“NombreControl”).Text


Al hacer doble clic sobre el evento aparece el formulario de editor de eventos donde deberemos de escribir nuestras instrucciones de programación:



Pensar que las instrucciones del editor estarán contenidas dentro del evento. Es decir, no hace falta terminar la instrucción con el End Sub, puesto que este ya está implícitamente en el evento que estamos programando.




Cada control tiene sus propios eventos de programación, a continuación exponemos todos los eventos que podemos utilizar, según el control en el que estemos posicionados tendremos más o menos eventos:

                                                                                                                                                                                

AfterUpdate:El evento se dispara al actualizar el valor del control
DobleClick:Este evento salta cuando hacemos dobleclick sobre el control
GotFocus:Este evento se dispara cuando le llega el foco al control
LostFocusEste evento se dispara cuando el control en el que estamos situados pierde el foco.
Keypress:Mientras estemos introduciendo caracteres en el control el evento se dispara.
CaptionClick:A las etiquetas de las cajas de texto se les puede habilitar un asistente
Click:Cuando hacemos click sobre el control

                                                                                                          


Ejemplo de programación del evento AfterUpdate para un control de tipo caja de texto:


Tenemos 2 controles de tipo caja de texto una se llama txtIdEmpleado y la otra txtNombre.

En el ejemplo tenemos que al introducir el IdEmpleado el código busca el nombre y lo escribe en la caja de texto con el nombre txtNombre.


msgbox " Evento After Update : " & gform.ControlesDDA("txtIdEmpleado").text 


 gform.ControlesDDA("txtNombre").text = gcn.DamevalorCampo ("SELECT Nombre + ' ' + Apellidos as Nombre FROM Empleados_Datos WHERE IdEmpleado=" &  gform.ControlesDDA("txtIdEmpleado").text ,"Nombre")



Guardado del Objeto DDA


Al guardar el DDA, menú Archivo --> Guardar, accederemos al siguiente formulario, donde deberemos de rellenar los campos obligatorios para poder avanzar en el proceso de creación y vinculación del DDA a cualquier objeto de la aplicación ERP.


                                                                                                                                                                                

Id. DefiniciónEs el identificador único del DDA, este campo lo rellena automáticamente la aplicación.
Nombre*:Nombre que queremos darle al DDA
Descripción: Si queremos poner algún comentario sobre el DDA
Tabla*:
Donde se guardará el DDA. Al nombre que nosotros pongamos, el programa le añadirá de forma automática un prefijo que será DDA[IDDefinicion]_Nombre de la tabla
Clasificación*:Tipo de Documentos, de nuestra clasificación de gestión documental donde queremos que se inserten los documentos DDA.
Documento Único:Si el documento es único sólo podremos asociarlo una vez al objeto si no es único podremos asociar varios documentos DDA  y estos quedaran clasificados mediante la gestión documental.
Es Documento:No es un campo operativo.

                                                                                                                                                                                                                                                                               

*Campos obligatorios


Una vez rellenados los datos obligatorios y guardados, podemos ir al menú DDA Propiedades para conocer el nombre exacto de la tabla que ha creado la aplicación. Damos por supuesto que en esta tabla tendremos todos los registros que los usuarios hayan introducido.


Asociar o Vincular un DDA a un Objeto


Un DDA puede estar asociado a uno o más objetos del sistema con este método conseguimos que los campos de nuestro DDA queden fusionados a las propiedades de los objetos de forma automática.


Una vez vinculado el objeto a un DDA podemos seleccionar cualquier control de nuestro DDA y pulsando doble clic en la propiedad llamada “propiedad” saldrá el formulario para vincular las propiedades del objeto con las propiedades del DDA. Sino tenemos ningún objeto asociado al DDA no saldrá nada.


Ejecución del DDA

Generar DDA


Cuando hemos vinculado un DDA a un objeto, en el menú contextual del objeto tenemos una entrada más de menú que se llama Generar DDA la cual desplegará todos los DDA’s que tenemos asociados a ese objeto.


Si en las propiedades del documento DDA tenemos marcada la opción de documento único, en la lista de DDA’s asociados al objeto podemos ver como estos se representan con un check. Esto indica que siempre vamos a trabajar sobre el mismo documento DDA y los mismos datos. En caso de no tener esta marca el programa generará un nuevo documento que quedará clasificado según su tipo en la gestión documental.



  



Añadir Documento


También podemos añadir DDA igual que añadimos otros tipos de  documentos a los objetos, desde el objeto asociado Documentos, botón derecho Añadir y en el siguiente asistente decimos que el origen del documento es el Documento Dinámico Ahora y el tipo de documento que queramos.



A continuación como último paso tenemos que seleccionar del árbol de definiciones del DDA un documento cuya propiedad sea no única.


Programación avanzada del formulario DDA


Una vez el DDA está totalmente operativo vinculado como documento único a un objeto o bien como un tipo de documento de la gestión documental, al realizar la llamada al documento DDA  podemos hacer uso del editor de pantallas. Para ello una vez abierto el formulario podemos pulsar la combinación de teclas Ctrl+F10 para acceder al editor de pantallas:




Creación de un objeto nuevo


Existe una nueva funcionalidad en el ADMON, para crear tanto una colección como un objeto nuevo y que este tenga el mismo tratamiento que los demás objetos de la aplicación.


Para crear estos objetos personalizados del cliente debemos de ir al programa ADMON y dentro de la sección de configuración elegir el nodo Objetos. Al seleccionar cualquier objeto podemos ver su lista de propiedades (descripción, SQL, Librería, Menú…) y en la parte inferior tenemos el botón Nuevo que necesitamos para crear el objeto como la colección.


 


Al pulsarlo accederemos al siguiente formulario:



Donde:


  • Objeto: Es el nombre del objeto que estamos creando. Debe de ser único.

  • Descripción: Es la descripción del objeto que verá el usuario en el explorador del objetos

  • Tabla: Tabla donde se almacenarán los datos del objeto. Para la creación del objeto esta tabla no hace falta que exista. La tabla     hay que crearla manualmente a través del servidor SQL.


Puesto que en el ERP no tenemos muchas opciones para llevar nuestra gestión de recursos humanos, en nuestro ejemplo vamos a crear un objeto y colección nuevos que irá asociado al objeto empleados y nos servirá para llevar un control de los días que un empleado ha estado de baja.

Nuestro objeto se llamará BajaEmpleado y la colección BajaEmpleados.


Otro ejemplo podía haber sido la  creación de un Objeto llamado PostIt para poder dejar avisos y que estos los viera el usuario mediante una consulta filtrando por estado, en el panel de Inicio.



Una vez creado el objeto, en esa misma ventana tenemos todas las propiedades del objeto.

Es altamente recomendable tanto para el objeto como para la colección rellenar la propiedad [Cadena descripción objeto] con campos que existan en la tabla usando los corchetes para separa el texto literal de los campos.

Ejemplo: [IdBaja]-[IdEmpleado]-[FechaBaja]- Motivo: - [Descrip]



 

Con todas las propiedades debidamente cumplimentadas podemos pulsar el botón Crear Formulario, situado este en el lugar donde antes existía el botón Nuevo es decir, debajo de las propiedades. Una vez creado el formulario el nombre del botón cambiará a Modificar Formulario.


Ahora tenemos ante nosotros la cuadrícula, ahora ya podemos diseñar nuestro formulario y según nuestra pericia nos quedará mas o menos de la siguiente forma: 



Además el DDA lo hemos vinculado al objeto empleado. (Definición DDA --> Propiedades) y en el objeto Empleado hemos añadido la relación del empleado con el nuevo objeto (BajaEmpleado) a través de la pestaña objetos asociados.




Si accedemos a la tabla objetos podemos observar como el nuevo objeto lleva el campo personalizado a 1, junto con el campo IdDDA.


Por último nos queda crear la colección del objeto cuyo nombre es BajaEmpleados, además en las propiedades de la colección tendremos que editar el campo hijo y poner el nombre del objeto BajaEmpleado. Ahora al entrar en la aplicación ya tenemos como objeto asociado al empleado nuestro nuevo objeto BajaEmpleado quedando de la siguiente forma:

 


  



Asociar un DDA como formulario de un objeto existente


Podemos asociar un DDA como formulario de un objeto existente, este objeto debe de ser un Item, es decir en la tabla Objetos en el campo librería tiene que tener el valor: AhoraSistema o bien sea un objeto nuevo creado desde el ADMON.


Como ejemplo, vamos a proponer un nuevo formulario para el objeto domiciliaciones de cliente, para ello de forma temporal, luego estará disponible a través del ADMON, en la tabla objetos modificamos el campo personalizado del objeto y colección Clientes_Domiciliacion con el valor 1. 


Una vez hecho esto abrimos de nuevo la colección de objetos y en la parte inferior de las propiedades del objeto al que le hemos modificado el valor tenemos un nuevo botón para crear el formulario y posteriormente poderlo  modificar.



En el formulario DDA del objeto tenemos que rellenar la propiedad objeto del control para que de esta forma queden vinculados los campos del objetos con los controles del formuario DDA.




Añadir un control de tipo grid a un objeto


Si queremos añadir una grid y que esta quede vinculada de forma automática al nuevo objeto, debemos seguir los siguientes pasos:



  • Crear la tabla como mínimo con los mismos campos clave que tiene el     objeto más un campo clave más que será para la grid. Además en     la tabla debe de existir un campo llamado IdDoc que debe de ser de     tipo Identity.

  • Una vez creada la tabla le asignaremos los permisos     correspondientes.

  • Iremos al ADMON y a través del objeto diseñaremos el DDA     insertando el grid y lo vincularemos con la tabla creada.     

  • A continuación iremos a la aplicación y mostraremos el formulario     del objeto y mediante botón derecho sobre la grid, Crearemos una     nueva configuración e iremos añadiendo los campos como si fueran     campos configurables es decir en el grid inferior.     

  • Opcionalmente, si queremos que el campo clave de la grid (IdLinea)     vaya incrementando podemos poner esta instrucción en la columna     SQL: SELECT MAX(ISNULL(@IdLinea,0))+1 FROM NombreTabla WHERE     IdCampoClave1=@IdCampoClave1 AND IdCampoClave2=@IdCampoClave2



Añadir menús a un DDA.


Para añadir menús a un formulario de DDA, debemos ir a la sección de menús en el ADMON.

Primero debemos localizar la librería AhoraDDA en el árbol. Luego añadiremos el form con el nombre que tenga el DDA.



El nombre del DDA es el que le hayamos puesto en sus propiedades:




Luego se añaden los menús de la forma habitual: