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

# Registro de eventos de Processing Monitor

> Descargue como CSV el registro de eventos del ABBYY FlexiCapture Processing Monitor sobre eventos de procesamiento de documentos mediante la solicitud POST GetEventsCSV, con un ejemplo de script.

Este registro registra eventos y errores del procesamiento de documentos.

<Warning>
  Solo los usuarios con permisos de Administrador del tenant (o de Administrador del sistema en el caso del tenant predeterminado) y de Operador de supervisión pueden descargar registros de eventos en Processing Monitor.
</Warning>

Para descargar este registro, envíe una solicitud POST:

```http theme={null}
POST https://<server address>/FlexiCapture12/Monitoring/Project/GetEventsCSV
```

<div id="request-parameters">
  ## Parámetros de solicitud
</div>

Todos los parámetros son obligatorios. Asegúrese de que estén especificados correctamente.

<Info>
  La búsqueda en Oracle Database distingue entre mayúsculas y minúsculas. Téngalo en cuenta si usa Oracle Database.
</Info>

| Parámetro         | Tipo   | Descripción                                                                                                                                                                                                                                                        |
| ----------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `filter`          | string | Condiciones de filtro para el registro. Combine las condiciones únicamente con los operadores `AND` y `OR`, establecidos en el parámetro `GeneralOperator`. Para obtener más información, consulte [Crear el parámetro de filtro](#build-the-filter-parameter).    |
| `columnsOrder`    | string | Lista de columnas separadas por comas que se incluirán en el informe: `ID`, `Date`, `EventType`, `Comment`, `UserFullName`, `Workstation`, `BatchId`, `BatchName`, `BatchTypeName`, `StageFromName`, `StageToName`, `ProjectName`, `RoleName`, `TenantName`.       |
| `sortColumnindex` | int    | Índice de la columna utilizada para ordenar los registros en el registro.                                                                                                                                                                                          |
| `sortOrder`       | bool   | Orden de clasificación: `true` ordena en orden descendente y `false`, en orden ascendente.                                                                                                                                                                         |
| `projectId`       | int    | Proyectos que se incluirán en el registro: `-1` para todos los proyectos disponibles, o un ID de proyecto específico (`1` o superior). Para obtener todos los ID de proyecto disponibles, use el método [GetProjects](/es/flexi-capture/api/methods/get-projects). |

<div id="build-the-filter-parameter">
  ### Crear el parámetro de filtro
</div>

El parámetro `filter` acepta un objeto JSON. Por ejemplo:

```json theme={null}
{
  "GeneralOperator": "AND",
  "FilterItems": [
    {
      "PropertyKey": "Date",
      "PropertyOperator": "BETWEEN",
      "PropertyValues": [
        "2021-08-28",
        "00:00:00",
        "2023-09-28",
        "23:59:59"
      ]
    },
    {
      "PropertyKey": "Id",
      "PropertyOperator": ">=",
      "PropertyValues": ["127602430"]
    },
    {
      "PropertyKey": "BatchName",
      "PropertyOperator": "CONTAINS",
      "PropertyValues": ["default"]
    }
  ]
}
```

Para encontrar los valores de los parámetros `PropertyKey` y `PropertyOperator`, cree un filtro en la Consola de administración y supervisión:

<Steps>
  <Step title="Abra las Developer Tools del navegador">
    En el menú del navegador, haga clic en **More tools → Developer tools** y vaya a la pestaña **Network**.
  </Step>

  <Step title="Cree un filtro en la consola">
    Abra la Consola de administración y supervisión, vaya a **Processing Monitor → registro de eventos** y haga clic en el botón <img src="https://mintcdn.com/abbyy/39LtOHLEp1q7pm1x/images/flexi-capture/Add_filter.png?fit=max&auto=format&n=39LtOHLEp1q7pm1x&q=85&s=7fca1d511f8470021946ae439989fb68" alt="Botón Agregar filtro" style={{display:"inline-block",verticalAlign:"middle",margin:0}} width="22" height="22" data-path="images/flexi-capture/Add_filter.png" />.
  </Step>

  <Step title="Aplique los criterios de filtro">
    Especifique los criterios de filtrado y haga clic en **Apply**.
  </Step>

  <Step title="Consulte los parámetros del filtro">
    Haga clic en la solicitud `GetFilteredEvents`. Los parámetros de filtrado se muestran en la pestaña **Payload**.
  </Step>
</Steps>

Para filtrar eventos de lotes predeterminados, especifique el parámetro `BatchTypeNameExt` en lugar de `BatchTypeName`:

```json theme={null}
"FilterItems": [
  {
    "PropertyKey": "BatchTypeNameExt",
    "PropertyOperator": "CONTAINS",
    "PropertyValues": ["Default"]
  }
]
```

<Note>
  Mantén `BatchTypeName` para el lote predeterminado en el parámetro `columnsOrder`.
</Note>

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

El siguiente script de PowerShell muestra cómo usar esta API para descargar el registro de eventos.

<Note>
  Reemplace los parámetros de este script por la dirección del servidor, el nombre del tenant y sus propias credenciales.
</Note>

```powershell theme={null}
# parámetros
$server = "https://<server address>"
$tenant = "<tenant name>"
$user = "<user name>"
$password = "<password>"
#ruta a la carpeta donde se guardará el registro
$folder = "C:\Temp\Logs\Stage"
$reportFileName = "Project_Events-{0:yyMMdd-HHmmss}.csv" -f (Get-Date)
# parámetros del registro
$requestBody =  @"
filter={
    "Name": "Complex filter",
    "GeneralOperator": "AND",
    "FilterItems": [
        {
            "PropertyKey": "Date",
            "PropertyOperator": "BETWEEN",
            "PropertyValues": ["2018-09-12","00:00:00","2023-10-12","23:59:59"]
        },
        {
            "PropertyKey": "Id",
            "PropertyOperator": ">=",
            "PropertyValues": ["127602430"]
        }
    ]
}
&columnsOrder=Id,Date,EventType,Comment,UserFullName,Workstation,BatchId,BatchName,BatchTypeName,StageFromName,StageToName,ProjectName,RoleName,TenantName
&sortColumnindex=0
&sortOrder=true
&projectId=-1
"@
#------------------------------------------------------------------------------
$methodUri = "/Project/GetEventsCSV"
$authServer = $server
$ServerSitePath = "/FlexiCapture12/Monitoring"

function Write-Line($str, $color = "White")
{
    Write-Host $str -ForegroundColor $color
}

function Join-Uri
{
    param([Parameter(Mandatory, ValueFromPipeline)] [string]$parent, [string]$child)
    if ($parent -eq "") {return $child;}
    if ($child -eq ""){return $parent}
    if ($parent.endswith("/") -or $parent.endswith("\\")) {$parent = $parent.substring(0,$parent.Length-1)}
    if ($child.startswith("/") -or $child.startswith("\\")) {$child = $child.substring(1,$child.Length-1)}
    return "$parent/$child"
}

function Get-AuthTicket($server, $user, $password, $tenant)
{
    $tenantSuffix=""
    if ($tenant -ne ''){ $tenantSuffix = "?tenant=$tenant"}
    $URL = Join-Uri $authServer "/FlexiCapture12/Server/FCAuth/API/Soap$tenantSuffix"
    $SOAPRequest = '<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><FindUser xmlns="urn:http://www.abbyy.com/FlexiCapture"><userLogin>user</userLogin></FindUser></soap:Body></soap:Envelope>'
    $Headers = @{
        'SOAPAction' = '"#FindUser"'
        'Content-Type' = 'text/xml; charset=utf-8'
        'Authorization' = "Basic $([System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes("$($user):$($password)")))"
    }
    try
    {
        $response1 = Invoke-WebRequest -Uri $URL -Headers $Headers -Body $SOAPRequest -Method 'POST'
        return $response1.Headers['AuthTicket']
    }
    catch{
        Write-Line -str "Couldn't get 'AuthTicket': $_" -color "Red"
        return ""
    }
}

function Download-CSVReport($server, $tenant, $authTicket, $methodUri, $requestBody, $folder, $reportFileName)
{
    $reportFullFilePath = Join-Path $folder $reportFileName
    #crear carpeta silenciosamente (si no existe)
    New-Item -ItemType Directory -Force -Path $folder | Out-Null
    if ($authTicket -eq "" -or $authTicket -eq $null)
    {
        Write-Line -str "Couldn't get 'CSV-Report'" -color "Red"
    }
    else
    {
        $header = @{ "Accept" = "*/*"}
        $session = [Microsoft.PowerShell.Commands.WebRequestSession]::new()
        $session.Cookies.Add($server, [System.NET.Cookie]::new("FlexiCaptureTmpPrn$tenant", "Ticket=$authTicket"))
        $tenantInUrl=""
        if ($tenant -ne '') { $tenantInUrl = "/$tenant"}
        $uri = Join-Uri $server $ServerSitePath | Join-Uri -child $tenantInUrl | Join-Uri -child $methodUri
        try{
            $response = Invoke-WebRequest -Uri $uri -Method 'POST' -Headers $header -WebSession $session -Body $requestBody -OutFile $reportFullFilePath -MaximumRedirection 0 -ErrorAction Ignore -PassThru
            if ($response.StatusCode -lt 300)
            {
                Write-Line "CSV-Report done: $reportFullFilePath" "Green"
            }
            else
            {
                Write-Line -str "HttpStatus $($response.StatusCode) in getting CSV-Report." -color "Red"
            }
        }
        catch{
            Write-Line -str "Couldn't get CSV-Report: $_" -color "Red"
            return ""
        }
    }
}

$authTicket = Get-AuthTicket -server $server -user $user -password $password -tenant $tenant
Download-CSVReport -server $server -tenant $tenant -authTicket $authTicket -methodUri $methodUri -requestBody $requestBody -folder $folder -reportFileName $reportFileName
```
