# VProjectInfo

Este objeto contiene la información de un proyecto. Tiene funciones para obtener sus propiedades básicas, sus tablas, sus objetos y los proyectos de los que hereda.

Las funciones de tablas y de objetos que empiezan por “all” nos devuelven todas sus tablas u objetos, incluyendo las de sus proyectos heredados. Las otras solo las suyas propias.

## Indice de funciones

### **Generales**

String [alias](#alias)()

Boolean [havePassWord](#boolean-havepassword)()

Number [history](#history)()

String [id](#id)()

Boolean [isNull](#isnull)()

String [name](#name)()

Date [saved](#saved)()

Number [type](#type)()

String [version](#version)()

### **De tablas**

Number [allTableCount](#alltablecount)()

VTableInfo [allTableInfo](#alltableinfo)( Number nIndex )

Number [tableCount](#tablecount)()

VTableInfo [tableInfo](#tableinfo)( Number nIndex )

VTableInfo [tableInfo](#vtableinfo-tableinfo-string-szidprimariotabla-)( String szIdPrimarioTabla )

### **De objetos**

Number [allObjectCount](#allobjectcount)( Number nObjectType )

VObjectInfo [allObjectInfo](#allobjectinfo)( Number nObjectType, Number nObjectIndex )

Number [objectCount](#objectcount)( Number nObjectType )

VObjectInfo [objectInfo](#objectinfo)( Number nObjectType, Number nObjectIndex )

VObjectInfo [objectInfo](#vobjectinfo-objectinfo-number-nobjecttype-string-szidprimario)( Number nObjectType, String szIdPrimario )

VObjectInfo array [subObjectsNotUsed](#vobjectinfo-array-subobjectsnotused-nobjecttype)(nObjectType)

Array [unUsedObjects](#array-unusedobjects)()

### **De herencia**

Number [legacyProjectCount](#legacyprojectcount)()

String [legacyProjectId](#string-legacyprojectid-number-nindex)( Number nIndex )

VProjectInfo [legacyProjectInfo](#legacyprojectinfo)( Number nIndex )

String [legacyProjectName](#string-legacyprojectname-number-nindex)( Number nIndex )

String [legacyProjectVersion](#string-legacyprojectversion-number-nindex)( Number nIndex )

### **De solución**

VSolutionInfo [solutionInfo](#vsolutioninfo-solutioninfo)()

### **De estado**

Boolean [isLocked](#boolean-islocked)()

### De info local

Number [localeInfoCount](#number-localeinfocount)()

Number [localeInfoCountry](#number-localeinfocountry-number-nindex)( Number nIndex )

String [localeInfoCountryString](#string-localeinfocountrystring-number-nindex)( Number nIndex )

Number [localeInfoLanguage](#number-localeinfolanguage-number-nindex)( Number nIndex )

String [localeInfoLanguageString](#string-localeinfolanguagestring-number-nindex)( Number nIndex )

## Enumeraciones

**Tipos de proyectos**

* TypeDat = 0
* TypeApp = 1

## Documentación de funciones

### Funciones generales

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

Devuelve el alias del proyecto.

#### Boolean havePassword()

Devolverá true si el proyecto en curso está protegido con contraseña y false si no lo está.

#### Number history() <a href="#history" id="history"></a>

Devuelve el número de historia del proyecto.

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

Devuelve el identificador del proyecto.

#### Boolean isNull() <a href="#isnull" id="isnull"></a>

Devuelve true si el objeto VProjectInfo es nulo, false si contiene un objeto.

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

Devuelve el nombre del proyecto.

#### Date saved() <a href="#saved" id="saved"></a>

Devuelve la fecha y hora de último cambio del proyecto.

#### Number type() <a href="#type" id="type"></a>

Devuelve el tipo de proyecto.

Ver enumeración de tipos de proyectos.

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

Devuelve la versión del proyecto.

### Funciones de tablas

#### Number allTableCount() <a href="#alltablecount" id="alltablecount"></a>

Devuelve el número total de tablas de todos los proyectos, incluidos los proyectos heredados.

#### VTableInfo allTableInfo( Number nIndex ) <a href="#alltableinfo" id="alltableinfo"></a>

Devuelve el objeto [VTableInfo](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vtableinfo) de una tabla.

Parámetros:

* nIndex: es el nº ordinal de la tabla entre todas las tablas de todos los proyectos.

#### Number tableCount() <a href="#tablecount" id="tablecount"></a>

Devuelve el número de tablas del proyecto de datos.

#### VTableInfo tableInfo( Number nIndex ) <a href="#tableinfo" id="tableinfo"></a>

Devuelve el objeto [VTableInfo](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vtableinfo) de una tabla.

Parámetros:

* nIndex: es el nº ordinal de la tabla en el proyecto de datos

#### VTableInfo tableInfo( String szIdPrimarioTabla )

Devuelve el objeto [VTableInfo](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vtableinfo) de una tabla.

Parámetros:

* szIdPrimarioTabla: identificador primario de la tabla

### Funciones de objetos

#### Number allObjectCount( Number nObjectType ) <a href="#allobjectcount" id="allobjectcount"></a>

Devuelve el número de objetos de un determinado tipo. Esta función incluye objetos de todos los proyectos incluidos los proyectos heredados.

Parámetros:

* nObjectType: tipo de objeto. Ver enumeración de tipos de objeto en la clase [VObjectInfo](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinfo).

#### VObjectInfo allObjectInfo( Number nObjectType, Number nObjectIndex ) <a href="#allobjectinfo" id="allobjectinfo"></a>

Devuelve un objeto [VObjectInfo](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinfo) de un tipo y un identificador. Esta función incluye objetos de todos los proyectos incluidos los proyectos heredados.

Parámetros:

* nObjectType: tipo de objeto. Ver enumeración de tipos de objetos en la clase [VObjectInfo](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinfo).
* nObjectIndex: número de orden del objeto en la lista de objetos de ese tipo.

#### Number objectCount( Number nObjectType ) <a href="#objectcount" id="objectcount"></a>

Devuelve el número de objetos de un tipo. Esta función incluye sólo el proyecto en curso.

Parámetros:

* nObjectType: tipo de objeto. Ver enumeración de tipos de objetos en la clase [VObjectInfo](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinfo).

#### VObjectInfo objectInfo( Number nObjectType, Number nObjectIndex ) <a href="#objectinfo" id="objectinfo"></a>

Devuelve un objeto [VObjectInfo](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinfo) de un tipo y del número de orden de la lista. Esta función incluye sólo el proyecto en curso.

Parámetros:

* nObjectType: tipo de objeto. Ver enumeración de tipos de objeto en la clase [VObjectInfo](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinfo).
* nObjectIndex: número de orden del objeto en la lista de objetos de ese tipo.

#### VObjectInfo objectInfo( Number nObjectType, String szIdPrimario )

Devuelve un objeto [VObjectInfo](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinfo) del proyecto en curso de un tipo y un identificador. Esta función incluye sólo el proyecto en curso.

Parámetros:

* nObjectType: tipo de objeto. Ver enumeración de tipos de objeto en la clase [VObjectInfo](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinfo).
* szIdPrimario: identificador del objeto.

#### [VObjectInfo](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinfo) array subObjectsNotUsed(NObjectType)

Devuelve un array de [objectinfos](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinfo) de todos los objetos y subobjetos no usados del proyecto.&#x20;

Parámetros:

* nObjectType: tipo de objeto. Ver enumeración de tipos de objeto en la clase [VObjectInfo](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinfo).

Si se especifica el tipo devuelve solo los de ese tipo, si no se pasa parámetro los devuelve todos.

#### Array unUsedObjects()&#x20;

Devuelve un array de [objectinfos](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinfo) de todos los objetos que no se usan en el proyecto.

### Funciones de herencia

#### Number legacyProjectCount() <a href="#legacyprojectcount" id="legacyprojectcount"></a>

Devuelve el número de proyectos heredados del proyecto en curso.

#### String legacyProjectId( Number nIndex )

Devuelve el identificador del proyecto que hereda.

Parámetros:

* nIndex: número de orden del proyecto en la lista de proyectos heredados.

#### VProjectInfo legacyProjectInfo( Number nIndex ) <a href="#legacyprojectinfo" id="legacyprojectinfo"></a>

Devuelve un objeto VProjectInfo.

Parámetros:

* nIndex: número de orden del proyecto en la lista de proyectos heredados

#### String legacyProjectName( Number nIndex )

Devuelve el nombre del proyecto que hereda.

Parámetros:

* nIndex: número de orden del proyecto en la lista de proyectos heredados.

#### String legacyProjectVersion( Number nIndex )

Devuelve la versión del proyecto que hereda.

Parámetros:

* nIndex: número de orden del proyecto en la lista de proyectos heredados.

### Funciones de solución

#### [VSolutionInfo](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vsolutioninfo) solutionInfo()

‌Devuelve la solución de un proyecto.

‌Esta función está sólo disponible para su uso en [extensiones](https://doc.velneo.com/velneo-vdevelop/extensiones-de-velneo-vdevelop) de Velneo vDevelop.

### Funciones de estado

#### Boolean isLocked()

Devolverá true si el proyecto en curso ya está abierto en edición y false si no lo está.

### Funciones de info local

#### Number localeInfoCount()

Devuelve el número de idiomas del proyecto.

#### Number localeInfoCountry( Number nIndex )

Devuelve el código del pais del idioma del proyecto.&#x20;

Parámetros:

* nIndex: número de orden del idioma del proyecto en la lista de idiomas configurados.

Ver [enum de países](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/vobjectinfo/vobjectinfo-enumeraciones#paises).

#### String localeInfoCountryString( Number nIndex )

Devuelve el nombre del pais del idioma del proyecto.

Parámetros:

* nIndex: número de orden del idioma del proyecto en la lista de idiomas configurados.

Ver [enum de países](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/vobjectinfo/vobjectinfo-enumeraciones#paises).

#### Number localeInfoLanguage( Number nIndex )

Devuelve el código del idioma del proyecto.

Parámetros:

* nIndex: número de orden del idioma del proyecto en la lista de idiomas configurados.

Ver [enum de idiomas](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/vobjectinfo/vobjectinfo-enumeraciones#idiomas).

#### String localeInfoLanguageString( Number nIndex )

Devuelve el nombre del idioma del proyecto.

Parámetros:

* nIndex: número de orden del idioma del proyecto en la lista de idiomas configurados.

Ver [enum de idiomas](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/vobjectinfo/vobjectinfo-enumeraciones#idiomas).

## Ejemplos

### 1. Recorre todas las tablas históricas de un proyecto (heredadas incluidas)

```javascript
var mainProject = theApp.mainProjectInfo();

for( var nIndex=0; nIndex < mainProject.allTableCount(); nIndex++ )
{
    var tableInfo = mainProject.allTableInfo( nIndex );

    if (tableInfo.type() == 1)
    {
        var nameTable = tableInfo.name();
        ....
    }
}
```

### 2. Mostrar los datos del proyecto en curso

```javascript
////////////////////////////////////////////////////////////
// Mostrar los datos del proyecto en curso

var proyecto = theApp.mainProjectInfo();
var info = proyecto_datos( proyecto );
alert( "El proyecto principal tiene la siguiente información: \n\n" + 
        "Id = " + info[0] + "\n" + 
        "Alias = " + info[1] + "\n" + 
        "Tipo = " + info[2] + "\n" + 
        "Nombre = " + info[3] + "\n" + 
        "Versión = " + info[4] + "\n" + 
        "Ultimo cambio = " + info[5] + "\n" + 
        "Nº historia = " + info[6] );


////////////////////////////////////////////////////////////
// Almacenar datos generales de un proyecto
// proyecto = Proyecto del que se extraerá la información

function proyecto_datos( proyecto )
{    
    var datos = new Array();

    datos[0] = proyecto.id();
    datos[1] = proyecto.alias();
    datos[2] = proyecto.type();
    datos[3] = proyecto.name();
    datos[4] = proyecto.version();
    datos[5] = proyecto.saved();
    datos[6] = proyecto.history();

    return( datos );
}
```

### 3. Mostrar los datos de los proyectos heredados

```javascript
////////////////////////////////////////////////////////////
// Mostrar los datos de los proyectos heredados

var proyecto = theApp.mainProjectInfo();
var msg = "";
var resultado = proyectos_info( proyecto );
alert( msg, "Información de herencia" );


////////////////////////////////////////////////////////////
// Almacenar datos generales de un proyecto
// proyecto = Proyecto del que se extraerá la información

function proyectos_info( proyecto )
{    
    // Se compone el mensaje final a mostrar
    msg += "Proyecto heredado: " + proyecto.name() + " (" + proyecto.alias() + ")" + "\n" +  
        "Nº tablas: " + proyecto.objectCount( VObjectInfo.TypeTable) + "; " + "\n" + 
        "Nº tablas estáticas: " + proyecto.objectCount( VObjectInfo.TypeStaticTable) + "; " + "\n" + 
        "Nº esquemas: " + proyecto.objectCount( VObjectInfo.TypeScheme) + "\n\n";
    alert ( proyecto.name() );

    // Se analiza si el proyecto tiene otros proyectos heredados
    var num_pry_heredados = proyecto.legacyProjectCount();

    // Por cada proyecto heredado se ejecuta la función de forma reentrante hasta procesar todos los proyectos
    for ( var x = 0; x < num_pry_heredados; x++ )
    {
        var proyecto_heredado = proyecto.legacyProjectInfo( x );
        resultado = proyectos_info( proyecto_heredado );
    }
}
```


---

# 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/velneo-vdevelop/scripts/lenguajes/javascript/clases/vprojectinfo.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.
