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

# Ejemplo 3. Paso 25: Detección de los campos TotalQuantity y TotalAmount con elementos TotalQuantity y TotalAmount

> Recupere los valores de Total Quantity y Total Amount con elementos de cadena de caracteres TotalQuantity y TotalAmount dentro de un grupo grTotal opcional.

El análisis de las imágenes de prueba revela que los campos Total Quantity y Total Amount solo aparecen junto con el nombre `Footer.kwTotal` y están situados en el mismo nivel.

Use elementos de tipo [cadena de caracteres](/es/flexi-capture/fls/template/character-chain) para detectar los campos Total Quantity y Total Amount. Para especificar las restricciones de búsqueda comunes a estos elementos, cree un elemento [Grupo](/es/flexi-capture/fls/template/elements-compound) — grTotal.

<div id="create-the-grtotal-group-element">
  ## Crear el elemento [Grupo](/es/flexi-capture/fls/template/elements-compound) grTotal
</div>

Para crear el elemento [Grupo](/es/flexi-capture/fls/template/elements-compound) grTotal:

1. En el elemento Footer, cree un elemento [Grupo](/es/flexi-capture/fls/template/elements-compound) y asígnele el nombre **grTotal**.

2. Seleccione **Optional element** para que la búsqueda de los subelementos se detenga si el nombre no está presente.

   <Note>
     Para obtener más información, consulte [The Optional property of a Group element](/es/flexi-capture/fls/tips-tricks/date11).
   </Note>

3. Haga clic en la pestaña Advanced.

4. Dado que los campos **Total Quantity** y **Total Amount** solo aparecen en la imagen junto con el nombre `Footer.kwTotal`, establezca la siguiente [restricción de búsqueda adicional](/es/flexi-capture/fls/template/advanced-constraints) en el campo de relación avanzada de prebúsqueda: Si no se ha detectado el elemento `Footer.kwTotal`, no busque el objeto en la imagen. En [FlexiLayout language](/es/flexi-capture/fls/code/general-code):
   `If Footer.kwTotal.IsNull Then DontFind;`

<div id="create-the-totalquantity-element">
  ## Crear el elemento TotalQuantity
</div>

El campo **Total Quantity** se encuentra en la intersección de la fila Total y la columna Quantity. La primera restricción ya se especificó en el nivel del elemento [grupo](/es/flexi-capture/fls/template/elements-compound). Para especificar la segunda restricción, use el nombre de la columna detectado previamente como elemento de referencia.

Para crear el elemento TotalQuantity:

1. En el elemento **grTotal**, cree un elemento de tipo [cadena de caracteres](/es/flexi-capture/fls/template/character-chain) y asígnele el nombre **TotalQuantity**.

2. Haga clic en la pestaña Character String.

3. En el campo de recuento de caracteres, especifique este intervalo difuso: `{-1, 1, 10, INF}`. Se trata de una estimación de la longitud de la cadena de caracteres. Suponga que los valores posibles pueden ir de 1 a 10. Cualquier hipótesis fuera de este intervalo será penalizada.

4. Deje los valores predeterminados de los demás parámetros del elemento.

5. Haga clic en la pestaña Relations.

6. Como el campo **Total Quantity** siempre se encuentra a la misma altura que las palabras clave con el nombre `Footer.kwTotal` o ligeramente más abajo, establezca las siguientes restricciones de búsqueda:

   * Encima del elemento `Footer.kwTotal`, Offset = -200, Reference boundary = Bottom
   * Debajo del elemento `Footer.kwTotal`, Offset = -20, Reference boundary = Top

   <Tip>
     Antes de establecer los valores de Offset, quizá le convenga analizar las propiedades geométricas (es decir, el tamaño y los límites) de los objetos vecinos detectados durante el prerreconocimiento. Los valores de Offset se seleccionan por prueba y error.
   </Tip>

7. Haga clic en la pestaña Advanced.

8. Como el campo **Total Quantity** es opcional en las imágenes, pero cuando aparece lo hace junto con la columna **Quantity** y debajo de su nombre, establezca la siguiente [restricción de búsqueda adicional](/es/flexi-capture/fls/template/advanced-constraints) en el campo de relación avanzada de prebúsqueda:

   Busque el objeto en la imagen solo si se ha detectado el elemento `TableHeader.kwQuantity`; no busque a más de 50 dots a la izquierda o a la derecha de los límites correspondientes del nombre de la columna. En el [FlexiLayout language](/es/flexi-capture/fls/code/general-code):
   `If Not (TableHeader.kwQuantity.IsNull) Then`
   `{`
   `LeftOf: TableHeader.kwQuantity.Right, -50 * dot;`
   `RightOf: TableHeader.kwQuantity.Left, -50 * dot;`
   `}`
   `Else DontFind;`

