# VTableInfo

Las funciones de esta clase permiten acceder a la información de la estructura de una tabla.

Tiene funciones generales de la tabla, como ver su id o su tipo, y funciones para obtener información de sus subobjetos: campos, indices e históricos.

También nos permite obtener otros VTablaInfo de las tablas enlazadas como maestros o históricos.

## Indice de funciones

### **De tabla**

String [comments](#comments)()

String [id](#id)()

String [idRef](#idref)()

Boolean [isInMemory](#isinmemory)()

&#x20;String [name](#name)()

Number [registerLength](#registerlength)()

String [singleName](#singlename)()

Number [type](#type)()

### **De campos**

Number [fieldBindType](#fieldbindtype)( Number nCampo )

String [fieldBoundedTableId](#fieldboundedtableid)( Number nCampo )

VTableInfo [fieldBoundedTableInfo](#fieldboundedtableinfo)( Number nPlural )

Number [fieldBufferLen](#fieldbufferlen)( Number nCampo )

String [fieldComments](#fieldcomments)( Number nCampo )

String [fieldComments](#fieldcomments)( String szIdCampo )

Number [fieldCount](#fieldcount)()

Number [fieldDecimals](#fielddecimals)( Number nCampo )

String [fieldId](#fieldid)( Number nCampo )

Boolean [fieldIsSigned](#fieldissigned)( Number nCampo )&#x20;

Number [fieldMaximumValue](#fieldmaximumvalue)( Number nCampo )

Number [fieldMinimumValue](#fieldminimumvalue)( Number nCampo )

String [fieldName](#fieldname)( Number nCampo )

String [fieldName](#string-fieldname-number-ncampo-number-nlenguaje-number-npais0-)( Number nCampo, Number nLenguaje, \[Number nPais=0] )

String [fieldName](#string-fieldname-string-szidprimariocampo-)( String szIDPrimarioCampo )

String [fieldName](#string-fieldname-string-szidprimariocampo-number-nlenguaje-number-npais0-)( String szIDPrimarioCampo, Number nLenguaje, \[Number nPais=0] )

Number [fieldObjectType](#fieldobjecttype)( Number nCampo )

String [fieldParentFieldId](#fieldparentfieldid)( Number nCampo )

Number [fieldParentFieldNumber](#fieldparentfieldnumber)( Number nCampo )

Number [fieldType](#fieldtype)( Number nCampo )

### **De índices**

Number [indexCount](#indexcount)()

String [indexId](#indexid)( Number nIndex )

String [indexName](#indexname)( Number nIndex )

Number [indexType](#indextype)( Number nIndex )

### **De históricos**

String [pluralBoundedIndexId](#pluralboundedindexid)( Number nPlural )

VObjectInfo [pluralBoundedIndexInfo](#pluralboundedindexinfo)( Number nPlural )

String [pluralBoundedTableId](#pluralboundedtableid)( Number nPlural )

VTableInfo [pluralBoundedTableInfo](#pluralboundedtableinfo)( Number nPlural )

Number [pluralCount](#pluralcount)()

String [pluralId](#pluralid)( Number nPlural )

String [pluralName](#pluralname)( Number nPlural )

### **De localizadores por Id**

Number [findField](#findfield)( String szIDPrimarioCampo )

Number [findIndex](#findindex)( String szIDPrimarioIndice )

Number [findPlural](#findplural)( String szIDPrimarioHist )

## Documentación de funciones

### Funciones de tabla

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

Devuelve el valor de la propiedad comentarios de la tabla.

Esta función se ha incorporado al API a partir de la versión 7.14

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

Devuelve el identificador de la tabla. Por ejemplo: "CLIENTES".

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

Devuelve el idRef (Alias\_Aplicación/Id\_Tabla) de la tabla. Por ejemplo: "ERP/CLIENTES".

#### Boolean isInMemory() <a href="#isinmemory" id="isinmemory"></a>

Devuelve true si la tabla reside en memoria.

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

Devuelve el nombre plural de la tabla en el idioma configurado. Si no se especifican valores asume el idioma en curso. El código de país es opcional.

Parámetros:

* nLenguage: código del idioma. Ver tabla de idiomas en documentación de Qt.
* nPais: código del país. Ver tabla de idiomas en documentación de Qt.

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

Devuelve la longitud en bytes del registro de la tabla.

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

Devuelve el nombre singular de la tabla.

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

Devuelve el código de tipo de tabla. Ver [enum de tipos de tablas](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vtableinfo-enumeraciones#tipos-de-tablas).

### Funciones de campos

#### Numer fieldBindType( Number nCampo ) <a href="#fieldbindtype" id="fieldbindtype"></a>

Devuelve el tipo de enlace del campo. Ver [enum de tipos de enlaces de campo](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vtableinfo-enumeraciones#tipos-de-campo).

Parámetros:

* nCampo: número de campo, el primero es el 0.

#### String fieldBoundedTableId( Number nCampo ) <a href="#fieldboundedtableid" id="fieldboundedtableid"></a>

Devuelve el identificador de la tabla enlazada.

Parámetros:

* nCampo: número de campo, el primero es el 0.

#### VTableInfo fieldBoundedTableInfo( Number nPlural ) <a href="#fieldboundedtableinfo" id="fieldboundedtableinfo"></a>

Devuelve un objeto de la clase VTableInfo de la tabla enlazada.

Parámetros:

* nPlural: número ordinal del plural en la tabla.

#### Number fieldBufferLen( Number nCampo ) <a href="#fieldbufferlen" id="fieldbufferlen"></a>

Devuelve el tamaño en bytes de los caracteres que admite el buffer del campo. Por ejemplo un campo Alfa40 de 2 bytes de buffer, que puede almacenar 3 caracteres, devolverá 2.

Parámetros:

* nCampo: número de campo, el primero es el 0.

#### String fieldComments( Number nCampo ) <a href="#fieldcomments" id="fieldcomments"></a>

Devuelve el valor de la propiedad comentarios del campo.

Parámetros:

* nCampo: número de campo, el primero es el 0.

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

Devuelve el valor de la propiedad comentarios del campo.

Parámetros:

* szIdCampo: identificador del campo.

Esta función se ha incorporado al API a partir de la versión 7.14

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

Devuelve el número de campos del registro de la tabla.

#### Number fieldDecimals( Number nCampo ) <a href="#fielddecimals" id="fielddecimals"></a>

Devuelve el nº de decimales de un campo numérico.

Parámetros:

* nCampo: número de campo, el primero es el 0.

#### String fieldId( Number nCampo ) <a href="#fieldid" id="fieldid"></a>

Devuelve el identificador del campo.

Parámetros:

* nCampo: número de campo, el primero es el 0.

#### Boolean fieldIsSigned( Number nCampo ) <a href="#fieldissigned" id="fieldissigned"></a>

Devuelve true si el campo numérico admite signo.

Parámetros:

* nCampo: número de campo, el primero es el 0.

#### Number fieldMaximumValue( Number nCampo ) <a href="#fieldmaximumvalue" id="fieldmaximumvalue"></a>

Devuelve el valor máximo de un campo numérico.

Parámetros:

* nCampo: número de campo, el primero es el 0.

#### Number fieldMinimumValue( Number nCampo ) <a href="#fieldminimumvalue" id="fieldminimumvalue"></a>

Devuelve el valor mínimo de un campo numérico.

Parámetros:

* nCampo: número de campo, el primero es el 0.

#### String fieldName( Number nCampo ) <a href="#fieldname" id="fieldname"></a>

Devuelve el nombre del campo.

Parámetros:

* nCampo: número de campo, el primero es el 0.

#### String fieldName( Number nCampo, Number nLenguaje, \[Number nPais=0] )

Devuelve el nombre del campo en el idioma y país especificados en los parámetros.

Parámetros:

* nCampo: número de campo, el primero es el 0.
* nLenguaje: número que corresponde al código del lenguaje (Tabla de código Qt).
* nPais: número que corresponde al código del país (Tabla de códigos Qt).

#### String fieldName( String szIDPrimarioCampo )

Devuelve el nombre del campo.

Parámetros:

* szIDPrimarioCampo: identificador del campo.

#### String fieldName( String szIDPrimarioCampo, Number nLenguaje, \[Number nPais=0] )

Devuelve el nombre del campo en el idioma y país especificados en los parámetros.

Parámetros:

* szIDPrimarioCampo: identificador del campo.
* nLenguaje: número que corresponde al código del lenguaje (Tabla de código Qt).
* nPais: número que corresponde al código del país (Tabla de códigos Qt).

#### Number fieldObjectType( Number nCampo ) <a href="#fieldobjecttype" id="fieldobjecttype"></a>

Devuelve el tipo de objeto de un campo objeto. Ver [enum de tipos de campos objeto](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vtableinfo-enumeraciones#tipos-de-campos-objeto).

Parámetros:

* nCampo: número de campo, el primero es el 0.

#### String fieldParentFieldId( Number nCampo ) <a href="#fieldparentfieldid" id="fieldparentfieldid"></a>

Devuelve el identificar del campo padre de una tala submaestra.

Parámetros:

* nCampo: número de campo, el primero es el 0.

#### Number fieldParentFieldNumber( Number nCampo ) <a href="#fieldparentfieldnumber" id="fieldparentfieldnumber"></a>

Devuelve el número de campo del campo padre de una tala submaestra.

Parámetros:

* nCampo: número de campo, el primero es el 0.

#### Number fieldType( Number nCampo ) <a href="#fieldtype" id="fieldtype"></a>

Devuelve el tipo de campo. Ver [enum de tipos de campo](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vtableinfo-enumeraciones#tipos-de-campo).

Parámetros:

* nCampo: número de campo, el primero es el 0.

### Funciones de índices

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

Devuelve el número de índices de la tabla.

#### String indexId( Number nIndex ) <a href="#indexid" id="indexid"></a>

Devuelve el identificador del índice.

Parámetros:

* nIndex: número de orden del índice, el primer valor es el 0.

#### String indexName( Number nIndex ) <a href="#indexname" id="indexname"></a>

Devuelve el nombre del índice.

Parámetros:

* nIndex: número de orden del índice, el primer valor es el 0.

#### Number indexType( Number nIndex ) <a href="#indextype" id="indextype"></a>

Devuelve el identificador del índice. Ver [enum de tipos de índices](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vtableinfo-enumeraciones#tipos-de-indices).

Parámetros:

* nIndex: número de orden del índice, el primer valor es el 0.

### Funciones de históricos

#### String pluralBoundedIndexId( Number nPlural ) <a href="#pluralboundedindexid" id="pluralboundedindexid"></a>

Devuelve el identificador del índice de la tabla enlazada maestra.

Parámetros:

* nPlural: número de orden del plural, el primero valor es el 0.

#### VObjectInfo pluralBoundedIndexInfo( Number nPlural ) <a href="#pluralboundedindexinfo" id="pluralboundedindexinfo"></a>

Devuelve un objeto de la clase [VObjectInfo](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vobjectinfo) del índice de la tabla enlazada maestra.

Parámetros:

* nPlural: número de orden del plural, el primero valor es el 0.

#### String pluralBoundedTableId( Number nPlural ) <a href="#pluralboundedtableid" id="pluralboundedtableid"></a>

Devuelve el identificador de la tabla enlazada maestra.

Parámetros:

* nPlural: número de orden del plural, el primero valor es el 0.

#### VTableInfo pluralBoundedTableInfo( Number nPlural ) <a href="#pluralboundedtableinfo" id="pluralboundedtableinfo"></a>

Devuelve un objeto de la clase VTableInfo de la tabla enlazada maestra.

Parámetros:

* nPlural: número de orden del plural, el primero valor es el 0.

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

Devuelve el número de enlaces plurales de la tabla.

#### String pluralId( Number nPlural ) <a href="#pluralid" id="pluralid"></a>

Devuelve el identificado del plural.

Parámetros:

* nPlural: número de orden del plural, el primero valor es el 0.

#### String pluralName( Number nPlural ) <a href="#pluralname" id="pluralname"></a>

Devuelve el nombre del plural.

Parámetros:

* nPlural: número de orden del plural, el primero valor es el 0.

### Funciones de localizadores por Id

#### Number findField( String szIDPrimarioCampo ) <a href="#findfield" id="findfield"></a>

Devuelve el número de campo de un identificador.

Parámetros:

* szIdPrimarioCampo: identificador del campo.

#### Number findIndex( String szIDPrimarioIndice ) <a href="#findindex" id="findindex"></a>

Devuelve el número del índice de un identificador.

Parámetros:

* szIdPrimarioIndice: identificador del índice.

#### Number findPlural( String szIDPrimarioHist ) <a href="#findplural" id="findplural"></a>

Devuelve el número del enlace plural de un identificador.

Parámetros:

* szIdPrimarioIndice: identificador del enlace plural.

## Ejemplos

### 1. Controlar si es una tabla maestra normal

```javascript
if (VTableInfo.TypeMaster == theRegisterIn.tableInfo().type())
{
    .....
}

o bien

if (VTableInfo.TypeMaster == theRegisterListIn.tableInfo().type())
{
    .....
}
```

### 2. Eliminar todos los plurales de la tabla ENT-M de vERP

```javascript
/**
 * Eliminar todos los plurales de un registro
 *
 * @param {Object} root Objeto desde el que se ejecuta  la función
 * @param {VRegister} registro Registro del que se desean eliminar los plurales
 * @returns {Boolean} True si se han eliminado todos los plurales o false en caso contrario
 */
velneoDB.eliminarPlurales = function (root, registro) {

    // VARIABLES: declaración de las variables
    var listaPlurales,
        indice = 0,
        numPlurales,
        numRegistro = 0,
        numRegistros,
        pluralId,
        registroPlural,
        retorno = true,
        tablaInfo,
        transActiva,
        transNueva;

    // PROCESO: se leen todas las tablas de la aplicación incluídas las heredadas
    if (root) {

        // Si no hay transacción se crea una nueva      
        transActiva = theRoot.existTrans();
        if (transActiva === false) {
            transNueva = theRoot.beginTrans("Eliminando históricos de la tabla " + tablaInfo.name());
        }
        if (transActiva || transNueva) {

            // Se analiza la tabla para recorrer sus plurales
            tablaInfo = registro.tableInfo();
            numPlurales = tablaInfo.pluralCount();

            // Se recorren los plurales de la tabla
            for (indice; indice < numPlurales; indice += 1) {
                pluralId = tablaInfo.pluralId(indice);
                listaPlurales = theRegisterIn.loadPlurals(pluralId);
                numRegistros = listaPlurales.size();

                // Se eliminan los registros plurales
                if (numRegistros > 0) {
                    for (numRegistro; numRegistro < numRegistros; numRegistro += 1) {
                        registroPlural = listaPlurales.readLockingAt(numRegistro);
                        if (registroPlural.deleteRegister() === false) {
                            retorno = false;
                        }
                    }
                }
            }

            // Si se ha creado una transacción nueva, se cierra
            if (transNueva === true) {
                theRoot.commitTrans();
            }
        }
    }

    // RETORNO: retornor true si se han podido eliminar todos los plurales
    return retorno;
};
```
