> 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/referencing/data-read-global.md).

# Data Read Global

Este bloque de función lee un valor almacenado en el almacenamiento de datos global de la escena del proyecto actual. Úsalo cuando necesites recuperar datos guardados en otra parte y compartirlos entre diferentes partes de tu escenario.

## 📥 Entradas

Este bloque de función no tiene sockets de entrada.

## 📤 Salidas

`Generic`\
Al evaluarse, esta salida proporciona el valor asociado con la clave global solicitada. Si la clave no se encuentra, se emitirá una advertencia y se devolverá un valor de reserva (ver Solución de problemas).

## 🕹️ Controles

`Data Key`\
Introduce el nombre de la clave de datos global que quieres leer.

## 🎯 Características

* Lee desde el almacenamiento global que puede ser accedido por otros bloques y escenas.
* Autocompletado para claves globales existentes, lo que reduce errores tipográficos.
* Emite una única salida `Generic` que puede contener cualquier tipo de dato soportado.

## 📊 Evaluación

Cuando se ejecuta el escenario, el bloque busca la `Data Key` proporcionada en el almacenamiento global y devuelve el valor almacenado en la salida `Generic`. Si la clave no existe, se emite una advertencia y se devuelve un valor de marcador/por defecto.

## 📝 Instrucciones de uso

1. Escribe exactamente el nombre de la clave en el control `Data Key`.
2. Coloca este bloque donde necesites consumir datos almacenados globalmente.
3. Conecta la salida `Generic` como entrada al bloque que requiera ese dato.

## 💡 Consejos y trucos

* Para almacenar valores para su recuperación posterior, utiliza el bloque `Data Write Global` junto con este bloque.
* Si necesitas almacenamiento temporal o local a un bucle, considera usar `Data Read Local` y `Data Write Local` para un flujo de datos más aislado.
* Combínalo con `Is None` o `Replace None` cuando la clave pueda faltar, de modo que tu escenario proporcione valores por defecto.
* Usa `Data Memory` cuando quieras congelar un valor en memoria hasta que se actualice explícitamente.
* Para depuración, enruta la salida a `Debug Input` para inspeccionar los valores recuperados en el registro.
* Para exportar los valores recuperados en forma estructurada, combínalo con `Data to JSON` o `CSV Export`.

## 🛠️ Solución de problemas

* `No value returned`\
  Verifica que la `Data Key` coincida exactamente con la clave usada al escribir los datos. Los errores tipográficos son la causa más común.
* `Key not found`\
  Si ves una advertencia sobre una clave inexistente, confirma que el bloque que escribió los datos se ejecutó antes en el escenario, y considera usar `Data Write Global` para crear la clave antes de leerla.
* `Unexpected data type`\
  Si los bloques consumidores esperan un tipo de dato específico, valida el valor recuperado con `Data Type Converter` o maneja tipos faltantes/incorrectos con `Replace None`.

## ✅ Mejores prácticas

* Usa nombres de clave claros y descriptivos para evitar colisiones (por ejemplo, incluye prefijos de escena o subsistema).
* Al diseñar bucles o flujos paralelos, prefiere el almacenamiento local cuando sea posible para evitar condiciones de carrera; usa el almacenamiento global solo cuando se requiera compartir intencionalmente entre ámbitos.
* Protege las lecturas con comprobaciones como `Is None` para hacer tus flujos robustos frente a datos faltantes.