9. Pruebe el emparejamiento del FlexiLayout con las imágenes de prueba y asegúrese de que el programa detecte correctamente el elemento en todas las imágenes en las que corresponda.

10. Para describir la ubicación del bloque **TotalQuantity**, seleccione la opción Source element y, a continuación, haga clic en "**…**" y seleccione el elemento **TotalQuantity** como elemento de origen.

<div id="create-the-totalamount-element">
  ## Cree el elemento TotalAmount
</div>

El campo Total Amount se encuentra en la intersección de la fila Total (el pie de la tabla) y la columna Total. La primera restricción ya se especificó en el nivel del elemento [grupo](/es/flexi-capture/fls/template/elements-compound). Para especificar la segunda restricción, use los nombres de columna detectados previamente como elementos de referencia.

Para crear el elemento TotalAmount:

1. En el elemento **grTotal**, cree un elemento de tipo [cadena de caracteres](/es/flexi-capture/fls/template/character-chain) y asígnele el nombre **TotalAmount**.

2. Haga clic en la pestaña Character String.

3. En el campo recuento de caracteres, especifique este intervalo difuso: `[-1, 1, 20, 2147483647]`. Esta es una estimación de la longitud de la cadena de caracteres. Suponga que los valores posibles pueden ir de 1 a 20. Cualquier hipótesis fuera de este rango será penalizada.

4. Deje los valores predeterminados de los demás parámetros del elemento.

5. Haga clic en la pestaña Relations.

6. Dado que el campo **Total Amount** siempre se encuentra al mismo nivel que las palabras clave con el nombre `Footer.kwTotal`, establezca las siguientes restricciones de búsqueda:
   * Encima del elemento `Footer.kwTotal`, Offset = -20, Reference boundary = Bottom.
   * Debajo del elemento `Footer.kwTotal`, Offset = -20, Reference boundary = Top.

7. Haga clic en la pestaña **Advanced**.

8. Dado que el campo **Total Amount** solo puede estar ubicado inmediatamente debajo (posiblemente con un pequeño desplazamiento) del nombre de la columna **Total** y solo entre las columnas **Unit Price** y **Sales**, establezca la siguiente [restricción de búsqueda adicional](/es/flexi-capture/fls/template/advanced-constraints) en el campo relación avanzada de prebúsqueda:

   Si se ha detectado el elemento `TableHeader.kwTotal`, busque el objeto a no más de 70 puntos a la derecha del borde derecho del elemento `TableHeader.kwTotal` y a no más de 50 puntos a la izquierda del borde izquierdo del elemento `TableHeader.kwTotal`.

   O bien, si se detectan los elementos `TableHeader.kwUnitPrice` y `TableHeader.kwSales`, busque el objeto a no más de 40 puntos a la derecha del borde izquierdo del elemento `TableHeader.kwSales` y a la derecha del borde derecho del elemento `TableHeader.kwUnitPrice`; de lo contrario, no busque el objeto. En [FlexiLayout language](/es/flexi-capture/fls/code/general-code):
   `If Not (TableHeader.kwTotal.IsNull) Then`
   `{`
   `LeftOf: TableHeader.kwTotal.Right, -70 * dot;`
   `RightOf: TableHeader.kwTotal.Left, -50 * dot;`
   `}`
   `Else`
   `If Not (TableHeader.kwUnitPrice.IsNull) and Not (TableHeader.kwSales.IsNull) Then`
   `{`
   `LeftOf: TableHeader.kwSales.Left, -40 * dot;`
   `RightOf: TableHeader.kwUnitPrice, 0 * dot;`
   `}`
   `Else DontFind;`

   <Tip>
     Antes de establecer los valores de los desplazamientos, quizá le convenga analizar las propiedades geométricas (es decir, el tamaño y los bordes) de los objetos vecinos detectados durante el prerreconocimiento. Los valores de desplazamiento se seleccionan por prueba y error.
   </Tip>

9. Pruebe el emparejamiento del FlexiLayout con las imágenes de prueba y asegúrese de que el programa detecte correctamente el elemento en todas las imágenes en las que corresponda.

10. Para describir la ubicación del bloque **TotalAmount**, seleccione la opción Source element y, a continuación, haga clic en <img src="https://mintcdn.com/abbyy/fmgRWFNHKYN2MLSg/images/flexi-capture/fls/Browse_Button.gif?s=3673db30dda4a3293aec716853588b55" alt="botón Examinar" style={{display:"inline-block",verticalAlign:"middle",margin:0}} width="21" height="20" data-path="images/flexi-capture/fls/Browse_Button.gif" /> y seleccione el elemento **TotalAmount** como elemento de origen.
