القواعد: التحقق والمفاتيح
تُبقي القواعد بياناتك نظيفة — حقول مطلوبة، حدود، أنماط، مفاتيح والمزيد. أضِفها في ورقة Rules_ (أو Validation_)، قاعدة واحدة لكل صف، عبر هذه الأعمدة: Field وRule Type وValue وMessage وSection وForm. يحدد نوع القاعدة ما الذي يُفرَض:
| نوع القاعدة | التأثير |
|---|---|
| required | يجب أن يكون للحقل قيمة. قد يضيف عمود Value مقارنة — مثلاً على end_date: "greater or equal to start_date". |
| min / max | حدود. يمكن أن يكون الحد رقمًا أو تاريخ ISO أو اسم حقل آخر ("end_date | min | start_date" يعني end ≥ start، مع إدراك التاريخ). فقط min/max الرقمي يجعل الحقل مطلوبًا أيضًا. |
| min_length / max_length | حدود طول السلسلة النصية. |
| pattern | يجب أن تطابق القيمة تعبيرًا نمطيًا. |
| key | يضع علامة على الحقل كمفتاح عمل للنموذج — يصبح مطلوبًا، وتطابق عمليات الاستيراد السجلات الموجودة بناءً عليه. يمكن أن يكون للنموذج مفتاح واحد فقط. |
| subkey | الجزء الثانوي من مفتاح العمل — واحد لكل نموذج، وفقط مع وجود مفتاح. عند وجود كليهما، تطابق عمليات الاستيراد على المفتاح + المفتاح الفرعي معًا. يقبل أيضًا "sub key" و"sub_key" و"sub-key". |
| sensitive / mask / pii | يعلّم الحقل (من أي نوع) كحساس: مُقنّع في الشبكة والنموذج والطباعة والتصدير — ومشفّر في حالة السكون عندما يكون مشغّلك قد فعّل تشفير الحقول. اكتب اسم قائمة بيانات رئيسية في عمود Form لتعليم أحد أعمدتها بدلاً من ذلك — يُقنّع في صيانة البيانات الرئيسية، ويرث أي حقل في النموذج يشير إلى ذلك العمود (قائمة منسدلة أو قيمة مُعبّأة تلقائياً) التقنيع تلقائياً. |
| conditional / validation | مثلاً "required if status is 'Active'". يمكن أن تكون الشروط مركّبة — AND / OR / XOR — وتستخدم رموزًا (=, !=, >=, <=, >, <) أو كلمات؛ ويمكن أن تكون القيمة المقارَنة حقلاً آخر. |
| between / range | between <low> and <high>. كل حد هو قيمة حرفية أو اسم حقل أو "system date" / "today" (تاريخ الحفظ). يمكن تقييد تاريخ بند بحقول HEADER ("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 | Read-only — the field is shown but never accepts typing. Use it for a value that comes from a default rather than the user: e.g. a submission_date that is required + display with system date in the Value column shows today's date, uneditable. (Unlike calc/auto, the app doesn't compute or assign it — it just presents whatever default it carries.) |
Rules_ row for each. For example, a sales_order that is both the business key and auto-numbered is two rows with the same Field.start_date/end_date، from_date/to_date…)، يفرض التطبيق end ≥ start تلقائيًا — دون الحاجة إلى قاعدة.القيم الافتراضية. يمكن لعمود Value في أي قاعدة أن يحمل قيمة افتراضية: default value "Active" أو default = X. النص المقتبس أو العادي قيمة حرفية؛ أما المرجع المؤهَّل (default = HEADER.currency_code) أو الحساب (default = amount / 100) فيُقيَّم عند فتح النموذج أو صف البند.
يمكن لحقول المال والكمية أن تتحوّل تلقائيًا — مبلغ إلى عملة أخرى، وكمية إلى وحدة أخرى — مع تخزين النتيجة وإبقائها محدّثة. انظر تحويل العملات والوحدات.
For calculated fields — totals, arithmetic, and IF / Boolean logic on a Formula_ sheet — see Formulas.