Spreadsheets

نظرة عامةالتوثيقعروض توضيحيةفيديوهاتسجل الإصدارات

توثيق Spreadsheets

Table of contents

Spreadsheets Extension لـ Qlik

التنزيل والتثبيت

Qlik Sense Desktop

لتثبيت Spreadsheets Extension في Qlik Sense Desktop، قم بما يلي: 

  1. قم بتنزيل Spreadsheets Extension لـ Qlik Sense. 
  2. استخرج الأرشيف. 
  3. افتح نافذة مستكشف ملفات Windows وانتقل إلى دليل Qlik Sense Extensions: 
    ..\Users\<UserName>\Documents\Qlik\Sense\Extensions. 
  4. انسخ مجلد anychart-4x-spreadsheets إلى دليل Extensions. 
  5. أعد تشغيل Qlik Sense Desktop. 

Qlik Sense Server

لتثبيت Spreadsheets Extension على خادم Qlik Sense، 

  1. قم بتنزيل Spreadsheets Extension لـ Qlik Sense. 
  2. افتح Qlik Management Console (QMC): https://<QPS server name>/qmc 
  3. حدد Extensions في صفحة بدء QMC أو من قائمة Start المنسدلة. 
  4. انقر فوق Import في شريط الإجراءات. 
  5. في الحوار، حدد الأرشيف الذي تم تنزيله. اترك منطقة كلمة المرور فارغة. 
  6. انقر فوق Open في نافذة مستكشف الملفات. 
  7. انقر فوق Import. 

Qlik Sense Cloud

لتثبيت Spreadsheets Tree Extension في Qlik Sense Cloud، قم بما يلي: 

  1. قم بتنزيل Spreadsheets Extension لـ Qlik Sense Cloud. 
  2. استخرج الأرشيف. 
  3. الوصول إلى Management Console: 
    1. أضف /console إلى عنوان المستأجر الخاص بك: https://<your tenant address>/console 
    2. أو استخدم رابط التنقل Administration تحت ملف تعريف المستخدم في hub 
  4. انتقل إلى صفحة Extensions وانقر فوق Add. 
  5. في الحوار، حدد الأرشيف الذي يحتوي على Extension في الحزمة – على سبيل المثال، anychart-4x-spreadsheets.zip. 
  6. انقر فوق Add. 
  7. كرر الخطوات أعلاه لإضافة Extensions أخرى. 
  8. في Management Console، انتقل إلى قسم Content Security Policy وانقر فوق Add. 
  9. في الحوار، أعطِ Content Security Policy اسماً – على سبيل المثال، AnyChart. 
  10. اكتب عنوان خادم الأصل: qlik.anychart.com 
  11. حدد التوجيهات التالية: 
    1. connect-src 
    2. font-src 
    3. img-src 
    4. script-src 
    5. style-src 
  12. انقر فوق Add. 

نظرة عامة

يوفر AnyChart Spreadsheets تجربة تحرير جداول قوية تشبه Excel مباشرة في Qlik Sense. مع دعم صيغ Excel الأصلية، والتنسيق الغني، وإعدادات الأوراق المتعددة، واستكشاف البيانات التفاعلي، يتيح هذا Extension للمستخدمين معالجة البيانات وتحليلها بمرونة جدول بيانات كامل الميزات.

استكشف قسم Quick Start للحصول على تجربة عملية على Spreadsheets extension.

 

Quick Start

إنشاء جدول أساسي

يرشدك هذا البرنامج التعليمي خلال إنشاء تصور Spreadsheets أساسي من الصفر.

جولة فيديو

الخطوة 1: إضافة تصور فارغ

  1. في تطبيق Qlik Sense الخاص بك، انتقل إلى Assets Panel
  2. انتقل إلى Custom objects > AnyChart 4
  3. اسحب تصور Spreadsheets إلى ورقتك. 

الخطوة 2: تشغيل Autosave

  • حدد التصور وافتح Properties Panel.
  • انتقل إلى قسم Settings -> Autosave
  • حدد خيار التخزين Browser IndexedDB
     

الخطوة 3: إضافة قسم بيانات

  1. انتقل إلى قسم Data. 
  2. انقر فوق زر Add لإنشاء قسم Data جديد. 
  3. حدد قسم Data المنشأ حديثاً. 
  4. تأكد من تشغيل مفتاح Create synced sheet. 
  5. انقر فوق Edit data وحدد Data . 
  6. أضف Columns المطلوبة. 

 

بعد إكمال هذه الخطوات، سيحتوي التصور الخاص بك على: 

  • ورقة واحدة فارغة: Sheet1 
  • ورقة واحدة مملوءة بالبيانات من قسم Data: DataSheet1 

 

image1.png

الخطوة 4: تنسيق جدول البيانات

  1. إزالة الورقة الفارغة:
    1. انقر بزر الماوس الأيمن على Sheet1 وحدد Delete.
  2. إنشاء جدول على ورقة البيانات المتبقية:
    1. حدد جميع الخلايا التي تحتوي على بيانات.
    2. انتقل إلى قسم INSERT في Ribbon Menu.
    3. انقر فوق Table، ثم أكد في النافذة المنبثقة.
  3. ضبط التنسيق:
    1. قم بتغيير حجم الأعمدة والصفوف حسب الحاجة.
    2. قم بتخصيص أنماط الخطوط باستخدام علامة تبويب HOME.
    3. حدد خلايا الرأس واستخدم أدوات المحاذاة ضمن Font Alignment.


3.png

 

 


 

الخطوة 5: إضافة مخطط

  1. حدد جميع الخلايا التي تحتوي على بيانات. 
  2. انتقل إلى علامة تبويب INSERT في Ribbon Menu. 
  3. انقر فوق Insert Chart واختر نوع مخطط يناسب بياناتك. 
  4. انقر فوق OK. 

قم بتغيير موضع المخطط الخاص بك في أي مكان على الورقة.

اختياري: تصدير جدول البيانات الخاص بك إلى Excel

إذا كنت ترغب في مواصلة العمل في أداة أخرى مثل Excel: 

  1. انتقل إلى علامة تبويب FILE في Ribbon Menu. 
  2. انقر فوق Export
  3. حدد خيار Excel file
  4. قم بتكوين إعدادات التصدير الخاصة بك باستخدام Save Flags
  5. انقر فوق زر Export Excel File
  6. قم بتسمية ملفك في النافذة المنبثقة وانقر فوق OK. 

بعد ذلك، سيبدأ التنزيل تلقائياً، وسيكون ملف .xlsx الخاص بك جاهزاً للفتح في Excel أو أي برنامج متوافق. 

استخدام قالب Excel موجود

 

يرشدك هذا الدليل خلال كيفية استخدام AnyChart Spreadsheets extension في Qlik Sense لتحويل قالب Excel إلى جدول بيانات تفاعلي بالكامل ومدفوع بالبيانات. 

جولة فيديو

المتطلبات الأساسية

  • تطبيق Qlik Sense مع تثبيت AnyChart Spreadsheets extension 
  • ملف القالب: personal-bundet.xlsx 

الخطوة 1: تحميل البيانات إلى Qlik

  1. قم بتحميل ملف personal-budget.xlsx إلى Attached Files في تطبيق Qlik الخاص بك. 
  2. افتح Data Load Editor واستخدم البرنامج النصي التالي لتحميل جداول Budget و Transactions: 
