> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Modelo de objetos

> Fundamentos del modelo de objetos para scripts de ABBYY FlexiCapture: métodos de las colecciones, campos repetitivos y filas de tabla, y cómo componer rutas a los campos del documento.

A continuación se describen los aspectos específicos del modelo de objetos utilizado.

<div id="working-with-collections">
  ## Trabajar con colecciones
</div>

Todas las colecciones del modelo de objetos admiten los siguientes métodos:

<table width="100%"><thead><tr><th style={{textAlign: 'left'}}><p><strong>Name</strong></p></th><th style={{textAlign: 'left'}}><p><strong>Tipo</strong></p></th><th style={{textAlign: 'left'}}><p><strong>Acceso</strong></p></th><th style={{textAlign: 'left'}}><p><strong>Descripción</strong></p></th></tr></thead><tbody><tr><td><p>Count</p></td><td><p>int</p></td><td><p>De solo lectura</p></td><td><p>El número de elementos de la colección</p></td></tr><tr><td><p>Item( index : int )</p></td><td><p>ItemInterface</p></td><td><p>De solo lectura</p></td><td><p>Recupera un elemento de la colección con el índice indicado.</p><p>La enumeración comienza con "0".</p></td></tr></tbody></table>

<Note>
  En lugar de usar el método Item, también puede acceder a los elementos de la colección mediante paréntesis o corchetes, según el lenguaje seleccionado. En los lenguajes **JScript**, **VBScript** y **Visual Basic.Net**, se usan paréntesis. En **C#.Net** solo es posible usar corchetes. En **JScript.Net** se pueden usar tanto paréntesis como corchetes.
</Note>

Por ejemplo,

```
Items( 1 ).Text = "Hello" or Items[ 1 ].Text = "Hello"
```

Todas las colecciones pueden usarse en construcciones "for each" y similares.

<div id="working-with-recurring-fields-and-tables">
  ## Trabajar con campos repetitivos y tablas
</div>

Todos los campos del documento, excepto las tablas, pueden ser repetitivos.

En la estructura del documento, los campos repetitivos se representan mediante un campo prototipo especial que tiene una colección **Items** no vacía.

Un campo prototipo no tiene elementos secundarios ni valor. Se usa únicamente para almacenar el conjunto de iteraciones del campo. Los campos secundarios y/o los valores de campo solo pueden ser atributos de las instancias del campo, a las que se puede acceder mediante el método **Items** del objeto [IField](/es/flexi-capture/appendix/scripts/ifield).

Las tablas siempre tienen la colección **Rows** (**Rows** es sinónimo de **Items**). La colección **Rows** contiene solo aquellas filas de la tabla a cuyas celdas se puede acceder mediante el método **Children** de las filas.

## <a id="pathforming" />Construcción de rutas a campos

Los métodos Field, HasField e IndexedItemValue del objeto [IDocument](/es/flexi-capture/appendix/scripts/idocument) usan como parámetros rutas a los campos del formulario. La forma formal de representar la ruta mediante una BNF (forma de Backus-Naur) es la siguiente:

\<Path> ::= \<Path\_component> | \<Path> "" \<Path\_component>

\<Path\_component> ::= \<Field\_name> | \<Field\_name> "\["\<Field\_iteration\_number>"]"

Donde **Field\_name** indica los nombres de los campos del documento tal como se definen en la Definición de Document, y **Field\_iteration\_number** es el número de iteración del campo repetido (el número de fila en las tablas), comenzando por "0".

La ruta puede ser completa o relativa. Las rutas completas se construyen a partir del nombre de la sección del documento, mientras que las rutas relativas se construyen a partir del nombre del elemento secundario del grupo.

Por ejemplo, para hacer referencia a la tercera fila de la columna "Total" de la tabla "Table", que se encuentra en la sección "Section", debe escribir lo siguiente:

```
"Section\Table[2]\Total"
```

Ese nombre completo se puede construir mediante el método **FullName** del objeto [IField](/es/flexi-capture/appendix/scripts/ifield).
