# VExtension

Este clase representa la extensión en Velneo vDevelop. Dispone de funciones para ver información de los proyectos, acceso a la solución, etc.

### El objeto theExtension

Todos los scripts de extensiones en Velneo vDevelop están conectados a un objeto global y único que representa la extensión cuyo nombre es theExtension. Para ello, debemos incluir en nuestro código QML el import correspondiente:

```javascript
import VExtensions 2.0
```

También está disponible el objeto [theApp](https://doc.velneo.com/31/velneo-vdevelop/scripts/lenguajes/javascript/vapp#theapp) en Velneo vDevelop, a través de la función [theApp](#theapp)() de esta clase, del cuál podemos usar las funciones que tienen sentido en edición.

Los grupos de funciones disponibles son: generales, proyectos, cursor, constantes, DOS: directorios, DOS: ficheros, info local actual, info local del sistema, impresoras, multimedia y la función sysInfo. Los grupos no disponibles son: variables globales, variables globales array, variables de sistema, sistema, mantenimiento de Base de datos, tablas estáticas, cestas, impresión de informes, mensajería interna, vista de datos, estilos, TLS/SSL.

### Herencia

Hay que tener en cuenta que la extensión da acceso al proyecto principal con el que se ha arrancado la aplicación y todos sus objetos heredados lo que permite el acceso y uso de cualquier objeto de la aplicación desde cualquier script.

Está disponible en scripts ejecutados en Velneo vDevelop.

## Indice de funciones

### **De aplicación**

theApp [theApp](#theapp)()

### **De configuración**

void [executeExtension](#executeextension)( String szExtension )

String [extensionDirPath](#extensiondirpath)()

void [setAutoClose](#setautoclose)( Boolean bAutoCerrar )

void [setDialog](#setdialog)( Boolean bDialogo )

void [setFixedSize](#setfixedsize)( Boolean bFijo )

### **De ventana**

void [close](#close)()

void [setWindowTypeFlags](#setwindowtypeflags)( flags )

### **De conexión**

Number [connectServer](#connectserver)( String szVRL, String szUsuario, String, szContraseña )

Boolean [connectServerDialog](#connectserverdialog)( String szVRL, String szUsuario, String, szContraseña )

Boolean [isConnected](#isconnected)()

### **De solución**

VSolutionInfo [currentSolutionInfo](#currentsolutioninfo)()

VSolutionInfo [newSolution](#newsolution)()

void [openSolution](#opensolution)( String szVRL, String szUsuario, String, szContraseña )

void [openSolutionDialog](#opensolutiondialog)()

Boolean [runInstallWizard](#runinstallwizard)( String szSendaInstalador )

void [runSolution](#runsolution)()

Array [solutionInfos](#array-solutionsinfos)()&#x20;

### **De proyecto**

VProjectInfo [currentProjectInfo](#currentprojectinfo)()

Number [projectCount](#projectcount)( Number nProjectType )

VProjectInfo [projectInfo](#vprojectinfo-projectinfo-number-nprojecttype-int-index)( Number nProjectType, int index)

Array [projectInfos](#array-projectinfos-number-nprojecttype)( Number nProjectType )

void [openProject](#void-openproject-vprojectinfo-projectinfo)( VProjectInfo projectInfo, Boolean bOpenTabs  )

void [openProjectReadOnly](#void-openprojectreadonly-vprojectinfo-projectinfo-boolean-bopentabs)( VProjectInfo projectInfo, Boolean bOpenTabs)

### **De objeto**

VObjectInfo [currentObjecInfo](#currentobject)()

void [openObject](#void-openobject-vobjectinfo-objectinfo-)( VObjectInfo objectInfo )

Array [searchObjects](#array-searchobjects-array-de-vprojectinfo-sztexto-ncasesensitive)(\[Array de VProjectInfo], szTtexto, number caseSensitive)

### **De instancias**

VInstanceList [appInstances](#appinstances)( VSolutionInfo solucion )

VInstanceList [datInstances](#datinstances)( VSolutionInfo solucion )

### **De directorios**

VDir [newDir](#newdir)()

### **De ficheros**

VFile [newFile](#newfile)( String szSenda )

VTextFile [newTextFile](#newtextfile)( String szSenda )

### **De sistema**

VClipboard [clipboard](#vclipboard-clipboard)()

VSettings [newSettings](#newsettings)( String szOrganizacion, String szAplicacion )

### **De base de datos externas**

VSqlDataBase [newSqlDatabase](#newsqldatabase)()

### **De webservice**

XMLHttpRequest [newXMLHttpRequest](#newxmlhttprequest)()

## Documentación de funciones

### Funciones de aplicación

#### theApp() <a href="#theapp" id="theapp"></a>

Devuelve el objeto [theApp](https://doc.velneo.com/31/velneo-vdevelop/scripts/lenguajes/javascript/vapp#el-objeto-theapp) correspondiente en cada momento.

### Funciones de configuración

#### String extensionDirPath() <a href="#extensiondirpath" id="extensiondirpath"></a>

Devuelve la senda en disco de la extensión en curso.

#### void executeExtension( String szExtension ) <a href="#executeextension" id="executeextension"></a>

Ejecuta la extensión que pasemos como parámetro.

Parámetros:

* szExtension: nombre de la extensión a ejecutar.

#### void setAutoClose( Boolean bAutoCerrar ) <a href="#setautoclose" id="setautoclose"></a>

Establece que la ventana de la extensión en curso se cierre cuando cambiamos de proyecto.

Parámetros:

* bAutoCerrar: true o false para definir si queremos que se cierre de forma automática al cambiar de proyecto o no.

#### void setDialog( Boolean bDialogo ) <a href="#setdialog" id="setdialog"></a>

Establece que la ventana de la extensión en curso se muestre construya en modo diálogo.

Parámetros:

* bDialogo: true o false para definir si queremos que la extensión se construya en modo diálogo o no.

{% hint style="info" %}
Ha de usarse en la construcción del componente QML principal para que tenga efecto.
{% endhint %}

#### void setFixedSize( Boolean bFijo ) <a href="#setfixedsize" id="setfixedsize"></a>

Establece cuando la ventana está en diálogo si es posible redimensionarla o no.

Parámetros:

* bFijo: booleano que define si es fijo (true) o redimensionable (false).

### Funciones de ventana

#### void close() <a href="#close" id="close"></a>

Cierra la ventana de la extensión, finalizando su ejecución.

#### void setWindowTypeFlags( flags ) <a href="#setwindowtypeflags" id="setwindowtypeflags"></a>

Establece la configuración de la ventana cuando está en diálogo.

Parámetros:

* flags: flags que definen las opciones disponibles. Ver [enum de flags](https://doc.velneo.com/31/velneo-vdevelop/scripts/lenguajes/javascript/clases/vextension-enumeraciones#flags-de-ventana-de-dialogo).

{% hint style="info" %}
El soporte y correcto funcionamiento de los flags depende enteramente del sistema operativo.
{% endhint %}

### Funciones de conexión

#### Number connectServer( String szVRL, String szUsuario, String, szContraseña ) <a href="#connectserver" id="connectserver"></a>

Conecta con el servidor de Velneo cuya URL indicamos como parámetro, usando el usuario y contraseña especificados.

Parámetros:

* szVRL: VRL del servidor: "vatp\://dominio\_ip:puerto".
* szUsuario: nombre del usuario.
* szContraseña: contraseña del usuario.

Para retorno de errores ver [enum de Errores de conexión](https://doc.velneo.com/31/velneo-vdevelop/scripts/lenguajes/javascript/clases/vextension-enumeraciones#errores-de-conexion).

#### Boolean connectServerDialog( String szVRL, String szUsuario, String, szContraseña ) <a href="#connectserverdialog" id="connectserverdialog"></a>

Muestra el cuadro de diálogo estándar de conexión con el servidor de Velneo.

Parámetros:

* szVRL: VRL del servidor: "vatp\://dominio\_ip:puerto".
* szUsuario: nombre del usuario.
* szContraseña: contraseña del usuario.

Retorna true si se ha realizado la conexión, false si no se ha realizado y el usuario cancela.

Si tiene cubiertos los 3 parámetros se conectará directamente.

Y Si tiene cubiertos los 3 parámetros y no es posible realizar la conexión se mostrará el cuadro de diálogo con el error.

Y Si no tiene cubiertos los 3 parámetros se mostrará siempre el cuadro de diálogo con los datos recibidos.

#### Boolean isConnected() <a href="#isconnected" id="isconnected"></a>

Retorna true o false en función de si estamos conectados con el servidor de Velneo o no.

### Funciones de solución

#### VSolutionInfo currentSolutionInfo() <a href="#currentsolutioninfo" id="currentsolutioninfo"></a>

Devuelve un objeto [VSolutionInfo ](https://doc.velneo.com/31/velneo-vdevelop/scripts/lenguajes/javascript/clases/vsolutioninfo)de la solución en curso.

#### VSolutionInfo newSolution() <a href="#newsolution" id="newsolution"></a>

Abre el cuadro de diálogo de nueva solución.

#### void openSolution( String szVRL, String szUsuario, String, szContraseña ) <a href="#opensolution" id="opensolution"></a>

Abre la solución cuya VRL pasemos como parámetro.

Parámetros:

* szVRL: vrl de la solución a abrir. Debe seguir la siguiente sintaxis:

`vatp[s]://IP_SERVIDOR///NOMBRE_SOLUCION")`

* szUsuario: nombre del usuario.
* szContraseña: contraseña del usuario.

Si tiene cubiertos los 3 parámetros se conectará directamente y abrirá la solución.

Y Si tiene cubiertos los 3 parámetros y no es posible realizar la conexión se mostrará el cuadro de diálogo con el error.

Y Si no tiene cubiertos los 3 parámetros se mostrará siempre el cuadro de diálogo con los datos recibidos.

Ejemplo:

```javascript
theExtension.openSolution("vatp://127.0.0.1///vERP_2", "velneo", "1234")
```

#### void openSolutionDialog() <a href="#opensolutiondialog" id="opensolutiondialog"></a>

Abre el cuadro de diálogo "abrir solución" de [Velneo vDevelop](https://doc.velneo.com/31/velneo-vdevelop/introduccion). En el caso de que no estemos conectados con un servidor, presentará antes la ventana de conexión con el servidor.

#### Boolean runInstallWizard( String szSendaInstalador ) <a href="#runinstallwizard" id="runinstallwizard"></a>

Inicia el asistente de instalación de un fichero con extensión .vin que indiquemos como parámetro.

Parámetros:

* szSendaInstalador: senda del instalador .vin que vamos a instalar.

#### void runSolution() <a href="#runsolution" id="runsolution"></a>

Inicia la ejecución de la solución en curso. Debe tener instancias creadas previamente.

#### Array solutionsInfos()‌&#xD;

Devuelve un array con los [VSolutionInfo](https://doc.velneo.com/31/velneo-vdevelop/scripts/lenguajes/javascript/clases/vsolutioninfo) de todas las soluciones que están abiertas en Velneo vDevleop.

### Funciones de proyecto

#### VProjectInfo currentProjectInfo() <a href="#currentprojectinfo" id="currentprojectinfo"></a>

Devuelve el objeto [VProjectInfo](https://doc.velneo.com/31/velneo-vdevelop/scripts/lenguajes/javascript/clases/vprojectinfo) del proyecto principal en curso.

#### Number projectCount( Number nProjectType ) <a href="#projectcount" id="projectcount"></a>

Devuelve el número de proyectos cargados en ese momento en Velneo vDevelop del tipo que pasemos como parámetro.

Parámetros:

* nProjectType: tipo de proyecto. Ver [enum de tipos de proyecto](https://doc.velneo.com/31/velneo-vdevelop/scripts/lenguajes/javascript/vprojectinfo#enumeraciones).

{% hint style="warning" %}
Sólo es funcional en extensiones de Velneo vDevelop.
{% endhint %}

#### VProjectInfo projectInfo( Number nProjectType, int index)

Devuelve un objeto de la clase [VProjectInfo](https://doc.velneo.com/31/velneo-vdevelop/scripts/lenguajes/javascript/clases/vprojectinfo) correspondiente al tipo de proyecto (datos o aplicación) y a la posición de la lista de proyectos encontrados con la función [projectCount](#projectcount).

Parámetros:

* nProjectType: tipo de proyecto. Ver [enum de tipos de proyecto](https://doc.velneo.com/31/velneo-vdevelop/scripts/lenguajes/javascript/vprojectinfo#enumeraciones).
* index:  número del proyecto, se suele usar un bucle for para recorrerlos.

#### Array projectInfos( Number nProjectType )&#xD;

‌Devuelve un array que contiene los [VProjectInfo](https://doc.velneo.com/31/velneo-vdevelop/scripts/lenguajes/javascript/clases/vprojectinfo) de todos los proyectos cargados en la aplicación.

Parámetros:

* nProjectType: tipo de proyecto. Ver [enum de tipos de proyecto](#enumeraciones).

#### void openProject( VProjectInfo projectInfo, Boolean bOpenTabs )

Abre el proyecto en el editor cuyo puntero pasamos como parámetro.

Parámetros:

* projectInfo: objeto correspondiente al proyecto.
* bOpenTabs: si se pone a false evita que se abran las pestañas del proyecto cuando se abre.

#### void openProjectReadOnly( [VProjectInfo](https://doc.velneo.com/31/velneo-vdevelop/scripts/lenguajes/javascript/clases/vprojectinfo) projectInfo, Boolean bOpenTabs)

Abre en el editor en modo de solo lectura el proyecto cuyo puntero pasamos como parámetro.

Parámetros:

projectInfo: objeto correspondiente al proyecto.

bOpenTabs: si se pone a false evita que se abran las pestañas del proyecto cuando se abre.

### Funciones de objeto

#### VObjectInfo currentObjectInfo() <a href="#currentobject" id="currentobject"></a>

Permite acceder al objeto seleccionado en el editor en el proyecto en curso, retornando el correspondiente [VObjectInfo](https://doc.velneo.com/31/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinfo).

#### void openObject( VObjectInfo objectInfo )

Abre el objeto en el editor cuyo puntero pasamos como parámetro.

Parámetros:

* objectInfo: VObjetoInfo del objeto que queremos abrir.

#### Array searchObjects(\[Array de VProjectInfo], szTexto, nCaseSensitive)&#xD;

‌Permite buscar un texto en las propiedades de los objetos de los proyectos que se le pasen como parámetro y retorna un array de objetos JavaScript. Cada elemento del array retornado contiene los elementos siguientes:

**objectInfo**: el [VObjectInfo](https://doc.velneo.com/31/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinfo) del objeto encontrado.

‌**parentObjectInfo**: el [VObjectInfo](https://doc.velneo.com/31/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinfo) del objeto padre del objeto encontrado.‌

**mainObjectInfo**: el [VObjectInfo](https://doc.velneo.com/31/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinfo) del objeto principal del objeto encontrado.

‌**solutionInfo**: la solución ([VSolutionInfo](https://doc.velneo.com/31/velneo-vdevelop/scripts/lenguajes/javascript/clases/vsolutioninfo)) a la que pertenece el objeto encontrado.

‌**project**: el proyecto ([VProjectInfo](https://doc.velneo.com/31/velneo-vdevelop/scripts/lenguajes/javascript/clases/vprojectinfo)) al que pertenece el objeto encontrado

‌**propertyNumber (Number)**: número de la propiedad, dentro del árbol de propiedades del objeto, que contiene el texto buscado.‌

**propertyName (String)**: nombre de la propiedad, dentro del árbol de propiedades del objeto, que contiene el texto buscado.‌

**propertyData (String)**: contenido completo de la propiedad, dentro del árbol de propiedades del objeto, donde está el texto buscado.

‌Parámetros:‌

* Array de VProjectInfo: pasaremos un array con los VProjectInfo en los que queramos hacer la búsqueda.
* szTexto: cadnea de texto a buscar.
* Number caseSensitive: especificaremos un 1 si queremos que la búsqueda se haga respetando mayúsculas y minúsculas y un 0 en caso contrario.

### Funciones de instancias

#### VInstanceList appInstances( VSolutionInfo solucion ) <a href="#appinstances" id="appinstances"></a>

Retorna un objeto VInstanceList que contiene la lista de instancias de aplicación de la solución en curso.

Parámetros:

* solucion: objeto [VSolutionInfo](https://doc.velneo.com/31/velneo-vdevelop/scripts/lenguajes/javascript/clases/vsolutioninfo) que representa la solución de la que queremos conocer las instancias disponibles.

{% hint style="info" %}
Solo disponible para extensiones de Velneo vDevelop
{% endhint %}

#### VInstanceList datInstances( VSolutionInfo solucion ) <a href="#datinstances" id="datinstances"></a>

Retorna un objeto VInstanceList que contiene la lista de instancias de datos de la solución en curso.

Parámetros:

* solucion: objeto [VSolutionInfo](https://doc.velneo.com/31/velneo-vdevelop/scripts/lenguajes/javascript/clases/vsolutioninfo) que representa la solución de la que queremos conocer las instancias disponibles.

{% hint style="info" %}
Solo disponible para extensiones de Velneo vDevelop.
{% endhint %}

### Funciones de directorios

#### VDir newDir() <a href="#newdir" id="newdir"></a>

Crea un objeto [VDir](https://doc.velneo.com/31/velneo-vdevelop/scripts/lenguajes/javascript/clases/vdir) para la gestión de un directorio que pasemos como parámetro.

### Funciones de ficheros

#### VFile newFile( String szSenda ) <a href="#newfile" id="newfile"></a>

Crea un objeto [VFile](https://doc.velneo.com/31/velneo-vdevelop/scripts/lenguajes/javascript/clases/vfile) para la gestión del fichero en disco que especificamos como parámetro.

Parámetros:

* szSenda: senda del fichero en disco.

#### VTextFile newTextFile( String szSenda ) <a href="#newtextfile" id="newtextfile"></a>

Crea un objeto [VTextFile](https://github.com/velneo/documentacion-de-velneo/tree/c9b0a763081be854a33d8ab459aa288833ea168d/vtextfile.md) para la gestión del fichero del texto en disco que especificamos como parámetro.

Parámetros:

* szSenda: senda del fichero de texto en disco.

### Funciones de sistema

#### [VClipboard](https://doc.velneo.com/31/velneo-vdevelop/scripts/lenguajes/javascript/clases/vclipboard) clipboard()

Devuelve un objeto del tipo VClipboard que nos permite acceder al portapapeles en curso o establecer un nuevo contenido en el portapapeles.

#### VSettings newSettings( String szOrganizacion, String szAplicacion ) <a href="#newsettings" id="newsettings"></a>

Crea un objeto [VSettings](https://doc.velneo.com/31/velneo-vdevelop/scripts/lenguajes/javascript/clases/vsettings) para la gestión de una rama de configuración del sistema correspondiente a la Organización y la aplicación que pasemos como parámetro.

Parámetros:

* szOrganizacion: rama de la organizacion en la que queremos establecer o leer un valor.
* szAplicacion: rama de la aplicación en la que queremos establecer o leer un valor.

{% hint style="info" %}
En Windows se accede al registro, en linux a ficheros con extensión .ini y en mac a ficheros con extensión .plist.
{% endhint %}

### Funciones de base de datos externas

#### VSqlDataBase newSqlDatabase() <a href="#newsqldatabase" id="newsqldatabase"></a>

Inicializa un acceso a base de datos externa. Devuelve el puntero al acceso a base de datos externa.

Debemos hacer uso del subapi de Bases de datos externas para configurar el acceso y conectarnos para operar.

### Funciones de webservice

#### XMLHttpRequest newXMLHttpRequest() <a href="#newxmlhttprequest" id="newxmlhttprequest"></a>

Crea un nuevo objeto [XMLHttpRequest](https://doc.velneo.com/31/velneo-vdevelop/scripts/lenguajes/javascript/clases/xmlhttprequest) para la obtención de URL's para el acceso a webservices.

### Ejemplos

### Ejemplo de uso de las funciones de configuración de extensión

```javascript
Rectangle
{
    id: componentePrincipal

    width: 800
    height: 600

    Component.onCompleted:
    {
        theExtension.setDialog( true );
        theExtension.setWindowTypeFlags( VExtension.WindowTypeDialog | VExtension.WindowTypeCustomizeWindowHint | VExtension.WindowTypeWindowTitleHint );
        theExtension.setFixedSize(true);    
    }
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://doc.velneo.com/31/velneo-vdevelop/scripts/lenguajes/javascript/clases/vextension.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
