Objeto - grupo de comandos

Se trata de un conjunto de comandos que nos permiten manipular objetos de interfaz, tanto de ficha como de lista, de un proyecto de aplicación, etc.

Añadir ficha al objeto

Comando de instrucción que añade la ficha en curso a un objeto instanciado previamente en el mismo proceso.

Origen de la instrucción: ficha de la tabla en curso.

Destino del subproceso: ninguno.

Parámetros

Manejador del objeto

Identificador o manejador dado al objeto previamente en el proceso por medio del comando de instrucción Crear manejador de objeto.

Funcionalidad

Permite añadir un registro.

El objeto tendrá que ser uno que maneje registros, como por ejemplo, un formulario.

Comentarios

El objeto tendrá que haber sido instanciado con anterioridad dentro del mismo proceso y el registro tendrá que ser de la misma tabla asociada al objeto.

Este comando lee el contenido que tiene la ficha en disco y sustituye lo que se tenga en memoria en el objeto al que se añada la ficha.

Por lo tanto, si queremos añadir una ficha creada en el mismo proceso, habría que guardarla en disco previamente antes de añadirla al objeto.

Ejemplo

Editamos el artículo con ID = 1 habiendo añadido previamente la ficha al manejador de objetos.

Crear manejador de objeto ( manejador_formulario, Formulario ARTICULO@ejemplo )
Cargar lista ( ARTICULOS@ejemplo, ID, 1, , ,  )
    Seleccionar ficha por posición ( 1 )
    Leer ficha seleccionada
        Añadir ficha al objeto ( manejador_formulario )
Disparar objeto ( manejador_formulario, No aplicable,  )
    Libre

Añadir lista al objeto

Comando de instrucción que añade la lista de registros en curso a un objeto instanciado previamente en el mismo proceso.

Origen de la instrucción: lista de la tabla en curso.

Destino del subproceso: ninguno.

Parámetros

Manejador del objeto

Identificador o manejador dado al objeto previamente en el proceso por medio del comando de instrucción Crear manejador de objeto.

Funcionalidad

Permite añadir una lista de registros registro.

El objeto tendrá que ser uno que maneje registros, como por ejemplo, una rejilla.

Comentarios

El objeto tendrá que haber sido instanciado con anterioridad dentro del mismo proceso y la lista de registros tendrá que ser de la misma tabla asociada al objeto.

Ejemplo

Cargamos la lista de clientes añadiendo los registros a un manejador de objetos de tipo informe que es disparado..

Crear manejador de objeto ( informe_clientes, Informe INFORME_CLIENTES@ejemplo )
Cargar lista ( CLIENTES@ejemplo, ID, , , ,  )
    Añadir lista al objeto ( informe_clientes )
Rem ( Disparamos el informe de clientes )
Disparar objeto ( informe_clientes, No aplicable,  )
    Libre

Crear manejador de objeto

Comando de instrucción que genera un manejador del objeto que seleccionemos en sus parámetros. El resto de los comandos de objeto han de usar este manejador como referencia para la acción que realizan.

Origen de la instrucción: cualquiera.

Destino del subproceso: ninguno.

Parámetros

Manejador de objeto

Etiqueta alfanumérica que servirá para referenciar el objeto en el resto de los comandos de objeto que vayan a hacer uso del mismo.

Identificador de objeto

Objeto que se desea manipular. Se desplegará una lista de todos los objetos disponibles, agrupados por tipo. Seleccionaremos el deseado.

Modo de visualización

Propiedad específica para objetos de interfaz de ficha o de lista (formulario, rejilla, etc.) que nos permite configurar el modo en el que se visualizará el objeto. Los valores posibles son:

  • Diálogo: el objeto será abierto como cuadro de diálogo.

  • Vista: el objeto será abierto en modo vista.

A tener en cuenta:

Si se trata de un formulario en modo vista y éste tiene activado el estilo vista única, respeta su comportamiento.

En modo diálogo, para la interfaz y el proceso queda a la espera de que el usuario cierre el objeto para continuar.

En modo vista no para la interfaz y el proceso continúa su ejecución, no espera a que el objeto sea cerrado.

