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

## Funciones

**Generales**

| Retorno | Función               |
| ------- | --------------------- |
| String  | [alias](#alias)()     |
| Number  | [history](#history)() |
| String  | [id](#id)()           |
| Boolean | [isNull](#isnull)()   |
| String  | [name](#name)()       |
| Date    | [saved](#saved)()     |
| Number  | [type](#type)()       |
| String  | [version](#version)() |

**De tablas**

| Retorno                                                                                                | Función                                                                                  |
| ------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------- |
| Number                                                                                                 | [allTableCount](#alltablecount)()                                                        |
| [VTableInfo](https://doc.velneo.com/23/velneo-vdevelop/scripts/lenguajes/javascript/clases/vtableinfo) | [allTableInfo](#alltableinfo)( Number nIndex )                                           |
| Number                                                                                                 | [tableCount](#tablecount)()                                                              |
| [VTableInfo](https://doc.velneo.com/23/velneo-vdevelop/scripts/lenguajes/javascript/clases/vtableinfo) | [tableInfo](#tableinfo)( Number nIndex )                                                 |
| [VTableInfo](https://doc.velneo.com/23/velneo-vdevelop/scripts/lenguajes/javascript/clases/vtableinfo) | [tableInfo](#vtableinfo-tableinfo-string-szidprimariotabla-)( String szIdPrimarioTabla ) |

**De objetos  (Act.)**

| Retorno                                                                                                  | Función                                                                                                                  |
| -------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| Number                                                                                                   | [allObjectCount](#allobjectcount)( Number nObjectType )                                                                  |
| [VObjectInfo](https://doc.velneo.com/23/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinfo) | [allObjectInfo](#allobjectinfo)( Number nObjectType, Number nObjectIndex )                                               |
| Number                                                                                                   | [objectCount](#objectcount)( Number nObjectType )                                                                        |
| [VObjectInfo](https://doc.velneo.com/23/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinfo) | [objectInfo](#objectinfo)( Number nObjectType, Number nObjectIndex )                                                     |
| [VObjectInfo](https://doc.velneo.com/23/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinfo) | [objectInfo](#vobjectinfo-objectinfo-number-nobjecttype-string-szidprimario-)( Number nObjectType, String szIdPrimario ) |

**De herencia**

| Retorno      | Función                                                  |
| ------------ | -------------------------------------------------------- |
| Number       | [legacyProjectCount](#legacyprojectcount)()              |
| VProjectInfo | [legacyProjectInfo](#legacyprojectinfo)( 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.

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

### Funciones de herencia

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

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

#### 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

## 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 );
    }
}
```
