المجتمع · المساعدة

دليل مستخدم Sheetward

حوّل مصنف Excel أو OpenDocument (أو Google Sheet) إلى تطبيق ويب متعدد المستخدمين — نماذج وتحقق وقوائم بحث واستيراد/تصدير والمزيد.

القواعد: التحقق والمفاتيح

القواعد هي وسيلتك لإبقاء البيانات الخاطئة خارج تطبيقك — مبلغ لا يجوز أن يصبح سالبًا، وتاريخ نهاية لا يسبق تاريخ البداية، ورقم فاتورة يجب أن يتبع الصيغة التي تعتمدها. تكتبها في مصنّفك، في ورقة باسم Rules_ (وتعمل أيضًا الصيغتان Rule_ وValidation_). قاعدة واحدة في كل صف، عبر هذه الأعمدة: Field وRule Type وValue وMessage وSection وForm. ويحدّد عمود Rule Type ما الذي يُفرَض:

نوع القاعدةما تفعله
requiredلا يمكن ترك الحقل فارغًا. ويمكن لعمود Value أن يضيف مقارنة أيضًا — على end_date مثلًا: "greater or equal to start_date".
min / maxيحدّد أدنى قيمة مسموح بها أو أعلاها. يمكن أن يكون الحد رقمًا، أو تاريخًا (يُكتب 2026-07-01)، أو اسم حقل آخر — فالقاعدة "end_date | min | start_date" تُبقي تاريخ النهاية في يوم البداية أو بعده. والحد الرقمي وحده (min أو max) يجعل الحقل مطلوبًا أيضًا.
min_length / max_lengthيحدّ من قِصر النص أو طوله — مثلًا رمز مركز تكلفة من 3 أحرف على الأقل.
patternيجب أن تطابق القيمة نمطًا نصيًا (تعبيرًا نمطيًا) — مفيد للصيغ الثابتة مثل أرقام الفواتير أو أرقام ضريبة القيمة المضافة.
keyيجعل الحقل مفتاح العمل للسجل — رقم أمر شراء، أو معرّف موظف. يصبح الحقل مطلوبًا، وتستخدمه عمليات الاستيراد للعثور على السجل المراد تحديثه بدلًا من إنشاء نسخة مكررة. ولا يكون للنموذج إلا مفتاح واحد.
subkeyجزء ثانٍ من مفتاح العمل — واحد لكل نموذج، ولا يأتي إلا مع مفتاح. عند وجود الاثنين، تطابق عمليات الاستيراد على الزوج معًا (معرّف الموظف + الأسبوع مثلًا). يُكتب أيضًا "sub key" أو "sub_key" أو "sub-key".
sensitive / mask / piiيحمي البيانات الخاصة — الرواتب وأرقام الهوية والتفاصيل البنكية. يظهر الحقل (من أي نوع) مقنّعًا في الشبكة والنموذج والمطبوعات والتصدير، ويُخزَّن مشفّرًا عندما يكون مشغّلك قد فعّل تشفير الحقول. ولحماية عمود في جدول بحث بدلًا من ذلك، اكتب اسم تلك القائمة في عمود Form؛ فيُقنَّع العمود في صيانة البيانات الرئيسية، ويُقنَّع معه كل حقل نموذج يقرأ من ذلك العمود — قائمة منسدلة أو قيمة تُعبَّأ تلقائيًا.
publicpublic — للتطبيق المنشور (الإعدادات ← النشر على الويب): تعرض الصفحة العامة فقط الحقول الموسومة بـ public في ذلك النموذج. وبدون قواعد public تعرض الصفحة العامة ما يراه المشاهد. ووسم حقل حساس بـ public يعرضه مقنَّعًا — ولا تُعرض القيمة الحقيقية أبدًا. لا تأثير له داخل مساحة العمل.
conditional / validationمثلًا "required if status is 'Active'". يمكن أن تكون الشروط مركّبة — AND / OR / XOR — وأن تستخدم رموزًا (=, !=, >=, <=, >, <) أو كلمات؛ ويمكن أن تكون القيمة المقارَنة حقلًا آخر. تُقرأ القاعدة طبيعيًا مع "if" الافتتاحية أو بدونها، وتتسامح مع الأقواس — فالصيغتان "(total > 100) then required" و"if total > 100 then required" متطابقتان (مثلًا إيصال مطلوب فقط للمصاريف التي تتجاوز 100).
between / rangeيُبقي القيمة داخل نطاق: between <low> and <high>. يمكن أن يكون كل حد قيمة ثابتة، أو اسم حقل، أو "system date" / "today" (يوم حفظ السجل). ويمكن حتى تقييد تاريخ بند بحقول من الترويسة ("between start_date and end_date from HEADER") — مفيد لإبقاء بنود سجل الدوام داخل فترة الأجر.
auto / autogenيرقّم التطبيق كل سجل جديد نيابةً عنك — بدءًا من 1، أو من الرقم الموجود في عمود Value (100 فيبدأ من 100 ثم 101 ثم 102…). وإذا كان Data type للحقل معرّفًا مولَّدًا (ulid / nanoid)، يولّد التطبيق ذلك المعرّف بآليته الخاصة بدلًا من رقم. الحقل للقراءة فقط، والأرقام التي مُنحت لا تتغيّر أبدًا. كما يعمل الحقل التلقائي مفتاحًا أيضًا، فلا يمكن لقسمه أن يحمل حقل مفتاح منفصلًا.
derivedتُجلب القيمة أو تُحسب، ولا تُكتب أبدًا. قد تأتي من البيانات الرئيسية — سجل كامل بـfrom Products، أو عمود واحد بـProduct.UOM (أو UOM from Product عندما يختلف اسم الحقل عن اسم العمود، كمنتقي وحدة يُملأ من uom) — أو من حساب تاريخ.
calc / calculationالتطبيق يحسب القيمة ويخزّنها — تحويل عملة أو وحدة (انظر تحويل العملات والوحدات). للقراءة فقط ويُحدَّث عند كل حفظ، فلا يفقد دقّته أبدًا؛ وأي قيمة تُكتب فيه أو تُستورد تُتجاهَل. يُكتب أيضًا calculation.
displayيُعرض ولا يُكتب أبدًا. استخدمه لقيمة تأتي من قيمة افتراضية لا من المستخدم — مثلًا حقل submission_date الذي هو required + display مع system date في عمود Value يعرض تاريخ اليوم دون إمكانية تعديله. وبخلاف calc أو auto، لا يحسب التطبيق شيئًا هنا ولا يعيّنه — بل يعرض القيمة الافتراضية التي يحملها الحقل، أيًّا كانت.
يمكن لحقل واحد أن يحمل عدة قواعد. أضف صف Rules_ منفصلًا لكل قاعدة. فحقل sales_order الذي هو key العمل ويُرقَّم بـauto في آن واحد يعني صفّين بنفس Field.
أزواج التواريخ تتحقق من نفسها. عندما يضم قسم زوج تاريخ بداية/نهاية (start_date/end_date، from_date/to_date…)، يتأكد التطبيق من أن النهاية لا تسبق البداية أبدًا — دون الحاجة إلى أي قاعدة.