LOAD 
Category, 
Budget 
FROM [lib://AttachedFiles/personal-budget.xlsx] 
(ooxml, embedded labels, header is 3 lines, table is Budget) 
Where Upper(Trim(Category)) <> 'TOTAL'; 
LOAD 
"Date", 
Description, 
Category, 
Amount 
FROM [lib://AttachedFiles/personal-budget.xlsx] 
(ooxml, embedded labels, header is 1 lines, table is Transactions); 
  1. انقر فوق Load Data. 

الخطوة 2: إضافة Spreadsheets Extension

  1. أنشئ ورقة جديدة في تطبيق Qlik الخاص بك وافتحها. 
    ادخل إلى Edit Mode
  2. من قسم Custom Objects > AnyChart ، اسحب تصور Spreadsheets Table إلى اللوحة. 

الخطوة 3: تشغيل Autosave

  1. حدد التصور وافتح Properties Panel.
  2. انتقل إلى قسم Settings -> Autosave
     

الخطوة 4: استيراد قالب Excel

  1. أثناء تحديد التصور، انتقل إلى علامة تبويب FILE في Ribbon Menu. 
  2. انقر فوق Import Excel File
  3. حدد ملف personal-budget.xlsx

يحتوي القالب على ورقتين: 

  • ورقة Budget 
  • ورقة Transactions 

الخطوة 5: إنشاء أقسام البيانات

  • افتح Properties Panel وانتقل إلى علامة تبويب Data. 
  • انقر فوق Add لإنشاء قسم Data الأول: 
    • إضافة dimension: 
      • Category 
    • إضافة measures: 
      • Sum(Budget) 
      • Sum(Amount) 
      • Sum(Budget) - Sum(Amount) 
  • انقر فوق Add مرة أخرى لإنشاء قسم Data الثاني: 
    • إضافة dimensions: 
      • Date 
      • Description 
      • Category 
    • إضافة measure: 
      • Sum(Amount) 
  • تخصيص تسميات المقاييس (على سبيل المثال، إعادة تسمية Sum(Amount) إلى Amount ). 

الخطوة 6: تحضير القالب لبيانات Qlik

  1. انتقل إلى كل ورقة في عرض جدول البيانات. 
  2. امسح قيم الخلايا الثابتة حيث سيتم حقن بيانات Qlik. 
  3. اضبط تنسيق تلك الخلايا على General باستخدام الشريط (هذا مهم لتعمل الصيغ بشكل صحيح). 

الخطوة 7: إدراج صيغ QLIK.DATA

ورقة Budget
  1. في خلية البداية لجدول الميزانية (على سبيل المثال، A4)، أدخل: 

=QLIK.DATA(0,,,TRUE,”TOP”) 

هذا يسحب البيانات من قسم Data الأول ويمكّن كلاً من التسميات والمجاميع. 

  1. نسق خلايا البيانات (على سبيل المثال، أعمدة Budget و Amount و Difference) كـ Currency
ورقة Transactions
  1. في خلية البداية لجدول المعاملات (على سبيل المثال، A2 )، أدخل: 

=QLIK.DATA(1,,,TRUE) 

هذا يستخدم قسم Data الثاني ويعرض التسميات. 

  1. نسق عمود Date كـ Short Date ، وعمود Amount كـ Currency

الخطوة 8: التنسيق النهائي والحفظ

  1. قم بإجراء أي تعديلات نهائية على التنسيق. 
  2. انقر فوق علامة تبويب USER في الشريط وحدد Save to app لتخزين تغييراتك. 

النتيجة

لديك الآن جدول بيانات تفاعلي بالكامل يجمع بين: 

  • تخطيط Excel مألوف 
  • بيانات Qlik حية 
  • حسابات ديناميكية باستخدام QLIK.DATA 

العروض التوضيحية

قريباً. 

الأوراق (Sheets)

يدعم Spreadsheets extension العمل عبر أوراق متعددة - تماماً كما في Excel - مما يتيح لك تنظيم بياناتك وحساباتك وتخطيطاتك عبر طبقات منطقية من المصنف. 

يمكن أن تحتوي كل ورقة على مزيج من: 

  • القيم الثابتة — نصوص أو أرقام مكتوبة يدوياً. 
  • الدوال — بما في ذلك المراجع إلى خلايا أخرى، أو نطاقات، أو حسابات. 
  • الخلايا المرتبطة بالبيانات — يتم ملؤها ديناميكياً من بيانات Qlik أو صيغ QLIK. 

الأوراق مستقلة تماماً: 

  • يمكنك استخدام تخطيطات وتصاميم مختلفة لكل ورقة. 
  • قد تعرض كل ورقة بيانات hypercube مختلفة أو لا تعرض أياً منها على الإطلاق. 
  • الهيكل والتنسيق في ورقة واحدة لن يتداخل مع ورقة أخرى. 

المراجع بين الأوراق

تماماً كما في Excel، يمكنك الرجوع إلى الخلايا من أوراق أخرى باستخدام تنسيق SheetName!CellReference

على سبيل المثال: =Sheet2!A1 

تسحب هذه الصيغة القيمة من الخلية A1 في ورقة تسمى Sheet2

هذا يسهل إنشاء أوراق ملخصة، أو تجميع القيم، أو بناء لوحات معلومات تجمع مخرجات أوراق متعددة. 

يمكنك إعادة تسمية الأوراق وإعادة ترتيب علامات تبويبها بحرية، مما يوفر مرونة في كيفية تصميم هيكل المصنف. 

البيانات

يقدم Spreadsheets extension نموذج بيانات يدمج محرك Qlik الارتباطي مع بيئة تحرير مرنة تشبه Excel. يغطي هذا القسم كيفية هيكلة بيانات Qlik داخل Extension وكيفية ربطها بمحتوى جدول البيانات. 

أقسام البيانات (Data Sections)

تحدد أقسام Data مجموعات بيانات قابلة لإعادة الاستخدام مبنية من dimensions و measures الخاصة بـ Qlik. تعمل هذه كجسر بين Qlik ولوحة Spreadsheets. 

نظرة عامة على أقسام البيانات

  • يتكون قسم Data من Columns، حيث يكون كل عمود عبارة عن Dimension أو Measure من Qlik. 
  • ترتيب Columns قابل للتخصيص. 
  • تتم إدارة Data Sections من Properties Panel الخاص بـ Spreadsheets extension. 
  • يمكن إعادة استخدام كل Data Section عبر الأوراق أو الجداول ويدعم أوضاع اتصال متعددة (انظر Connecting Data Sections ). 

المجاميع (Totals)

يدعم كل قسم Data المجاميع التلقائية لكل أعمدة Measure: 

  • قم بتمكين المجاميع من علامة تبويب Presentation في تكوين قسم Data. 
  • التكوين: 
    • Position: Top / Bottom / None 
    • Label: تخصيص النص (على سبيل المثال، "Total"، "Summary") 

يتم حساب المجاميع بواسطة Qlik وتحديثها ديناميكياً بناءً على التحديدات. 

الأعمدة (Columns)

يمثل كل عمود في قسم Data إما dimension أو measure من Qlik، على غرار الحقول في جداول Qlik الأصلية. يتم عرض الأعمدة في جدول البيانات لعرض القيم الفعلية من محرك Qlik. 

بشكل افتراضي، يتم عرض الأعمدة بالترتيب الذي أضيفت به — من الأعلى إلى الأسفل — بدءاً من الزاوية العلوية اليسرى للورقة أو منطقة البيانات المحددة. 

النطاق (Range)

يمكنك اختيارياً تحديد نطاق لكل عمود للتحكم في مكان ظهور قيمه بالضبط في الورقة. 

  • مثال (رأسي): C1:C5 سيضع قيم العمود في الخلايا من C1 إلى C5. 
  • مثال (أفقي): C3:H3 سيملأ الخلايا أفقياً عبر الصف 3. 

سيتم عرض القيم التي تتناسب مع النطاق المحدد فقط. إذا كانت القيم الموجودة أكثر من الخلايا المتاحة، فسيتم اقتطاع العمود تلقائياً

ضمان تناسب نطاقات البيانات داخل الورقة 

عند استخدام نطاقات مخصصة للأعمدة — سواء كانت رأسية (مثلاً C1:C10) أو أفقية (مثلاً C3:H3) — من المهم التأكد من أن جدول البيانات يحتوي على مساحة كافية لعرض البيانات. 

يجب أن تتناسب البيانات المعروضة مع نطاق الورقة الحالي، والذي يتم تحديده بعدد الصفوف والأعمدة المرئية. إذا تجاوز نطاق العمود المحدد هذه الحدود، فقد يتم قطع بعض البيانات، أو فشل عرضها بشكل صحيح، أو التسبب في سلوك غير متوقع. 

ضبط أبعاد الورقة 

لتجنب مثل هذه المشاكل: 

  1. انتقل إلى علامة تبويب Settings في Ribbon Menu. 
  2. حدد General تحت Sheet Settings. 
  3. قم بزيادة Row Count و/أو Column Count حسب الحاجة. 

6.png

السلوكيات المعروفة والقيود: 

  • التمرير: قد تؤثر إعدادات النطاق على سلوك التمرير (انظر Scrolling section ). 
  • الإزاحة (Offsets): إذا كان للأعمدة المختلفة مواضع بداية مختلفة (مثل A1، B5، C10)، فسيتم محاذاة تحميل البيانات والتمرير بناءً على إزاحة العمود الأول
  • الإزاحة المختلطة: قد يؤدي استخدام نقاط بداية غير موحدة (مثل A3، C5، E7) إلى حدوث فجوات أو عرض غير متوقع أثناء تحميل البيانات. 
  • تحميل البيانات: يحترم التحميل الأول والتحميل الناتج عن التمرير دائماً إزاحة العمود الأول عند حساب عدد الصفوف المطلوب جلبها 

ربط أقسام البيانات

بمجرد تحديد قسم Data، يمكنك ربطه بجدول البيانات الخاص بك بثلاث طرق رئيسية: 

نظرة عامة على أقسام البيانات

توفر كل طريقة ربط توازناً مختلفاً بين الأتمتة والتحكم وهي مناسبة لحالات استخدام مختلفة، ولكل منها إيجابيات وسلبيات معينة: 

الطريقة حالة الاستخدام التحكم الأفضل لـ 
Synced Sheet (افتراضي) ملء ورقة جديدة بالبيانات تلقائياً منخفض المعاينات السريعة، قسم واحد/ورقة 
Table Binding ربط قسم Data بجدول في جدول بيانات متوسط طرق عرض البيانات الجدولية، التخطيطات الثابتة 
صيغ QLIK إدراج البيانات يدوياً عبر الصيغ عالي القوالب المخصصة، التخطيطات المتقدمة 

إنشاء ورقة متزامنة (Create Synced Sheet)

  • يتم تمكينه عبر مفتاح "Create Synced Sheet" عند إضافة قسم Data. 
  • ينشئ تلقائياً ورقة مسمى باسم تسمية القسم ويحقن البيانات. 
  • يناسب التكرار السريع واختبار تكوينات البيانات الجديدة. 

🛈 يتم تحديث الورقة تلقائياً إذا تغير قسم Data. 

ربط الجدول (Table Binding)

ربط قسم Data مباشرة بجدول موجود داخل جدول البيانات. 

الخطوات: 

  1. حدد جدولاً في عرض جدول البيانات. 
  2. انتقل إلى علامة تبويب Table Design في Ribbon Menu. 
  3. افتح قائمة Select Source المنسدلة. 
  4. حدد قسم Data. 

سيتم ملء الجدول تلقائياً ببيانات من القسم المحدد، مع تعيين الأعمدة بالترتيب. 

هذا مثالي للتخطيطات المصممة مسبقاً أو عندما تريد استخدام ميزات Excel مثل صيغ الجداول المنظمة، أو التنسيق، أو المخططات على بيانات Qlik الحية. 

صيغ QLIK

يمكن للمستخدمين المتقدمين إدراج البيانات يدوياً باستخدام صيغ مدركة لـ Qlik. تسمح هذه بالتحكم الكامل في التخطيط والمنطق: 

بالإضافة إلى وظائف ربط البيانات أعلاه، تسمح صيغة QLIK.EXPRESSION() بتقييم تعبيرات Qlik التعسفية مباشرة داخل جدول البيانات — مما يعكس التغييرات في تحديدات Qlik ديناميكياً. 

🛈 ملاحظة: نظراً لأن هذه الصيغ مدعومة ببيانات Qlik حية، فإن التحديثات في تطبيق Qlik (على سبيل المثال، الفلاتر أو التحديدات أو تغييرات البيانات الأساسية) ستؤثر فوراً على جدول البيانات. قد يؤدي هذا إلى زيادة أو نقصان عدد الخلايا المملوءة، لذا خطط لتخطيطك وفقاً لذلك. 

للحصول على تفاصيل بناء الجملة والأمثلة، انظر قسم Qlik-Related Functions  

تحديدات Qlik

إذا كان جدول البيانات الخاص بك مبنياً على Data Sections، فإنه سيستجيب ديناميكياً لتحديدات Qlik. 

يمكنك أيضاً إجراء تحديدات Qlik مباشرة من Spreadsheets extension. 

كيفية تطبيق التحديد من جدول البيانات

  1. حدد الخلايا التي تريد تصفيتها. 
  2. انقر بزر الماوس الأيمن على التحديد. 
  3. اختر Qlik Select من قائمة السياق. 

5.png

سيكتشف Spreadsheets extension تلقائياً التحديدات الصالحة ويطبقها على تطبيق Qlik. 

دوال Excel

يدعم Extension معظم دوال Excel الأصلية، بما في ذلك: 

  • الرياضيات والمثلثات: SUM، AVERAGE، ROUND، INT 
  • المنطق: IF، AND، OR، NOT 
  • النصوص: CONCATENATE، LEFT، RIGHT، TEXTJOIN 
  • البحث: VLOOKUP، INDEX، MATCH 
  • التاريخ والوقت: TODAY، NOW، DATEDIF، EOMONTH 
  • المصفوفات: UNIQUE، SORT، FILTER 

والعديد غيرها. 

لا تتردد في استكشاف القائمة الكاملة لدوال Excel المتاحة في قسم Formulas في Ribbon Menu 

6.png

يدعم Spreadsheets extension مجموعة من الصيغ الخاصة بـ Qlik التي تسمح لك بالتفاعل مع أقسام البيانات، أو استخراج القيم، أو التسميات، أو المجاميع، أو تقييم التعبيرات مباشرة في خلايا جدول البيانات. 

تعمل كل دالة بشكل غير متزامن وتعيد قيماً ديناميكية بناءً على نموذج Qlik الارتباطي. 

QLIK.DATA

يجلب ويدرج قيم البيانات من قسم Data تم تكوينه مسبقاً. 

= QLIK.DATA(data_section_label_or_index, [column_label_or_index], [is_horizontal], [show_label], [show_total], [limit]) 

Arguments:

  • data_section_label_or_index – تسمية أو فهرس قسم Data. 
  • column_label_or_index – (اختياري) تسمية أو فهرس العمود (dimension أو measure). 
  • is_horizontal – (اختياري) إذا كان صحيحاً، يتم ملء البيانات أفقياً بدلاً من رأسياً. 
  • show_label – (اختياري) إذا كان صحيحاً، يتضمن تسميات الأعمدة. 
  • totals_position – (اختياري، Enum) يتحكم فيما إذا كان سيتم إدراج قيم الإجمالي وأين. 
    • "INHERIT" – استخدام إعدادات الإجمالي المحددة في لوحة Qlik (قسم التعريف). 
    • "TOP" – إدراج قيم الإجمالي فوق نطاق البيانات. 
    • "BOTTOM" – إدراج قيم الإجمالي أسفل نطاق البيانات. 
    • "NONE" (افتراضي) – لا يتم إدراج أي مجاميع. 
    • 🛈 سيتم معاملة القيم غير الصالحة على أنها "NONE". 
  • limit – (اختياري) يحدد الحد الأقصى لعدد الصفوف (أو الأعمدة، إذا كان أفقياً) التي يتم إرجاعها من قسم Data. هذا ليس هو نفسه تحديد القيود في قسم Data، هذا حد صارم لعدد الصفوف، يرجى استخدام قيود قسم Data إذا كنت بحاجة إلى تقييد مناسب على المقياس. 

حالات الاستخدام:

  • تضمين بيانات Qlik في مناطق محددة من جدول البيانات. 
  • ملء الأوراق بمجموعات بيانات متعددة بشكل مستقل. 
  • عرض البيانات عندما لا يكون الربط التلقائي بين الورقة والقسم مرغوباً فيه. 

QLIK.DATA.LABEL

يعيد تسمية dimension أو measure محدد من قسم Data. 

=QLIK.DATA.LABEL(data_section_label_or_index, column_label_or_index) 

Arguments:

  • data_section_label_or_index – تسمية أو فهرس قسم Data. 
  • column_label_or_index – تسمية أو فهرس dimension أو measure. 

حالات الاستخدام:

  • إظهار رؤوس الأعمدة ديناميكياً. 
  • بناء قوالب عامة أو قابلة لإعادة الاستخدام مع مدخلات بيانات مرنة. 

QLIK.DATA.TOTAL

يعيد قيمة التجميع الإجمالية لمقياس محدد في قسم Data. 

=QLIK.DATA.TOTAL(data_section_label_or_index, column_label_or_index) 

Arguments:

  • data_section_label_or_index – تسمية أو فهرس قسم Data. 
  • column_label_or_index – تسمية أو فهرس العمود . 

حالات الاستخدام:

  • عرض صفوف الإجماليات أو مؤشرات الأداء الرئيسية الملخصة خارج كتلة البيانات الرئيسية. 
  • الإشارة إلى المجاميع المحسوبة بواسطة Qlik دون الحاجة لجمعها يدوياً. 

QLIK.EXPRESSION

يقيم تعبير Qlik ويعيد النتيجة. 

=QLIK.EXPRESSION("=Today()") 

Arguments:

  • query_string – تعبير Qlik محاط بعلامات اقتباس (يجب أن يبدأ بـ =). 

حالات الاستخدام:

 

تقييم التعبير المباشر

جميع القيم التي تعيدها QLIK.EXPRESSION() ديناميكية وتتحدث في الوقت الفعلي بناءً على: 

  • التحديدات التي تمت في تطبيق Qlik 
  • تغييرات البيانات الأساسية 
  • سياق النظام أو الجلسة 

يمكن أن تتغير هذه القيم بين الجلسات أو المستخدمين — وهي مثالية للوحات المعلومات الحية أو وجهات النظر الشخصية. 

نصيحة: استخدم هذه الدالة جنباً إلى جنب مع منطق Excel الأصلي (IF، TEXT، ROUND، إلخ) لإنشاء لوحات معلومات ذكية مباشرة داخل جدول البيانات. 

أمثلة عملية

KPI

من الممكن بناء مؤشرات أداء رئيسية بناءً على صيغ Qlik ثم تطبيق قواعد التنسيق الشرطي لتمييز النتائج بصرياً. 

1. إدراج صيغة KPI 

أدخل تعبير Qlik في خلية. على سبيل المثال، لحساب إجمالي الربح: 

=QLIK.EXPRESSION("=GetFieldSelections(Region. '|')") 

7.png

2. تطبيق التنسيق الشرطي 

استخدم ميزة التنسيق الشرطي في Spreadsheet لتنسيق الخلية ديناميكياً بناءً على نتيجة KPI. 

أمثلة على القواعد: 

  • أخضر إذا كان إجمالي الربح أكبر من 2,400,000,000 
  • أحمر إذا كان إجمالي الربح أقل من 2,400,000,000 

8.png

3. التحديثات المباشرة 

عند تطبيق التحديدات في Qlik، ستتحدث قيمة KPI تلقائياً، وسيتم إعادة تقييم التنسيق في الوقت الفعلي. 

هذا يسهل بناء لوحات معلومات KPI حية حيث تستجيب المؤشرات المرئية فوراً لفلاتر وتحديدات Qlik. 

شريط حالة التحديد (Selection Status Banner)

يسمح لك شريط حالة التحديد بإظهار القيم المحددة حالياً في تطبيق Qlik. يسهل ذلك توفير السياق داخل تقارير جدول البيانات الخاصة بك، مما يضمن معرفة المستخدمين النهائيين دائماً بالفلاتر النشطة. 

على عكس مؤشرات الأداء الرئيسية البسيطة، نستخدم هنا صيغ Qlik أكثر تعقيداً تجمع بين وظائف متعددة ( IF، GetSelectedCount()، GetFieldSelections() ). يوضح هذا أنك لست مقيداً بالتعبيرات الأساسية — فمن الممكن بناء صيغ مرنة لتناسب احتياجات التقارير الدقيقة الخاصة بك. 

1. إدراج صيغ التحديد 

لإظهار المنطقة (Region) المحددة: 
=QLIK.EXPRESSION("=IF(GetSelectedCount(Region) = 0, 'No selection (All Regions)', GetFieldSelections(Region, ' | '))") 

لإظهار الدولة (Country) المحددة: 
=QLIK.EXPRESSION("=IF(GetSelectedCount(Country) = 0, 'No selection (All Countries)', GetFieldSelections(Country, ' | '))") 

2. النتيجة مع التحديدات النشطة 

عندما يطبق المستخدم التحديدات في تطبيق Qlik، يتم تحديث الشريط تلقائياً ليعكس القيم المختارة. 

إذا تم اختيار Europe في Region ← تظهر الخلية Europe

إذا تم اختيار Germany, Latvia, Lithuania في Country ← تظهر الخلية Germany | Latvia | Lithuania.

يستخدم هذا المثال غلاف IF للتعامل مع حالة "عدم التحديد"، ولكن يمكنك تكييف المنطق: 

  • استبدال النصوص بصياغتك الخاصة ("All Regions" ← "All Values"). 
  • دمج حقول متعددة في سطر واحد (على سبيل المثال، المنطقة + السنة). 
  • تطبيق التنسيق الشرطي للتمييز عندما تكون الفلاتر ضيقة جداً أو واسعة جداً. 

App & System Meta (مباشر)

من الممكن عرض البيانات الوصفية للتطبيق مباشرة في جدول البيانات باستخدام وظائف نظام Qlik. يضمن ذلك أن يوضح كل تقرير بوضوح التطبيق الذي جاء منه ووقت آخر تحديث للبيانات. 

1. إدراج صيغ البيانات الوصفية 

اسم المستند: 

=QLIK.EXPRESSION("=DocumentName()") 

الطابع الزمني لإعادة التحميل: 

=QLIK.EXPRESSION("=ReloadTime()") 

11.png

التنسيق (Formatting)

يوفر Spreadsheets extension مجموعة شاملة من أدوات التنسيق المتوفرة في Ribbon Panel، منظمة حسب الأقسام. فيما يلي الأدوات الأكثر استخداماً من علامة تبويب Home، مما يساعدك على تنسيق وهيكلة محتوى جدول البيانات الخاص بك بسرعة. 

Home

  • الخطوط : حجم الخط، اللون، غامق، مائل، تسطير، تعبئة الخلفية، الحدود 
    12.png
  • محاذاة النص : المحاذاة العمودية والأفقية، الاتجاه، المسافة البادئة، الالتفاف، الدمج والتوسيط 
    12.png
  • تنسيقات الأرقام : العملة، النسبة المئوية، التنسيقات المخصصة 
    13.png
  • تنسيق الخلايا : التنسيق الشرطي، تنسيق الجدول، أنماط الخلايا، محررات الخلايا 
    14.png
  • الخلايا : إدراج، حذف، تنسيق 
    15.png
  • التحرير : إدراج دالة، تعبئة، مسح، فرز وتصفية، بحث 
    16.png

 

 

التمرير (Scrolling)

ينفذ Spreadsheets extension التمرير العمودي لدعم التفاعل السلس مع مجموعات البيانات الكبيرة، خاصة عند استخدام Data Sections المتصلة بـ Qlik. هذا السلوك تلقائي ويعتمد على نوع الورقة وكيفية توصيل البيانات. 

يصف هذا القسم كيفية تأثير التمرير على تحميل البيانات وعرضها، ويحدد التفاصيل المهمة لحالات الاستخدام المتقدمة. 

التمرير بشكل عام

  • بينما يقوم المستخدم بالتمرير رأسياً ويقترب من أسفل المنطقة المرئية، يتحقق النظام مما إذا كان يجب إضافة المزيد من الصفوف أو تحميل البيانات. 
  • التمرير الأفقي مدعوم للتنقل فقط ولا يؤدي إلى تحميل البيانات أو توسيع النطاق. 

أوراق البيانات المتزامنة (Synced Data Sheets)

عند استخدام Create Synced Sheet لـ Data Section ، سيقوم جدول البيانات تلقائياً بمعالجة مجموعات البيانات الكبيرة عن طريق تحميل المزيد من الصفوف أثناء التمرير. 

بينما تتحرك لأسفل الورقة، إذا كانت هناك المزيد من بيانات Qlik متاحة، فستظهر بسلاسة أسفل الصفوف المرئية — لا داعي لتشغيل أي شيء يدوياً أو إعادة تحميله. هذا يجعل العمل مع الجداول الطويلة يبدو انسيابياً وغير منقطع. 

إذا لم يتبقَ المزيد من البيانات لتحميلها، فستظل الورقة تسمح لك بالتمرير أكثر، ولكن الصفوف الجديدة ستظهر فارغة. 

يضمن هذا السلوك: 

  • أنك لن تواجه توقفاً مفاجئاً أثناء التمرير. 
  • ظهور البيانات الجديدة فقط عند الحاجة. 
  • بقاء التخطيط متسقاً، حتى عند الوصول إلى نهاية البيانات. 

يمكنك التحكم في مقدار البيانات التي يتم تحميلها في البداية عن طريق ضبط إعداد Rows Count في إعدادات الورقة. 

في الأوراق الأخرى

الأوراق التي لا ترتبط بـ Data Sections من خلال Create Synced Sheet لا تؤدي إلى أي إضافة تلقائية للصفوف أو تحميل للبيانات أثناء التمرير. 

إزاحة النطاق وتحميل البيانات

يحترم النظام إزاحة النطاق للعمود الأول في قسم Data عند حساب سلوك تحميل البيانات. 

  • إذا بدأ نطاق العمود الأول عند صف سفلي (مثلاً A100)، تبدأ الورقة العرض من ذلك الموضع. 
  • تعتمد جميع منطق التمرير وجلب البيانات على إزاحة ذلك العمود الأول. 

القيود والحالات الخاصة

  • النطاقات الأفقية (مثل A1:Z1) ستعرض البيانات بشكل صحيح للمجموعة الأولى من القيم ولكنها لن تدعم تحميل بيانات إضافية أثناء التمرير الرأسي. يجب على المستخدم إدارة التخطيط والرؤية يدوياً في مثل هذه الحالات. 
  • إزاحات الأعمدة المختلطة (مثل A1، B5، C10) قد تؤدي إلى: 
    • محاذاة غير متسقة 
    • فجوات في البيانات المعروضة 
    • ظهور البيانات محملة جزئياً فقط 

يتم محاذاة جلب البيانات دائماً مع إزاحة العمود الأول، بغض النظر عن كيفية تكوين الأعمدة الأخرى. 

اعتبارات الأداء

النطاقات المخصصة ذات الإزاحات الكبيرة أو أعداد الصفوف العالية جداً يمكن أن تزيد بشكل كبير من حجم البيانات أثناء التحميل. 

على سبيل المثال: 

  • قسم Data يحتوي على 5 أعمدة وحد صفوف محدد من قبل المستخدم بـ 10,000 سيحاول تحميل وعرض 50,000 خلية. 
  • قد يؤثر ذلك على الأداء، خاصة في المتصفحات القديمة أو الأجهزة ذات المواصفات المنخفضة. 

للحفاظ على الاستجابة، ضع في اعتبارك: 

  • تحديد عدد الصفوف حيثما أمكن. 
  • تجنب إزاحات البداية الكبيرة بشكل غير ضروري. 

فتح / حفظ

تتيح لك وظيفة Open / Save في قائمة File الحفاظ على محتوى جدول البيانات الخاص بك وإعادة استخدامه ومشاركته. 

يمكنك الاختيار من بين موقعي تخزين لحفظ وتحميل تكوينات جدول البيانات الخاص بك. يمكن تمكين أو تعطيل كل خيار في Properties Panel. بمجرد التمكين، سيظهر القسم المقابل في قائمة File.

الخيار 1: سطح المكتب (Desktop)

  • يحفظ تكوين جدول البيانات كملف JSON على جهاز الكمبيوتر الخاص بك. 
  • الأفضل للمشاركة المباشرة مع مستخدمين أفراد أو الاحتفاظ بنسخ خاصة. 

لفتح ملف محفوظ: 

  1. انتقل إلى قائمة File ← Open ← Desktop. 
  2. انقر فوق Select File. 
  3. اختر ملف تكوين JSON المحفوظ مسبقاً. 

الخيار 2: مكتبة المحتوى (Content Library)

  • يحفظ التكوين الخاص بك كملف JSON داخل مكتبة محتوى Qlik المختارة. 
  • مشابه لخيار سطح المكتب، ولكن يتم تخزين الملف في Qlik بدلاً من محلياً. 
  • الأفضل للحفاظ على إصدارات متعددة من إعدادات جدول البيانات التي يمكن لجميع المستخدمين الذين لديهم وصول إلى مكتبة المحتوى الوصول إليها. 

نصيحة: للتغييرات المؤقتة التي لا تحتاج إلى حفظ، استخدم وظيفة Autosave

Autosave

تتيح لك وظيفة Autosave الحفاظ على التغييرات في جدول البيانات الخاص بك دون حفظها صراحة في تكوين مستقر. 

عند تمكينها، يتم تسجيل أي تغيير تجريه تلقائياً بعد 3 ثوانٍ من عدم النشاط. يتم تخزين هذه التغييرات المحفوظة تلقائياً محلياً في متصفحك وهي متاحة لك فقط (لا تتم مشاركتها مع مستخدمين آخرين). 

هناك ثلاثة خيارات للتخزين: 

22.png

الخيار 1: جلسة النافذة (Window Session)

  • يحفظ التكوين الحالي في جلسة متصفحك. 
  • تظل التغييرات متاحة طالما بقيت نافذة المتصفح مفتوحة. 
  • سيؤدي إغلاق المتصفح إلى تجاهل جميع التغييرات المحفوظة تلقائياً. 

الخيار 2: Browser IndexDB

  • يحفظ التكوين الحالي في تخزين IndexedDB الخاص بالمتصفح. 
  • يتم الحفاظ على التغييرات حتى بعد إغلاق المتصفح وإعادة فتحه. 
  • الأفضل للاحتفاظ بعملك الشخصي الجاري عبر جلسات متعددة. 

الخيار 3: معطل (Disabled)

  • يوقف تشغيل Autosave تماماً. 
  • لا يتم الحفاظ على أي تغييرات تلقائياً. 

ملاحظة: استخدم Window Session للعمل المؤقت، و IndexedDB للمسودات الشخصية المستمرة، أو Disabled إذا كنت تريد الحفظ اليدوي فقط. في الوقت نفسه، لا يوصى بتخزين التغييرات المؤثرة لفترة طويلة باستخدام Autosave. فكر في استخدام خيارات الحفظ المستقرة للتغييرات طويلة المدى. 

سجل الإصدارات (Version History)

عند تمكين وظيفة Autosave، يصبح خيار Version History متاحاً في قائمة File.

يسمح لك سجل الإصدارات بالوصول إلى أحدث الإصدارات المحفوظة تلقائياً لجميع المستخدمين المصرح لهم الذين لديهم وصول إلى التطبيق.
بمعنى آخر، عندما يقوم المستخدمون بإجراء تغييرات على جدول البيانات، ستظهر أحدث إصداراتهم المحفوظة تلقائياً في علامة تبويب Version History — مما يسهل مراجعتها واستعادتها.

يمكنك تصفح كل إصدار محفوظ لفحص محتوياته.
انقر فوق Apply لاستعادة إصدار محدد كحالة جدول البيانات الحالية الخاصة بك.

  • إذا لم تكن مالك تطبيق Qlik، فإن الإصدار المطبق سيؤثر فقط على آخر إصدار محفوظ شخصي لك من جدول البيانات.
  • إذا كنت مالك التطبيق، فإن تطبيق إصدار سيؤدي إلى تحديث التكوين الافتراضي لجدول البيانات لجميع المستخدمين.

استيراد / تصدير (Import / Export)

يوفر Spreadsheets extension أدوات قوية لاستيراد وتصدير البيانات، مما يتيح تفاعلاً سلساً مع الملفات والبرامج الخارجية 

استيراد ملفات Excel أو CSV

لاستيراد البيانات، افتح علامة تبويب FILE في Ribbon Menu وحدد Import. يمكنك تحميل ملف بتنسيق .XLSX (Excel) أو .CSV. 

يتضمن كل نوع استيراد مجموعة من الخيارات القابلة للتكوين التي تتحكم في كيفية معالجة الملف. اعتماداً على التنسيق المحدد، قد تتمكن من الحفاظ على التنسيق، والصيغ، والخلايا المدمجة، وإعدادات الحساب، والمزيد. تضمن هذه الخيارات أن يتصرف المحتوى المستورد ويظهر كما هو متوقع في بيئة Qlik. 

بمجرد الاستيراد، يحافظ جدول البيانات على هيكله ونمطه، مما يسهل مواصلة العمل مع البيانات أو القوالب الموجودة. يمكنك أيضاً إثراء الملف المستورد بمخططات مدفوعة بـ Qlik، أو أوراق إضافية، أو منطق محسوب. 

التصدير إلى Excel أو CSV أو PDF

لتصدير جدول البيانات الخاص بك، انتقل إلى علامة تبويب FILE واختر Export. يمكنك حفظ المصنف الحالي بتنسيق .XLSX أو .CSV أو .PDF، حسب احتياجاتك. 

يتضمن كل تنسيق تصدير لوحة تكوين خاصة به، مما يسمح لك بتخصيص المخرجات. على سبيل المثال، يمكنك اختيار تضمين الأنماط أو الصيغ أو عناصر التخطيط أو الرؤوس أو التحكم في كيفية التعامل مع الخلايا المدمجة والفارغة. تساعد هذه الخيارات في ضمان احتفاظ مستندك المصدر بالهيكل المطلوب ودقة المحتوى. 

ملاحظة: عند التصدير إلى Excel، تأكد من تشغيل علامة “ Include Binding Source ”. وإلا فقد يتلف التصدير. 

Writeback

يسمح لك Spreadsheets extension ليس فقط بالعمل مع البيانات المحملة بالفعل في تطبيق Qlik، ولكن أيضاً بكتابة بيانات جديدة أو محدثة مرة أخرى إلى قاعدة بيانات خارجية. تمكن هذه الإمكانية حالات الاستخدام التفاعلية والتشغيلية حيث يمكن للمستخدمين تحرير البيانات مباشرة في واجهة تشبه جدول البيانات والحفاظ على تلك التغييرات خارج Qlik.

توجد وظيفة Writeback خصيصاً لدعم سير العمل هذا. في هذا القسم من الوثائق، ستتعلم كيفية إعداد بيئة لـ writeback، وتوصيل Spreadsheets extension بخدمة خلفية، واستخدام ميزات writeback بفعالية في تطبيقات Qlik الخاصة بك - من تكوين اتصالات البيانات إلى تحرير البيانات وإعادة تحميل محتوى التطبيق.

نظرة عامة

كيفية هيكلة Writeback

1. Data Config - تحديد اتصالات البيانات

في Data Config، تقوم بتكوين كيفية اتصال Spreadsheets extension بالخلفية الخاصة بك:

  • تحديد HTTP endpoints لقراءة وكتابة البيانات (GET، POST، PUT، DELETE، BATCH).
  • تكوين المصادقة (اختياري).
  • إنشاء Tables منطقية تصف كيفية الوصول إلى جدول قاعدة بيانات.

الجدول (Table) في هذا السياق هو كائن تكوين يمثل:

  • backend endpoint،
  • جدول أو عرض قاعدة بيانات،
  • وقواعد التفاعل معه.

2. TableSheet - تحرير البيانات

في TableSheet، تختار أحد الجداول المهيأة وتربطه بالورقة.

بمجرد الاتصال:

  • يتم تحميل البيانات من الخلفية.
  • يعرض TableSheet عرض جدول يمثل بيانات قاعدة البيانات.

يمكن للمستخدمين:

  • تحرير قيم الخلايا،
  • إضافة صفوف جديدة،
  • حذف صفوف موجودة.

يتم إجراء جميع التغييرات مباشرة في واجهة المستخدم التي تشبه جدول البيانات.
في الخفاء، تترجم هذه الإجراءات إلى طلبات CRUD أو طلبات دفعية (batch) تُرسل إلى الخلفية.

3. حفظ التغييرات وإعادة تحميل البيانات

عندما ينتهي المستخدمون من تحرير البيانات:

  • تُرسل التغييرات إلى الخلفية ويتم حفظها في قاعدة البيانات.
  • تطبيق Qlik نفسه لا يتحدث تلقائياً.
  • لرؤية البيانات المحدثة في مرئيات Qlik، يقوم المستخدم بتشغيل إعادة تحميل بشكل صريح.

يتوفر خياران لإعادة التحميل:

  • Partial Reload
    يحدث البيانات لجلسة المستخدم الحالية.
  • Full Reload
    يعيد تحميل نموذج بيانات التطبيق بالكامل (متاح للمستخدمين المتقدمين فقط).

يتم تشغيل عمليات إعادة التحميل عبر Qlik Engine API وتعتمد على تكوين Load Script الخاص بالتطبيق بشكل صحيح لقراءة البيانات المحدثة من الخلفية.

Backend لـ Writeback

لدعم writeback، نوفر مرجعاً لخلفية عينة مبنية باستخدام:

  • Node.js
  • Express
  • SQLite

مستودع GitHub مع حل خلفية عينة: https://github.com/AnyChart/writeback-server-example 

هذه الخلفية:

  • تنفذ CRUD و batch endpoints المطلوبة.
  • تخزن البيانات في قاعدة بيانات علائقية.
  • توضح كيفية عمل تكامل writeback من البداية إلى النهاية.

الخلفية المقدمة هي للعرض التوضيحي:

  • وهي مناسبة للاختبار المحلي والعروض التوضيحية.
  • وهي مخصصة كتنفيذ مرجعي.
  • يتوقع من المستخدمين تكييفها أو استبدالها بخلفيتهم الخاصة للاستخدام الإنتاجي.

ما هو Writeback (وما ليس هو)

Writeback هو:

  • صريح - يقرر المستخدمون متى يحفظون ويعيدون التحميل،
  • محكوم - لا توجد عمليات إعادة تحميل في الخلفية أو مجدولة،
  • مرن - يعمل مع كل من الخلفيات التجريبية والمخصصة.

Writeback ليس:

  • يوفر مزامنة في الوقت الفعلي،
  • يوفر تحديثاً تلقائياً في الخلفية،
  • بديلاً لحوكمة بيانات الخلفية.

سير عمل Writeback النموذجي

  1. تكوين اتصالات الخلفية في Data Config.
  2. ربط Table مهيأ بـ TableSheet.
  3. تحرير البيانات مباشرة في TableSheet.
  4. تُرسل التغييرات إلى backend وتُحفظ.
  5. تشغيل Partial أو Full Reload لتحديث بيانات Qlik.

تحرير ← حفظ ← إعادة تحميل ← رؤية البيانات المحدثة في Qlik

________________________________________

البدء السريع (Quick Start) 

يوضح هذا القسم أسرع طريقة للحصول على عرض توضيحي لـ writeback يعمل باستخدام الخلفية المرجعية المقدمة.

يركز هذا الدليل على المسار الناجح ويتجنب الموضوعات المتقدمة مثل الخلفيات المخصصة، أو تقسيم الصفحات، أو التحقق المعقد.

المتطلبات الأساسية

  • Qlik Sense Desktop
  • Extension الخاص بـ Spreadsheet مثبت بالفعل.
  • Node.js 
  • إلمام أساسي بـ:
    • Qlik load scripts
    • إضافة كائنات إلى ورقة Qlik

ملاحظة: ينطبق سير العمل نفسه على منصات Qlik الأخرى.

برنامج تعليمي بالفيديو

قريباً

الخطوة 1: تشغيل خلفية Writeback التجريبية

نحن نقدم خلفية مرجعية عينة مبنية باستخدام Node.js + Express + SQLite.
يمكن تكييفها مع بيئتك الواقعية.

  1. استنساخ المستودع:
    git clone https://github.com/AnyChart/writeback-server-example 
    cd writeback-server
  2. تثبيت التبعيات:
    npm install
  3. تكوين متغيرات البيئة
    أنشئ ملف .env واضبط المتغيرات التالية:
    PORT = 3333
    TOKEN = testtoken123
  4. بدء الخادم:
    npm start
  5. تأكد من أن الخلفية تعمل:
      أ. افتح متصفحاً أو عميل REST
      ب. تحقق من استجابة GET endpoint

http://localhost:<PORT>/employees/get

في هذه المرحلة، تعمل الخلفية وقاعدة البيانات التجريبية محلياً.

الخطوة 2: إنشاء موصل REST في تطبيق Qlik

لجعل تغييرات writeback مرئية في مرئيات Qlik، يجب على التطبيق تحميل البيانات مباشرة من الخلفية.
يتم ذلك باستخدام موصل REST.

  • افتح Data Load Editor.
  • أنشئ موصل REST جديداً.
  • اضبط عنوان URL لـ backend GET endpoint (على سبيل المثال، http://localhost:3333/employees/get).

المصادقة (مهم)

إذا كانت خلفيتك تتطلب مصادقة (كما هو الحال في الخلفية التجريبية):
أضف رأساً (header) مخصصاً للموصل:
Name: Authorization
Value: Bearer YOUR_TOKEN


ملاحظات:

  • يجب أن تتطابق قيمة التوكن مع التوكن المستخدم في Spreadsheets extension.
  • إذا كانت خلفيتك لا تتطلب مصادقة، فيمكن حذف هذا الرأس.
  • تعتمد معالجة المصادقة بالكامل على تنفيذ الخلفية الخاص بك.

احفظ الموصل.

في هذا المثال، يسمى الموصل Writeback_DEMO

الخطوة 3: إضافة برنامج نصي للتحميل لقراءة البيانات من الخلفية

بعد إنشاء موصل REST، أضف برنامج تحميل نصياً يقرأ البيانات منه.

مثال على برنامج تحميل نصي:

LIB CONNECT TO 'Writeback_DEMO';

RestConnectorMasterTable:
SQL SELECT
 "id",
 "Region",
 "Director",
 "Salary",
 "HiredDate",
 "FiredDate"
FROM JSON (wrap on) "root";

[employees]:
REPLACE LOAD
 [id],
 [Region],
 [Director],
 [Salary],
 [HiredDate],
 [FiredDate]
RESIDENT RestConnectorMasterTable;

DROP TABLE RestConnectorMasterTable;

عمليات إعادة التحميل (Partial أو Full) تعيد تشغيل هذا البرنامج النصي لتعكس تغييرات writeback.

الخطوة 4: إضافة Spreadsheet Extension إلى التطبيق

  1. افتح تطبيق Qlik الخاص بك.
  2. أضف كائن Spreadsheet إلى ورقة.

في هذه المرحلة، يكون جدول البيانات مرئياً ولكنه غير متصل بأي مصدر بيانات بعد.

الخطوة 5: تكوين مصدر بيانات (Data Config)

  1. افتح Data Config داخل Spreadsheet extension.
  2. أنشئ Table جديداً.
  3. أدخل بيانات اعتماد مصادقة الخلفية (token).
  4. قم بتكوين backend endpoints (مثال: جدول الموظفين):
    1. GET: http://localhost:3333/employees/get
    2. POST: http://localhost:3333/employees/post
    3. PUT: http://localhost:3333/employees/put
    4. DELETE: http://localhost:3333/employees/delete
    5. BATCH: http://localhost:3333/employees/batch
  5. احفظ التكوين.

تحدد هذه الخطوة كيفية تواصل Spreadsheet extension مع الخلفية.

الخطوة 6: ربط الجدول بـ TableSheet

  1. انتقل إلى TableSheet.
  2. حدد الجدول المهيأ من القائمة.
  3. اربطه بالورقة.

بمجرد الربط:

  1. يتم تحميل البيانات من الخلفية.
  2. يتم عرض عرض جدول يمثل قاعدة البيانات.
  3. تصبح الخلايا قابلة للتحرير.

الخطوة 7: اختبار Writeback

  1. قم بتحرير قيمة موجودة في TableSheet أو أضف صفاً جديداً.
  2. حفظ/تطبيق التغييرات.
  3. تشغيل إعادة تحميل:
    1. Partial Reload (موصى به)
    2. Full Reload (متاح أيضاً)

سيقوم Extension بـ:

  • إرسال التغييرات إلى الخلفية،
  • حفظها في قاعدة البيانات،
  • إعادة تحميل التطبيق عبر Qlik Engine API.

الخطوة 8: التحقق من النتيجة

بعد اكتمال إعادة التحميل:

  • يجب أن تظهر البيانات المحدثة:
    • في مرئيات Qlik الأخرى (مثل الجداول، ومؤشرات الأداء الرئيسية)،
    • وليس فقط داخل Spreadsheet.
  • هذا يؤكد أن:
    • عملية writeback نجحت،
    • تم حفظ البيانات،
    • نجحت إعادة التحميل،
    • برنامج التحميل النصي يقرأ البيانات المحدثة.

تم تحرير البيانات في TableSheet ← حُفظت في قاعدة البيانات ← أصبحت مرئية في مرئيات Qlik.

________________________________________

الهندسة المعمارية (Architecture)

يصف هذا القسم هندسة وظيفة Writeback في Spreadsheets extension وكيفية تفاعل مكوناتها الرئيسية مع بعضها البعض.

التدفق عالي المستوى

على مستوى عالٍ، تتبع هندسة writeback نموذج تفاعل صريحاً يحركه العميل:

  • يقوم المستخدم بتحرير البيانات في Spreadsheets extension.
  • يرسل Extension طلبات writeback إلى Writeback Backend.
  • تقوم الخلفية بحفظ التغييرات في قاعدة بيانات.
  • يقوم المستخدم بتشغيل إعادة تحميل بشكل صريح من Extension.
  • يعيد تطبيق Qlik تحميل البيانات ويحدث المرئيات.

لا توجد مزامنة في الخلفية ولا إعادة تحميل تلقائية بعد writeback.

يتم بدء جميع تغييرات الحالة من خلال إجراءات المستخدم.

المكونات الرئيسية

Data Config (Extension)

Data Config هي طبقة التكوين داخل Extension.

المسؤوليات:

  • تحديد Tables و backend endpoints الخاصة بها لـ:
    • GET
    • POST
    • PUT
    • DELETE
    • BATCH
    • COLUMNS
  • تكوين المصادقة.

الجدول (Table) هو كائن تكوين، وليس البيانات نفسها.

يصف كيفية تواصل Extension مع الخلفية.

TableSheet (Extension)

TableSheet هي طبقة التفاعل مع البيانات.

المسؤوليات:

  • ربط Table مهيأ بعرض مخصص (TableSheet).
  • عرض بيانات الخلفية بتنسيق جدولي.
  • السماح للمستخدمين بـ:
    • تحرير قيم الخلايا،
    • إضافة صفوف،
    • حذف صفوف،
    • إجراء إعادة تحميل
  • جمع التغييرات وإعدادها لـ writeback.

يمثل TableSheet حالة البيانات الحالية المحملة من الخلفية، وليس نسخة مخزنة مؤقتاً أو موثوقة.

Writeback Backend

Writeback Backend هي خدمة HTTP مسؤولة عن استمرار البيانات.

المسؤوليات:

  • قبول طلبات CRUD و batch من Extension.
  • معالجة البيانات الواردة (كما هو محدد في تنفيذ الخلفية).
  • حفظ البيانات في قاعدة بيانات.
  • إرجاع الصفوف المحدثة أو نتائج العمليات.

الحدود المهمة:

  • الخلفية لا علاقة لها بـ Qlik.
  • الخلفية لا تشغل عمليات إعادة التحميل.
  • الخلفية لا تدير جلسات المستخدم داخل Qlik.

تعمل خلفية Node.js + Express + SQLite المقدمة كتنفيذ مرجعي، مخصص للتكييف أو الاستبدال في بيئات الإنتاج.

قاعدة البيانات (Database)

تخزن قاعدة البيانات الحالة الموثوقة للبيانات.

الخصائص الرئيسية:

  • الخلفية هي المصدر الوحيد للحقيقة.
  • يتم تطبيق التغييرات فوراً عند طلبات writeback.
  • لا توجد طبقة مرحلية وسيطة.

يتبع سلوك تعدد المستخدمين نموذج "الفوز لآخر كتابة" (last-write-wins):

  • يتم حل التحديثات المتزامنة بترتيب التنفيذ.
  • لا يتم تطبيق أي منطق قفل أو دمج.

هذا النهج يتجنب النزاعات بحكم التعريف ويحافظ على قابلية التنبؤ بالنظام.

تطبيق ومحرك Qlik (Qlik App and Engine)

يقوم تطبيق Qlik بتحميل البيانات من الخلفية عبر برنامج التحميل النصي الخاص به.

المسؤوليات:

  • جلب البيانات من الخلفية باستخدام GET endpoints.
  • بناء نموذج بيانات التطبيق.
  • تحديث المرئيات بعد إعادة التحميل.

يتم تشغيل عمليات إعادة التحميل من Spreadsheets extension باستخدام Qlik Engine API.

لا توجد:

  • مهام إعادة تحميل QMC،
  • عمليات إعادة تحميل مجدولة،
  • عمليات إعادة تحميل يبدأها الخادم.

المصادقة (Authentication)

تدعم المصادقة بين Spreadsheets extension وخلفية writeback ثلاثة أوضاع:

  • None — يتم إرسال الطلبات دون أي بيانات مصادقة.
  • Basic — تتضمن الطلبات اسم مستخدم وكلمة مرور.
  • Token — تتضمن الطلبات Bearer token في رأس Authorization.

يقوم Extension فقط بإرفاق بيانات المصادقة المحددة بالطلبات الصادرة.

يتم التحكم في منطق المصادقة الدقيق وقواعد التحقق والتحكم في الوصول بالكامل من خلال الخلفية.

المصادقة اختيارية وتعتمد على متطلبات الخلفية.

نموذج إعادة التحميل في الهندسة المعمارية

منطق إعادة التحميل مملوك بالكامل لـ Spreadsheets extension (وليس الخلفية).

  • يتم تشغيل عمليات إعادة التحميل صراحة من قبل المستخدم.
  • يتم دعم Partial و Full reloads.
  • تستخدم عمليات إعادة التحميل Qlik Engine API فقط.

إعادة التحميل هي خطوة منفصلة عن writeback وهي ليست تلقائية أبداً.

ملخص الهندسة المعمارية

هندسة writeback بسيطة وصريحة عمداً:

  • تعيش واجهة المستخدم والتفاعل في Spreadsheets extension.
  • يتم التعامل مع الاستمرارية بواسطة خدمة خلفية.
  • إعادة تحميل البيانات تعتمد على المستخدم ومدركة للجلسة.
  • سلوك تعدد المستخدمين حتمي عبر "الفوز لآخر كتابة".
  • لا QMC، ولا مهام إعادة تحميل، ولا عمليات خلفية.

يحافظ هذا التصميم على فصل المسؤوليات بوضوح ويسمح للحل بالتوسع من العروض التوضيحية إلى بيئات الإنتاج دون إعادة كتابة هندسية.

________________________________________

إعداد الخلفية (Backend Setup)

الغرض من Writeback Backend

Writeback backend هو مكون مطلوب يحافظ على تغييرات البيانات التي تمت في Spreadsheets extension.

وتشمل مسؤولياته:

  • قبول طلبات writeback من Extension،
  • كتابة البيانات في قاعدة بيانات،
  • إعادة السجلات المحدثة إلى العميل.

الخلفية مفصولة عمداً عن Qlik ولا تدير عمليات إعادة التحميل أو الجلسات أو منطق واجهة المستخدم.

الخلفية التجريبية (التنفيذ المرجعي)

نحن نقدم خلفية تجريبية مبنية باستخدام:

  • Node.js
  • Express
  • SQLite

تعمل هذه الخلفية كـ:

  • عرض توضيحي جاهز للتشغيل للاختبار المحلي،
  • تنفيذ مرجعي لبناء خلفيتك الخاصة.

وهي توضح:

  • CRUD و batch endpoints المطلوبة،
  • تنسيقات الطلب والاستجابة المتوقعة،
  • معالجة المصادقة الأساسية،
  • أنماط التفاعل مع قاعدة البيانات.

الخلفية التجريبية ليست من الدرجة الإنتاجية وهي مخصصة لأغراض العرض والتعلم.

تشغيل الخلفية التجريبية

يتم الاحتفاظ بالتعليمات التفصيلية لتشغيل وتكوين الخلفية التجريبية في مستودع GitHub:

Writeback Server Repository - https://github.com/AnyChart/writeback-server-example 

يغطي ملف README الخاص بالمستودع:

  • خطوات التثبيت،
  • متغيرات البيئة،
  • إعداد المصادقة،
  • مخطط قاعدة البيانات،
  • النقاط الطرفية (endpoints) المتاحة،
  • طلبات الأمثلة.

استخدام خلفيتك الخاصة

لست ملزماً باستخدام الخلفية التجريبية.

يمكن استخدام أي تنفيذ للخلفية، طالما أنه:

  • يكشف عن CRUD و batch endpoints متوافقة،
  • يقبل ويعيد بيانات JSON،
  • يحافظ على التغييرات بشكل موثوق،
  • يفرض المصادقة والتحقق حسب الحاجة.

المسؤولية عن:

  • التحقق من صحة البيانات،
  • الأمان،
  • التحكم في الوصول،
  • القابلية للتوسع

تقع على عاتق تنفيذ الخلفية.

يجب أن تتبع CRUD endpoints المتطلبات التالية:

العملية

نوع الطلب

بيانات الطلب

بيانات الاستجابة

update

POST

البيانات المحدثة

البيانات المحدثة

read

GET

لا توجد بيانات

مصفوفة السجلات

delete

DELETE

البيانات المحذوفة أو مصفوفة البيانات

لا توجد قيود

create

POST

البيانات المدرجة

البيانات المدرجة

getColumns

GET

 

مصفوفة أعمدة، حيث يحتوي كل عمود على الخصائص:

خاصية 'field' هي اسم العمود.

خاصية 'dataType' هي نوع بيانات العمود.

خاصية 'defaultValue' هي القيمة الافتراضية للسجل في العمود.

خاصية 'isPrimaryKey' هي العمود الأساسي.

batch

POST

مصفوفة كائنات، حيث يحتوي كل كائن على خاصية 'type'.

يمكن أن يكون نوع هذه العملية 'update' أو 'insert' أو 'delete' أو 'addColumn' أو 'updateColumn' أو 'removeColumn'.

خاصية 'dataItem' هي السجل الحالي.

خاصية 'sourceIndex' هي فهرس السجل.

خاصية 'oldDataItem' الاختيارية هي السجل الأصلي.

خاصية 'column' الاختيارية هي العمود الحالي.

خاصية 'data' الاختيارية هي القيمة الافتراضية للعمود المضاف حالياً.

خاصية 'originalColumn' الاختيارية هي العمود الأصلي.

على سبيل المثال:

[ {"type":"addColumn","column":{...}},

{"type":"updateColumn","column":{...}, "originalColumn":{...}},

{"type":"removeColumn","column":{...}},

{"type":"delete","dataItem":{...}, "sourceIndex":5},

{"type":"insert","dataItem":{...}, "sourceIndex":3},

{"type":"update","dataItem":{...}, "oldDataItem":{...}, "oldDataItem":{...}, "sourceIndex":1}]

مصفوفة كائنات، حيث يحتوي كل كائن على خاصية 'succeed' التي تشير إلى نجاح العملية أو فشلها، وخاصية 'data' اختيارية، وهي السجل الحالي وفقط لعملية 'insert'.

على سبيل المثال:

[{"succeed":true}, {"succeed":false}, {"succeed": true},

{"succeed":true}, {"succeed":false}, {"succeed": true}]

ملخص الخلفية

  • الخلفية إلزامية لـ writeback.
  • يتم توفير خلفية تجريبية للراحة والمرجع.
  • يجب أن تستخدم عمليات النشر الإنتاجية خلفية مخصصة.
  • يتم توثيق تفاصيل تنفيذ الخلفية في GitHub.

________________________________________

تكوين Extension (Extension Configuration)

يركز هذا القسم على تكوين Spreadsheets extension داخل تطبيق Qlik بحيث يمكنه التواصل مع writeback backend وحفظ تغييرات البيانات وتشغيل عمليات إعادة التحميل.

نظرة عامة على تكوين مصدر البيانات

تتم إدارة تكوين Writeback من خلال نافذة Data Source.

في هذه النافذة، تحدد Table واحداً أو أكثر، حيث يمثل كل Table اتصالاً منطقياً بـ backend endpoints.



للوصول إليها، حدد قسم Data في Ribbon menu، وانقر فوق زر Data Source Config


 

إعدادات الجدول (Table Settings)

المصادقة (Authentication)

يمكن تكوين كل Table بطريقة مصادقة.
يتم تطبيق الطريقة المختارة على جميع الطلبات المقدمة لهذا الجدول.

الخيارات المتاحة:

  1. None
    لا يتم استخدام مصادقة.
    يتم إرسال الطلبات دون أي رؤوس تفويض.
  2. Basic
    يستخدم زوج اسم مستخدم وكلمة مرور.
    يتم إرسال بيانات الاعتماد باستخدام HTTP Basic Authentication القياسي.
  3. Token
    يستخدم Bearer token.
    يتم إرفاق التوكن بالطلبات كـ Authorization: Bearer <token> header..

المصادقة اختيارية وتعتمد بالكامل على كيفية تنفيذ الخلفية.

ملاحظة على الخلفية التجريبية:

يستخدم خادم writeback التجريبي المقدم من AnyChart مصادقة مبنية على التوكن (Token-based) بشكل افتراضي. يتم ذلك من أجل البساطة والوضوح في التنفيذ المرجعي.

اسم الجدول (Table Name)

اسم منطقي يستخدم داخل Extension.
يتم اختيار هذا الاسم لاحقاً عند ربط Table بـ TableSheet.

تكوين نقطة النهاية (Endpoint Configuration)

لكل عملية، حدد:

  • طريقة HTTP
  • عنوان URL الكامل لنقطة النهاية

العمليات المدعومة:

  • Read (GET)
    تحميل البيانات إلى TableSheet.
  • Create (POST)
    إدراج صفوف جديدة.
  • Update (PUT)
    تحديث الصفوف الموجودة.
  • Delete (DELETE)
    حذف الصفوف.
  • Batch (POST)
    تطبيق عمليات إنشاء/تحديث/حذف متعددة في طلب واحد.
  • Get Columns (GET)
    استرداد البيانات الوصفية للأعمدة من الخلفية.

ملاحظات:

  • مطلوب Read (GET) endpoint لعرض البيانات.
  • تعمل إجراءات writeback فقط إذا تم تكوين النقاط الطرفية المقابلة.
  • إذا كانت نقطة النهاية مفقودة، فلن يعمل الإجراء المرتبط بشكل صحيح.

ربط جدول بـ TableSheet

بعد تكوين Table:

  • انتقل إلى عرض TableSheet، عن طريق اختيار قسم Insert في ribbon menu، والنقر فوق زر TableSheet
  • حدد أحد الجداول المهيأة من القائمة المنسدلة.
  • راقب الجدول المرتبط في TableSheet 

    بمجرد الربط، يعرض TableSheet البيانات التي أرجعها Read endpoint ويسمح بالتحرير وفقاً للعمليات المهيأة.

________________________________________

استخدام Writeback (Writeback Usage)

يشرح هذا القسم كيفية العمل مع writeback داخل تطبيق Qlik، باستخدام واجهة TableSheet.

تحرير الصفوف الموجودة

لتحرير البيانات الموجودة، قم أولاً بتمكين وضع Row Action:

  • افتح قسم Table Sheet Design في ribbon menu.
  • انقر فوق زر Row Action.

بمجرد تمكين وضع Row Action:

  • يمكنك تحرير القيم في أي عمود ليس مفتاحاً أساسياً.
  • أعمدة المفتاح الأساسي للقراءة فقط ولا يمكن تغييرها.

لحفظ التغييرات لصف ما:

  • انقر فوق أيقونة علامة الاختيار (✓) على الجانب الأيسر من الصف.

يؤدي هذا الإجراء فوراً إلى إرسال طلب Update إلى الخلفية.

لتجاهل التغييرات:

  • انقر فوق أيقونة علامة الخطأ (✕) — يعود الصف إلى حالته السابقة.

إضافة صفوف جديدة

لإضافة صف جديد:

  • قم بالتمرير إلى أسفل TableSheet.
  • املأ آخر صف فارغ ببيانات جديدة (يجب ملء خلية واحدة على الأقل في الصف).

إذا كانت الحقول الإضافية مطلوبة، يتم تحديد ذلك من خلال مخطط الخلفية.

لحفظ الصف الجديد:

  • انقر فوق أيقونة علامة الاختيار (✓) على اليسار.
  • يرسل هذا طلب Create إلى الخلفية.

إذا كانت الخلفية تسمح بقيم مفقودة أو فارغة، فسيتم حفظها كما هي.
تعتمد قواعد التحقق على كيفية تنفيذ الخلفية.

حذف الصفوف

لحذف صف:

  • حدد الصف الذي تريد إزالته.
  • انقر فوق أيقونة الناقص (–) على الجانب الأيسر من الصف.

يرسل هذا الإجراء طلب Delete إلى الخلفية.

حفظ التغييرات والإجراءات الدفعية (Batch Actions)

تطبق إجراءات مستوى الصف (أيقونات علامة الاختيار / الناقص) التغييرات فوراً لهذا الصف.
إذا قمت بإجراء تغييرات على صفوف متعددة وتريد تطبيقها معاً:

  • افتح Table Sheet Design في ribbon menu.
  • افتح قائمة Batch المنسدلة.
  • انقر فوق Submit.

يرسل هذا جميع التغييرات المعلقة في طلب دفعة واحد.

ملاحظة: لتمكين وظيفة Batch - قم بتشغيل خيار “Batch” في Data Source Config.

إعادة تحميل البيانات في Qlik

بعد إجراء التغييرات، أعد تحميل التطبيق لتحديث المرئيات الأخرى.

توجد عناصر التحكم في إعادة التحميل في:
Ribbon menu ← Table Sheet Design ← Batch dropdown

الخيارات المتاحة:

  • Partial Reload
  • Full Reload

ملاحظات:

  • يتم تشغيل عمليات إعادة التحميل يدوياً دائماً.
  • تتطلب إعادة التحميل الجزئية (Partial reload) أن يكون Load Script الخاص بالتطبيق مهيكلاً وفقاً لذلك.
  • عند انتهاء إعادة التحميل، تعكس جميع المخططات والجداول في التطبيق البيانات المحدثة.

مثال على سير العمل النموذجي

يبدو سير عمل writeback الشائع كما يلي:

  • تحرير القيم في TableSheet
  • حفظ الصفوف باستخدام علامة الاختيار
  • تشغيل Partial Reload
  • رؤية البيانات المحدثة في المخططات والجداول

هذا يحافظ على writeback صريحاً، وقابلاً للتنبؤ، وسهل التحكم فيه

AI Formula

تسمح ميزة AI Formula بتشغيل استعلامات اللغة الطبيعية باستخدام نموذج ذكاء اصطناعي متصل (في إصدار ألفا يدعم الاتصال بـ OpenAI فقط). يتيح ذلك لجداول البيانات أن تصبح أدوات ذكية وتفاعلية — قادرة على إنشاء أو تحويل المحتوى بسرعة باستخدام مطالبات لغوية. 

التكوين (Properties Panel)

لاستخدام صيغ الذكاء الاصطناعي، انتقل إلى قسم AI Formula في لوحة خصائص Extension وقم بتكوين الإعدادات التالية: 

  • AI server URL 
    نقطة النهاية لـ OpenAI API (مثلاً، https://api.openai.com/v1/chat/completions) 
  • AI model 
    يدعم حالياً: 
    • Gpt-3.5-turbo 
    • Gpt-4 
      (سيتم إضافة نماذج إضافية في المستقبل) 
  • Max tokens per request 
    يتحكم في طول استجابة الذكاء الاصطناعي (افتراضي: 4000) 
  • Formula evaluation mode 
    يحدد وقت استعلام الذكاء الاصطناعي: 
    • On recalculation 
    • Once 
    • On interval 
  • API Key 
    مفتاح OpenAI السري الخاص بك (يجب أن يكون لديه حقوق وصول صالحة للنموذج المحدد) 

استخدام صيغة AI() في جدول البيانات

بمجرد تكوين الإعدادات المذكورة أعلاه، يمكنك استخدام الصيغة التالية مباشرة في خلايا جدول البيانات: 

=AI("Translate this sentence to Spanish: " & A2) 

بناء جملة الصيغة: 

AI(query_string) 

  • query_string – طلب نصي سيتم إرساله إلى النموذج المختار (يمكن أن يكون ثابتاً أو ديناميكياً باستخدام مراجع الخلايا) 

سيتم عرض النتيجة مباشرة في الخلية التي تم إدخال الصيغة فيها. 

التحويل من Table extension

يمكنك تحويل مخطط Qlik Table القياسي إلى Spreadsheets extension. 

  • يتم نقل جميع Columns المهيأة من الجدول الأصلي تلقائياً إلى Data Section الافتراضي لـ Spreadsheet. 
  • يتم إنشاء ورقة مقابلة تحتوي على جميع الأعمدة نفسها الموجودة في الجدول الأصلي. 

كيفية تحويل مخطط Table: 

  1. تأكد من وجود مخطط Table يحتوي على بيانات في ورقة التطبيق الخاص بك. 
  2. ادخل إلى Edit Mode وافتح لوحة Assets
  3. انتقل إلى Custom Objects
  4. ابحث عن Spreadsheets extension. 
  5. قم بسحبه وإسقاطه فوق مخطط Table الحالي. 
  6. حدد Convert

ملاحظة: يعمل التحويل في اتجاه واحد فقط. تحويل Spreadsheet مرة أخرى إلى مخطط Qlik Table قياسي غير مدعوم. 

نصيحة: استخدم هذه الميزة لترحيل الجداول الموجودة بسرعة إلى Spreadsheets وفتح ميزات التحرير والتفاعل المتقدمة. 

مفاتيح الاختصار (Hotkeys)

قائمة مفاتيح الاختصار المتاحة للاستخدام مع Spreadsheet extension. 

المفتاح الإجراء 
Ctrl+Z تراجع (undo) 
Ctrl+Y إعادة (redo) 
Ctrl + Down التنقل للأسفل (navigationBottom) 
Down التنقل لأسفل 
End التنقل للنهاية 
Ctrl+Right التنقل لليمين للنهاية 
Ctrl+Home الذهاب إلى بداية الورقة 
Home التنقل للبداية 
Ctrl+Left التنقل لليسار للبداية 
Ctrl+End الذهاب إلى أسفل يمين الورقة 
Left التنقل لليسار 
Tab الانتقال إلى الخلية التالية 
PageDown التنقل لأسفل الصفحة 
PageUp التنقل لأعلى الصفحة 
Ctrl+PageUp التنقل للورقة السابقة 
Ctrl+PageDown التنقل للورقة التالية 
Shift+Tab الانتقال إلى الخلية السابقة 
Right التنقل لليمين 
Ctrl+Up التنقل للأعلى (navigationTop) 
Up التنقل لأعلى 
Delete مسح 
Back مسح وتحرير 
Enter تثبيت الإدخال والتنقل لأسفل 
Shift+Enter تثبيت الإدخال والتنقل لأعلى 
ESC إلغاء الإدخال 
Shift+Left تحديد لليسار 
Shift+Right تحديد لليمين 
Shift+Up تحديد لأعلى 
Shift+Down تحديد لأسفل 
Shift+Home تحديد حتى البداية 
Ctrl+Shift+Left تحديد حتى البداية 
Shift+End تحديد حتى النهاية 
Ctrl+Shift+Right تحديد حتى النهاية 
Shift+PageUp تحديد لأعلى الصفحة 
Shift+PageDown تحديد لأسفل الصفحة 
Ctrl+Shift+Up تحديد حتى الأعلى 
Ctrl+Shift+Down تحديد حتى الأسفل 
Ctrl+Shift+Home تحديد حتى الأول 
Ctrl+Shift+End تحديد حتى الأخير 
Ctrl+C نسخ 
Ctrl+X قص 
Ctrl+V لصق 
Alt+Enter إدخال سطر جديد 

امتدادات أخرى من AnyChart
Decomposition TreeBullseye ChartCircular gaugeCombo ChartSunburstGantt ProjectGantt ResourceTimelineWaterfall ClassicWaterfall Advanced
تنزيل امتداد Spreadsheets
تنزيل
مشاركة هذه الصفحة
LinkedInFacebookXEmail
---