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

# Script de ejemplo de búsqueda en una base de datos

> Script web de ejemplo de acción personalizada que busca en un conjunto de datos desde la estación web de verificación de FlexiCapture y copia el valor encontrado en el campo actual.

Este script de ejemplo busca en un conjunto de datos desde la estación web de verificación y copia el valor encontrado en el campo actual.

<div id="create-a-data-set">
  ## Crear un conjunto de datos
</div>

Antes de configurar el script, cree un conjunto de datos para que el script pueda buscar en él:

<Steps>
  <Step title="Abra las definiciones de documentos">
    Abra Project Setup Station y haga clic en **Project → Document Definitions**.
  </Step>

  <Step title="Añada un conjunto de datos">
    Haga clic en **Document Definition → Propiedades de Definición de Document**, abra la pestaña **Conjuntos de datos** y haga clic en **Add**.
  </Step>

  <Step title="Cree registros">
    Cree un conjunto de datos, añada algunos registros y haga clic en **Close**.
  </Step>
</Steps>

Añada este script como un script de usuario para la estación web de verificación. Para obtener más información, consulte [Scripts de usuario para la estación web de verificación](/es/flexi-capture/appendix/scripts/web-custom-action-script).

<div id="sample-script">
  ## Script de ejemplo
</div>

```javascript theme={null}
//Nombre del DataSet
var dbCacheName = 'DataSet1';
//Campo en el conjunto de datos, utilizado para reemplazar el valor del campo actual
var fieldNameInCache = 'Field2';
var self = this;
var styles = {
    display: 'block',
    position: 'absolute',
    top: '0px',
    bottom: '0px',
    left: '0px',
    right: '0px',
    width: '100%',
    height: '100%',
    border: '0',
    overflow: 'hidden',
    'overflow-x': 'hidden',
    'overflow-y': 'hidden',
    'z-index': '10000'
}
var newValueToInsert = '';
// Establece los estilos del iframe
setStyles(
    styles,
    function() {
        //Marcado del diálogo
        var windowMarkup = "<div class='frame'><div class='searchField'><input id='searchValue' /><button id='searchButton'>Search</button></div><div id='recordspanel'><table id='resultspreview'></table><div id='norecord'>No records found</div></div><div class='buttonsfield'><button id='confirm'>Ok</button><button id='cancel'>Cancel</button></div></div>";
        //Estilos del diálogo
        var css = "<style>body{width:100vw;height:100vh;background:rgba(0,0,0,0.1);margin:0;padding:0;display:flex;align-items:center;justify-content:center;}.frame{width:400px;max-height:80vh;background:white;min-height:200px;padding:50px;}#norecord{display:none;}#searchValue{width:calc(100% - 60px);}#cancel{margin-left:20px;}.buttonsfield{display:flex;justify-content:flex-end;height:25px;}.bolded{font-weight:bold;}button{width:60px;}#confirm{display:none;}#recordspanel{min-height:145px;padding: 10px 0;}#searchfield{height:30px;}</style>";
        //Aplicar estilos
        $('head').append(css);
        //Crea el DOM en el iframe
        $("body").append(windowMarkup);
        // Clic en el botón de búsqueda
        $('#searchButton').click(function () {
            //Buscar en el diccionario
            getDict(
                {
                    cacheName: dbCacheName, //nombre del conjunto de datos
                    filters: [{ FieldName: "", FieldValue: $('#searchValue').val() }] //campos a buscar
                },
                function (result) {
                    //Filas de registros del conjunto de datos
                    var records = result.detail.result;
                    //Descripción del primer registro
                    var firstRecord = records[0];
                    //ocultar la 'tabla' y el botón 'ok' si no se encuentra ningún resultado
                    if (!firstRecord && !firstRecord.BoldMask){
                        $('#resultspreview').hide();
                        $('#norecord').show();
                        $('#confirm').hide();
                    } else {
                        $('#resultspreview').show();
                        $('#confirm').show();
                        $('#norecord').hide();
                        $('#resultspreview').html('');
                        firstRecord.forEach(function (recordData) {
                            if (fieldNameInCache === recordData.FieldName) {
                                newValueToInsert = recordData.FieldValue;
                            }
                            $('#resultspreview')
                                .append('<tr class="' +
                                    (fieldNameInCache === recordData.FieldName ? 'bolded' : '') +
                                    '"><td>' +
                                    recordData.FieldName +
                                    '</td><td>' +
                                    recordData.FieldValue +
                                    '</td></tr>');
                        });
                    }
                });
        });
        //Al hacer clic en el botón 'ok'
        $('#confirm').click(function () {
            if (newValueToInsert) {
                //Asignar el valor al campo actual
                setCurrentFieldValue(newValueToInsert);
                //Guardar y cerrar el iframe
                save();
            }
        });
        //Al hacer clic en el botón 'cancel'
        $('#cancel').click(function () {
            cancel();
        });
    });
```

También puede encontrar este script de ejemplo en `https://<ApplicationServer>/FlexiCapture12/Verification/Scripts/CustomScripts/customActionLookup.js`, donde `<ApplicationServer>` es el nombre del equipo en el que está instalado el Servidor de aplicaciones.

Sustituya los valores en estas líneas:

* `var dbCacheName = 'DataSet1';` — `DataSet1` es el nombre del conjunto de datos que creó.
* `var fieldNameInCache = 'Field2';` — `Field2` es el nombre del campo del conjunto de datos que contiene el valor que desea copiar.
