# 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,](../../../proyecto-de-aplicacion) etc.

## Añadir ficha al objeto

Comando de instrucción del grupo de Comandos de objetos 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.](#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.

## Añadir lista al objeto

Comando de instrucción del grupo de Comandos de objetos 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.

## Crear manejador de objeto

Comando de instrucción del grupo Comandos de objeto 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.

### **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,](#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.

## Disparar objeto

Comando de instrucción del grupo Comandos de objetos 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.

**2º plano: Local multitarea**

Este comando no admite la ejecución de procesos en segundo plano (multitarea), ya que se trata de un comando de interfaz.

**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.

**4º plano: Servidor (no espera retorno)**

El subproceso será ejecutando en 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 secuencialmente.

#### Identificador de variable local booleana de retorno de ok

Variable local.

### **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 plano, ya que éstos no son ejecutados en multitarea.

Para la ejecución de procesos en segundo plano debemos usar el comando [Ejecutar proceso.](https://github.com/velneo/documentacion-de-velneo/tree/a39e5221e9d22523460b032908c3e12a4e73a558/ejecutar-proceso.md)

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”.

| **AVISO**: 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á. |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

## Get ítem array de variable local de objeto

Comando de instrucción del grupo de Comandos de objetos 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.

## Get variable local de objeto

Comando de instrucción del grupo de Comandos de objetos 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.

| **NOTA**: Si disparamos un proceso en tercer plano y en dicho proceso se usa el comando [set retorno proceso = NO](../../basicos/salidaretornos#set-retorno--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](../../basicos/salidaretornos#set-retorno--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. |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

## Set ítem array de variable local del objeto

Comando de instrucción del grupo de Comandos de objetos 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.

## Set variable local del objeto

Comando de instrucción del grupo de Comandos de objetos 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.