En modo vista soporta el comando set variable local del objeto pero no el comando get variables local de objeto. Esto es debido a que en modo vista el proceso abre el objeto y continúa su ejecución, no espera a que sea cerrado.

Título

Propiedad específica para objetos de interfaz de ficha o de lista (formulario, rejilla, etc.) que nos permite especificar un título a la ventana que contendrá el objeto.

Funcionalidad

Genera un manejador del objeto que seleccionemos en sus parámetro para su posterior manipulación dentro del proceso. El resto de los comandos de objeto han de usar este manejador como referencia para la acción que realizan.

Comentarios

Es posible instanciar un mismo objeto varias veces en un mismo proceso, o manejar distintos objetos al mismo tiempo.

El objeto no tendrá referencia alguna a registros, hasta que se los asignemos con el comando adecuado.

Cuando creamos un objeto de ficha con este comando de instrucción se crea una ficha nueva y se rellenan sus contenidos iniciales, por lo que cuando usamos el comando Disparar objeto, la ficha está ya creada previamente por el otro comando y ya dispone de los valores inicializados en los contenidos iniciales.

En un mismo proceso, no debemos crear varios objetos con el mismo manejador, ya que precisamente el manejador o handler es el que identifica al objeto por lo que, si tenemos manejadores duplicados, el sistema no podrá saber a cuál de los objetos ha de hacer referencia.

Ejemplo

Creamos un manejador de objetos del objeto Búsqueda ARTICULOS.

Crear manejador de objeto ( busqueda_articulos, Búsqueda ARTICULOS@ejemplo )

Disparar objeto

Comando de instrucción que permite hacer uso de un objeto instanciado previamente en el mismo proceso.

Origen de la instrucción: cualquiera.

Destino del subproceso: ficha/Lista de la tabla asociada al objeto o Ninguno, depende de si el objeto tiene o no salida.

Parámetros

Manejador del objeto

Identificador o manejador dado al objeto previamente en el proceso por medio del comando de instrucción Crear manejador de objeto.

Modo de ejecución

En este parámetros especificaremos dónde y de qué modo va a ser disparado el objeto. Los valores posibles son:

  • 1º plano: local: el objeto es disparado de forma local, bien sea en el cliente, bien sea en el servidor, y devuelve un retorno por el que espera el proceso. Por tanto, este parámetro es bloqueante del proceso llamador hasta que éste haya finalizado.

  • 3º plano: servidor: el objeto es disparado en el servidor y devuelve un retorno por el que espera el proceso. Por tanto, este parámetro es bloqueante del proceso llamador hasta que la ejecución del objeto haya finalizado. Dado que el objeto será disparado en el servidor no podremos disparar objetos de interfaz en los que deba intervenir el usuario, como por ejemplo, formularios, pues éstos serían presentados en el servidor, no en el cliente. Solamente podremos disparar en tercer plano objetos de tipo proceso y búsqueda.

  • 4º plano: servidor (no espera retorno): solamente válido para ejecutar procesos. El subproceso será ejecutando en una cola el servidor y su ejecución será paralela a la del proceso principal pues éste no esperará a que el subproceso finalice. Los procesos disparados en 4º plano son ejecutados en una cola de forma secuencial.

Identificador de variable local booleana de retorno de ok

Variable local donde retornará si el objeto se ha disparado (1) o no (0).

Funcionalidad

Permite hacer uso de un objeto instanciado previamente en el mismo proceso por medio del comando de instrucción Crear manejador de objeto y atrapar su retorno. Pudiendo disparar el objeto tanto en local como en el servidor.

Comentarios

Este comando genera un subproceso cuyo origen será la salida del objeto disparado. Dicho subproceso solamente será ejecutado si el objeto disparado tiene salida.

Este comando no admite la ejecución de procesos en segundo plano (multitarea), ya que se trata de un comando de interfaz. Sí permite disparar los procesos en tercer o cuarto plano.

Para la ejecución de procesos en segundo plano debemos usar el comando Ejecutar proceso.

Si el objeto a disparar es un objeto de lista como, por ejemplo, una rejilla, al hacer sobre ella doble clic o intro se mostrará el formulario de modificación del ítem seleccionado y se cerrará la rejilla.