القيم الافتراضية توفّر الكتابة. يمكن لعمود Value في أي قاعدة أن يملأ الحقل مسبقًا: default value "Active" أو default = X. النص — مقتبسًا كان أم عاديًا — يُستخدم كما كُتب؛ أما الإشارة إلى حقل آخر (default = HEADER.currency_code) أو الحساب الصغير (default = amount / 100) فيُحسبان عند فتح النموذج أو صف البند. والكلمات system date / today / now تملأ تاريخ إنشاء السجل — اقرنها بـdisplay لعرضه للقراءة فقط.

تعيين قيمة افتراضية للوحدة أو العملة. كلاهما يُضبط على القائمة الصغيرة المجاورة للقيمة، لا على عمود القيمة نفسه — فقاعدة على Quantity ستثبّت الرقم لا وحدته. سمِّ القائمة بدلًا من ذلك: Unit (وكذلك UoM أو Units أو unit_of_measure) وCurrency، مع default value "KGM" أو default value "USD" في عمود Value. واضبط Section ليصل الإعداد إلى الجدول الصحيح — فللبنود وللترويسة قائمة خاصة بكل منهما. وأبسط من ذلك إذا كان الرمز ثابتًا دائمًا: اكتبه في عمود Unit أو Currency في صف العينة ليصبح القيمة الافتراضية دون أي قاعدة؛ وتتغلب القاعدة على قيمة العينة عند وجودهما معًا.

الملء التلقائي من البيانات الرئيسية يحدث من تلقاء نفسه: عندما يحتوي جدول البحث الذي تقرأ منه القائمة المنسدلة على أعمدة تحمل أسماء حقول أخرى في النموذج، فإن اختيار قيمة يملأ تلك الحقول — اختر منتجًا، فيصل معه سعره ووحدته. دون الحاجة إلى قاعدة. وإذا فضّلت أن تحدّد نوع الحقل بنفسك بدلًا من ترك Sheetward يستنتجه، أضف عمود Data type إلى ورقة القواعد.

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

لِـالحقول المحسوبة — المجاميع والعمليات الحسابية ومنطق IF والصواب/الخطأ (Boolean) في ورقة Formula_ — انظر الصيغ.