# 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/33/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/33/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/33/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/33/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/33/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/33/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/33/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/33/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/33/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/33/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/33/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinfo).
* szIdPrimario: identificador del objeto.

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

Devuelve un array de [objectinfos](https://doc.velneo.com/33/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/33/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/33/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/33/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/33/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/33/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/33/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/33/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/33/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 );
    }
}
```