Cuando se utilizan los manejadores de objetos, si no tienen transacción a heredar, crean una transacción nueva independiente, sin embargo, si tienen una transacción a heredar incluyen sus operaciones en dicha transacción.

Por lo tanto, Si queremos forzar que diferentes procesos lanzados a través del manejador de objetos queden agrupadas en una sola transacción tan sólo hay que ejecutar el comando “Forzar transacción” antes de ejecutar los comandos “Disparar objeto”.

Debemos tener en cuenta que, si disparamos un proceso en tercer plano y una instrucción del mismo dura más de 10 minutos, hará que el proceso no pueda reportar al llamador que continúa ejecutándose, por lo que de desenganchará y se deshará.

Ejemplo

Creamos un manejador de objetos del objeto Búsqueda ARTICULOS, disparando el objeto y llevando los registros que nos devuelve la búsqueda a la salida.

Crear manejador de objeto ( busqueda_articulos, Búsqueda ARTICULOS@ejemplo )
Disparar objeto ( busqueda_articulos, No aplicable,  )
    Añadir lista a la salida

Get ítem array de variable local de objeto

Comando de instrucción que permite obtener el valor de un ítem de una variable local de tipo array declarada en un objeto instanciado previamente en el mismo proceso.

Origen de la instrucción: cualquiera.

Destino del subproceso: ninguno.

Parámetros

Manejador del objeto

Identificador o manejador dado al objeto previamente en el proceso por medio del comando de instrucción Crear manejador de objeto.

Identificador de la variable local del objeto

En este parámetro se desplegará una lista que contendrá todas las variables locales del objeto que sean de tipo array; seleccionaremos la deseada.

Fórmula de posición

Posición del array donde está el item. En este parámetro podrá especificar tanto una constante como una expresión fórmula. La primera posición es la número 0.

Identificador de variable local de retorno

En este parámetro se declara una variable que retornará el valor del ítem leído del array.

Funcionalidad

Esta instrucción permite leer el valor de una posición variable local.

Comentarios

El objeto tendrá que haber sido instanciado con anterioridad a la lectura de sus variables, dentro del mismo proceso.

Ejemplo

Ejecutamos un proceso obtenido de él el valor de la posición 1 del array MAT_CONFIG guardando su valor en la variable local CONFIGURACION par mostrarla con un mensaje.

Crear manejador de objeto ( proceso_configuracion, Proceso PRO_CONFIG@ejemplo )
Disparar objeto ( proceso_configuracion, 1º plano: local (síncrono),  )
    Libre
Get ítem de variable local array de objeto ( proceso_configuracion, MAT_CONFIG, 1, CONFIGURACION )
Mensaje ( "Valor de la variable de configuración: " + CONFIGURACION, Información, ,  )

Get variable local de objeto

Comando de instrucción que permite obtener el valor de una variable local declarada en un objeto instanciado previamente en el mismo proceso.

Origen de la instrucción: cualquiera.

Destino del subproceso: ninguno.

Parámetros

Manejador del objeto

Identificador o manejador dado al objeto previamente en el proceso por medio del comando de instrucción Crear manejador de objeto.

Identificador de la variable local del objeto

En este parámetro se desplegará una lista que contendrá todas las variables locales del objeto; seleccionaremos aquella cuyo valor queramos obtener.

Identificador de variable local de retorno

En este parámetro se seleccionará o se creará la variable local del proceso donde se retornará el dato leído.

Funcionalidad

Este comando de instrucción permite leer el valor de una variable local.

Comentarios

El objeto tendrá que haber sido instanciado con anterioridad a la lectura de sus variables, dentro del mismo proceso.

Si disparamos un proceso en tercer plano y en dicho proceso se usa el comando set retorno proceso = NO, no se retornará el valor de ninguna variable (en primer plano sí). En el caso de la ejecución en tercer plano, lo que podemos hacer es sustituir el set retorno proceso = NO por otra variable local, a la que asignaremos un 1 o un 0 y en el proceso llamador leer el valor de dicha variable.

Ejemplo

