> For the complete documentation index, see [llms.txt](https://docs.augelab.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.augelab.com/spanish/function-blocks/blocks-reference/data-logic/data-operations/data-memory.md).

# Data Memory

Esta función de bloque conserva un valor en memoria y, opcionalmente, lo actualiza cuando se solicita. Es útil para preservar el último dato conocido entre ejecuciones o para congelar un valor hasta que se proporcione una actualización explícita.

## 📥 Entradas <a href="#inputs" id="inputs"></a>

`Generic` Datos generales de entrada para almacenar en memoria. Puede ser cualquier tipo de dato (números, texto, imagen, listas, diccionarios, etc.).\
`Update Data` Entrada booleana que controla si los datos entrantes deben reemplazar el valor almacenado.

## 📤 Salidas <a href="#outputs" id="outputs"></a>

`Generic` El valor actualmente almacenado. Si nunca se actualizó, puede estar vacío/None.

## 🕹️ Controles <a href="#controls" id="controls"></a>

Este bloque no tiene widgets de interfaz adicionales. El comportamiento se controla mediante los dos sockets listados arriba.

## 🎯 Características <a href="#features" id="features"></a>

* Memoria persistente en el flujo: mantiene un valor entre evaluaciones y solo cambia cuando `Update Data` es verdadero.
* Acepta cualquier tipo de dato en el socket `Generic`.
* Mecánica simple de congelar/descongelar: ajuste `Update Data` a False para congelar el valor almacenado, True para permitir actualizaciones.

## 📝 Instrucciones de uso <a href="#usage" id="usage"></a>

1. Alimente el valor que desea conservar en la entrada `Generic`.
2. Active `Update Data` a True cuando quiera que la memoria acepte la nueva entrada.
3. Ajuste `Update Data` a False para congelar el valor almacenado; el bloque seguirá emitiendo ese valor hasta que se permita una actualización.

## 📊 Evaluación <a href="#evaluation" id="evaluation"></a>

En cada evaluación, el bloque comprueba la entrada `Update Data`. Si es True, almacena la entrada actual de `Generic` y la emite. Si es False, emite el valor almacenado previamente sin cambios.

## 💡 Consejos y trucos <a href="#tips-and-tricks" id="tips-and-tricks"></a>

* Use junto con `Is None` para detectar entradas faltantes antes de escribir en la memoria, manteniendo el valor almacenado a salvo de sobrescrituras accidentales por None.
* Combine con `Replace None` para proporcionar datos de respaldo cuando la entrada esté vacía, y luego controle las escrituras con `Update Data`.
* Combínelo con `Data Read Local` / `Data Write Local` o `Data Read Global` / `Data Write Global` para un intercambio más persistente entre diferentes partes de su flujo.
* Use junto con `Debug Input` para registrar los valores almacenados durante el desarrollo y verificar cuándo ocurren las actualizaciones de memoria.
* Al procesar lotes, coordine con `Batch Processing`, `Get Batch Size` o `Batch Concatenation` para controlar si la memoria debe almacenar lotes completos o elementos individuales.
* Para escenarios de registro o exportación, alimente la salida del bloque hacia `CSV Export`, `Image Logger` u otros bloques de exportación para registrar los datos preservados solo cuando ocurra una actualización confirmada.

## 🛠️ Solución de problemas <a href="#troubleshooting" id="troubleshooting"></a>

* Si la salida nunca cambia, asegúrese de que la entrada `Update Data` se esté configurando a True cuando espere una actualización.
* Si el valor almacenado se convierte inesperadamente en None, verifique los bloques aguas arriba por salidas None y considere usar `Replace None` antes de escribir en la memoria.
* Si varias áreas de su flujo requieren el mismo valor, prefiera los bloques de lectura/escritura local/global para evitar duplicación y asegurar actualizaciones coherentes.
