> 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/arabic/alblwkat-alwzyfyh/blocks-reference/data-logic/referencing/data-write-local.md).

# Data Write Local

هذا الـ function block يقوم بحفظ البيانات الواردة في مخزن محلي داخل السيناريو ليتمكن باقي الـ blocks من قراءتها لاحقًا. استخدمه عندما تحتاج للاحتفاظ بقيمة (صورة، رقم، نص، قائمة، إلخ) عبر أجزاء مختلفة من السيناريو أو لإنشاء دوائر تغذية راجعة بسيطة. ملاحظة: هذا الـ block يتيح إنشاء loops لكنه لا يضمن ترتيب أو تكامل تدفق البيانات — استخدمه بحذر.

## 📥 المدخلات <a href="#inputs" id="inputs"></a>

`Generic` هذا المقبس يقبل أي نوع بيانات ليتم تخزينه.

## 📤 المخرجات <a href="#outputs" id="outputs"></a>

هذا الـ function block لا يولد مخرجات مباشرة.

## 🕹️ الضوابط <a href="#controls" id="controls"></a>

`Data Key` أدخل سلسلة نصية لتحديد المفتاح الذي سيتم تخزين القيمة تحته. استخدم أسماء واضحة وفريدة حتى تتمكن الـ blocks الأخرى من قراءة البيانات الصحيحة.

* ميزة الإكمال التلقائي تساعد في اختيار المفاتيح المحلية الموجودة عند توفرها.
* المفاتيح هي تسميات نصية عادية؛ المطابقة يجب أن تكون دقيقة عند القراءة.

## ⚙️ كيفية العمل <a href="#how-it-works" id="how-it-works"></a>

* عند تشغيل الـ block، أي قيمة على مدخل `Generic` تُحفظ تحت الـ `Data Key` المختار في مخزن السيناريو المحلي.
* إذا لم تُزوّد بيانات، لا يتم كتابة شيء.
* تظل القيمة المحفوظة متاحة للـ blocks الأخرى التي تقرأ نفس المفتاح حتى تُكتب قيمة جديدة فوقها أو ينتهي السيناريو.

## 🎯 الميزات <a href="#features" id="features"></a>

* تخزين أي نوع بيانات (صور، أرقام، قوائم، نص).
* تخزين بسيط ومُستمر داخل السيناريو الجاري تشغيله.
* إكمال تلقائي للمفاتيح المحلية لتقليل الأخطاء الإملائية.
* مصمم لمشاركة النتائج الوسيطة بسرعة وتمكين دوائر محلية.

## 📝 الاستخدام <a href="#usage" id="usage"></a>

1. اكتب اسمًا وصفيًا في حقل `Data Key` (مثال: "last\_detection" أو "calibration\_matrix").
2. وصل بلوك مُنتج إلى مدخل `Generic` ليكون هناك قيمة أثناء وقت التشغيل.
3. استخدم بلوك القراءة المقابل (مثلاً `Data Read Local`) في مكان آخر من السيناريو لاسترجاع القيمة باستخدام نفس المفتاح.

## 💡 نصائح وحيل <a href="#tips-and-tricks" id="tips-and-tricks"></a>

* استخدم أسماء مفاتيح واضحة (مثلاً تضمين النوع أو المصدر: "camera1\_frame"، "threshold\_value") لتجنب الكتابة فوق بيانات غير مقصودة.
* لقراءة القيمة المخزنة داخل نفس السيناريو استخدم `Data Read Local`. لمشاركة البيانات عبر سيناريوهات استخدم `Data Write Global` و `Data Read Global`.
* ادمجه مع `Data Memory` إذا أردت أن تبقى القيمة دون تغيير حتى يتم تحديثها صراحة.
* إذا رغبت بتصدير البيانات المهيكلة لاحقًا، قم بتحويلها إلى تنسيق سهل (مثلاً باستخدام `Data to JSON`) ثم احفظها عبر `CSV Export` أو بلوكات التصدير الأخرى.
* استخدم `Debug Input` لفحص ما يُكتب تحت مفتاح معين أثناء بناء التدفق.
* استخدم `Replace None` قبل الكتابة إذا أردت ضمان وجود قيمة احتياطية عند فراغ المدخل.

## ✅ أفضل الممارسات <a href="#best-practices" id="best-practices"></a>

* تجنب إعادة استخدام نفس المفتاح لأنواع بيانات غير مرتبطة (مثلاً صورة مقابل رقم) — فضّل مفاتيح مميزة.
* اجعل المفاتيح قابلة للقراءة البشرية لتسهيل التصحيح والصيانة.
* عند بناء دوائر تغذية راجعة، كُن صريحًا بشأن أي الـ blocks تقرأ وتكتب نفس المفتاح لتقليل الغموض.

## 🛠️ استكشاف المشاكل وإصلاحها <a href="#troubleshooting" id="troubleshooting"></a>

* عدم العثور على قيمة عند القراءة: تأكد من التهجئة الدقيقة للـ `Data Key` في كلا بلوكَي الكتابة والقراءة.
* نوع قيمة غير متوقع: تحقّق أي بلوك كان آخر من كتب إلى نفس المفتاح وتأكد من تناسق أنواع البيانات.
* صعوبة تتبع البيانات: أضف `Debug Input` أو استخدم `Data Read Local` مؤقتًا مع مخرج مرئي لفحص القيم المخزنة.
* ظروف التزامن / مشاكل الترتيب: تذكر أن المخزن المحلي لا يضمن ترتيب التنفيذ — صمم التدفق وفقًا لذلك أو أعد هيكلة باستخدام بلوكات تحكم/تدفق أوضح.