Ejecutamos un proceso en tercer plano que nos devolverá en la variable ESTA_FACTURADO el resultado de la ejecución del proceso de facturación.

Crear manejador de objeto ( proceso_facturacion, Proceso PRO_FACTU@ejemplo )
Disparar objeto ( proceso_facturacion, 3º plano: Servidor (síncrono),  )
    Libre
Get variable local de objeto ( proceso_facturacion, FACTURADO, ESTA_FACTURADO )
If ( ESTA_FACTURADO = 0 )
    Mensaje ( "El proceso de facturación no se ha realizado correctamente", Información, ,  )

Set ítem array de variable local del objeto

Comando de instrucción que permite asignar un valor a un ítem de una variable local de tipo array declarada en un objeto instanciado previamente en el mismo proceso.

Origen de la instrucción: cualquiera.

Destino del subproceso: ninguno.

Parámetros

Manejador del objeto

Identificador o manejador dado al objeto previamente en el proceso por medio del comando de instrucción Crear manejador de objeto.

Identificador de la variable local del objeto

En este parámetro se desplegará una lista que contendrá todas las variables locales del objeto que sean de tipo array; seleccionaremos la deseada.

Fórmula de posición

Posición del array donde está el item. En este parámetro podrá especificar tanto una constante como una expresión fórmula. La primera posición es la número 0.

Fórmula de dato (opcional)

Valor a establecer al item indicado en el parámetro anterior. En este parámetro podrá especificar tanto una constante como una expresión fórmula.

Funcionalidad

Esta instrucción permite asignar valor a un item de una variable local.

Comentarios

El objeto tendrá que haber sido instanciado con anterioridad a la lectura de sus variables, dentro del mismo proceso.

Ejemplo

Disparamos el proceso creado en el manejador de objeto proceso_facturación asignando un valor al ítem 1 al array declarado.

Crear manejador de objeto ( proceso_configuracion, Proceso PRO_FACTU@ejemplo )
Set ítem de variable local array de objeto ( proceso_configuracion, MAT_CONFIG, 1, "VALOR=EJECUTAR" )
Disparar objeto ( proceso_configuracion, 1º plano: servidor (síncrono), OK )
    Libre

Set variable local del objeto

Comando de instrucción que permite obtener el valor de una una variable local declarada en un objeto instanciado previamente en el mismo proceso.

Origen de la instrucción: cualquiera.

Destino del subproceso: ninguno.

Parámetros

Manejador del objeto

Identificador o manejador dado al objeto previamente en el proceso por medio del comando de instrucción Crear manejador de objeto.

Identificador de la variable local del objeto

En este parámetro se desplegará una lista que contendrá todas las variables locales del objeto; seleccionaremos aquella cuyo valor queramos modificar.

Fórmula de dato

En este parámetro se establecerá, por medio de una fórmula, el valor de la variable. Para facilitar su escritura podemos hacer uso del asistente para la edición de fórmulas.

Funcionalidad

Este comando de instrucción permite asignar un valor a una variable local.

Comentarios

El objeto tendrá que haber sido instanciado con anterioridad a la modificación de sus variables, dentro del mismo proceso.

En procesos ejecutados en 3er planoDocumentar como funciona en ambos casos.

Si disparamos un proceso en tercer plano y en éste se ejecuta el comando set retorno proceso NO.

En caso de proceso en tercer o cuarto plano, cuando hay un set retorno no, la información no viaja.

Entre otras cosas además el cliente no espera información ya que puede ser simplemente que el proceso no se ha podido ejecutar.

La opción es no retornar no y retornar una variable indicando el error.

Ejemplo

Creamos un manejador de objeto de un objeto búsqueda para que nos retorne los registros encontrados llevando el resultado a la salida. En el objeto búsqueda hay un índice que nos devolverá los registros dependiendo del valor de la variable TXT_BUS.

Crear manejador de objeto ( bus, Búsqueda PERS_TIP_REL_M@ejemplo )
Set variable local de objeto ( bus, TXT_BUS, TXT_BUS )
Disparar objeto ( bus, No aplicable,  )
    Añadir lista a la salida

Última actualización