قواعد الإدخال والحدود
كل مؤسسة تصل في النهاية إلى قواعد تحكم ما يُكتب في الحقول. أكواد العملاء لها شكل متعارف عليه داخل الشركة، والرقم الضريبي له صيغة تفرضها الجهة الضريبية، وإذن الصرف ليس من المفترض أن يحمل مئتي سطر، وحقل ملاحظات كان طوله ٢٥٥ حرفًا كافيًا ثم أصبح ضيقًا على أسلوب عمل إحدى الإدارات.
الجداول الموضحة في هذه الصفحة هي المكان الذي تُسجَّل فيه تلك القواعد. هي التي تقرر ما يُسمح للمستخدم بكتابته وكم يكتب منه. والفارق المهم بينها وبين الإعدادات الشكلية في الصفحة الشقيقة مظهر الحقول والعرض أن معظم ما هنا يفحصه الخادم لحظة حفظ السجل. ومعنى ذلك أن القاعدة تسري مهما كان مصدر البيانات: مستخدم يكتب على الشاشة، أو استيراد من ملف، أو نظام خارجي يدفع سجلات عبر تكامل. القاعدة التي يطبقها المتصفح وحده يمكن تجاوزها، أما القاعدة التي تُفحص عند الحفظ فلا.
كل جدول هنا يبدأ بأعمدة النطاق نفسها — للنوع (For Type) وقائمة الأنواع (Entity List) والحقل (On Field) وغير نشط (Inactive) — وسلوكها واحد في كل مكان. إن لم يكن واضحًا لديك ما معنى السطر «العام» أو كيف يُربط السطر بالشاشة، فاقرأ أولًا إعدادات الحقول والشاشات — نظرة عامة؛ هذه الصفحة لا تعيد شرحه.
تنسيقات الحقول (Field Formats)
هذا هو الجدول الرئيسي لقواعد الإدخال، وأكثر ما ستستخدمه. تصف فيه الشكل الذي يجب أن تكون عليه القيمة، وعندما يحفظ أحدهم سجلًا تخالف قيمته هذا الشكل يُرفض الحفظ برسالة توضح بالضبط أي قاعدة خُولفت. يصحح المستخدم القيمة ويحفظ من جديد.
لنفترض أن أكواد العملاء لديك يجب أن تبدو هكذا CU-000431: تبدأ دائمًا بـ CU-، وبحروف كبيرة دائمًا، وطولها بين ستة وعشرة أحرف، وحروف وأرقام فقط. سطر واحد على العميل، الحقل code، مع بادئة التكويد (Prefix) بقيمة CU-، واقل طول (Min Length) بقيمة 6، واقصي طول (Max Length) بقيمة 10، والحروف المسموح بها (Letter Case Type) = Upper Case، مع تعليم السماح بالارقام (Allow Numbers) والسماح بالحروف (Allow Alpha) — وبذلك لا يستطيع أحد اختراع كود خارج هذا الشكل، لا من الشاشة ولا من خلال استيراد.
الرقم الضريبي هو الحالة الكلاسيكية الأخرى. بدلًا من وصفه بالأطوال والبادئات، تضع تعبيرًا واحدًا في Regular Expression، مثل ^3[0-9]{14}3$ لرقم ضريبة القيمة المضافة السعودي المكوّن من ١٥ رقمًا، فإما أن تطابق القيمة النمط أو تُرفض.
| العمود | ماذا يفعل |
|---|---|
| للنوع (For Type) | الكيان الذي تنطبق عليه القاعدة، مثل العميل أو فاتورة المبيعات. |
| قائمة الأنواع (Entity List) | قائمة مسمّاة بأنواع الكيانات، فيغطي السطر الواحد عدة شاشات. |
| الحقل (On Field) | الحقل الذي تحرسه القاعدة، مثل code أو remarks أو details.item. |
| اقل طول (Min Length) | تُرفض القيم الأقصر من هذا العدد من الأحرف. |
| اقصي طول (Max Length) | تُرفض القيم الأطول من هذا العدد من الأحرف. |
| السماح بالارقام (Allow Numbers) | أزل العلامة لمنع الأرقام في أي موضع من القيمة. |
| السماح بالحروف (Allow Alpha) | أزل العلامة لمنع أي شيء غير الأرقام — مفيد للمعرّفات الرقمية البحتة. |
| بادئة التكويد (Prefix) | يجب أن تبدأ القيمة بهذا النص. |
| نهاية التكويد (Suffix) | يجب أن تنتهي القيمة بهذا النص. |
| المعايير (Criteria Definition) | لا تعمل القاعدة إلا مع السجلات المطابقة لهذه المعايير — انظر أدناه. |
| تطبيق عند التوافق مع الاستعلام (Apply When Query) | لا تعمل القاعدة إلا عند تطابق هذا الاستعلام — انظر أدناه. |
| الحروف المسموح بها (Letter Case Type) | All أو Lower Case أو Upper Case. تُرفض القيم التي تحوي الحالة الخاطئة. |
| لغة الكتابة (Text Language) | All أو Only Arabic أو Only English. تُرفض القيم المكتوبة بالأبجدية الأخرى. |
| يجب مطابقة السطور (Lines Should Match) | تقصر القاعدة على سطور الجدول التي طابقتها المعايير أو الاستعلام فعلًا. |
| تجاهل لاحقة المسودة (Ignore Draft Suffix) | يزيل علامة المسودة من القيمة قبل فحصها. |
| Prevent Leading White Space | يرفض القيم التي تبدأ بمسافة. |
| Prevent Trailing White Space | يرفض القيم التي تنتهي بمسافة. |
| Regular Expression | يجب أن تطابق القيمة هذا النمط. |
القيمة الفارغة مقبولة دائمًا. تنسيقات الحقول تحدد شكل القيمة إن وُجدت، ولا تجعل الحقل إلزاميًا أبدًا. إن أردت إلزام المستخدم بملء الحقل فذلك إعداد آخر.
جعل القاعدة مشروطة
الأعمدة الثلاثة المعايير (Criteria Definition) وتطبيق عند التوافق مع الاستعلام (Apply When Query) ويجب مطابقة السطور (Lines Should Match) موجودة كي تكون القاعدة ضيقة لا شاملة، وتستحق الفهم الجيد لأنها تعمل معًا.
المعايير (Criteria Definition) تشير إلى معايير محفوظة. قبل تطبيق القاعدة يسأل النظام المعايير: هل هذا السجل مما يعنيك؟ فإن كان الجواب لا، تُتخطى القاعدة كليًا وتمر القيمة. بهذا تقول: «نمط الرقم الضريبي ينطبق فقط على العملاء المسجلين في السعودية» — تصفّي المعايير على الدولة، ويُترك العملاء في باقي الدول وشأنهم.
تطبيق عند التوافق مع الاستعلام (Apply When Query) يؤدي الدور نفسه باستعلام بدل المعايير المحفوظة، ويُقيَّم على القيمة محل الفحص. يمكنك استخدامه وحده، أو بعد المعايير لتضييق النطاق أكثر؛ وعند ملء الاثنين يجب أن يجتاز السجل المعايير أولًا ثم الاستعلام ثانيًا.
يجب مطابقة السطور (Lines Should Match) لا يهم إلا إذا كان الحقل داخل جدول. في الوضع الطبيعي، المعايير التي تطابق السجل تجعل القاعدة تنطبق على كل سطور ذلك الجدول. وبتعليم هذا الخيار تُطبَّق القاعدة فقط على السطور التي اختارتها المعايير أو الاستعلام، وتُترك باقي السطور دون مساس. وهكذا تستطيع في فاتورة المبيعات فرض نمط كود على السطور التي تحمل مجموعة أصناف بعينها دون إزعاج بقية الفاتورة.
تجاهل لاحقة المسودة (Ignore Draft Suffix) تسهيل صغير لكن الحاجة إليه متكررة. ما دام المستند مسودة يضيف النظام علامة إلى كوده، فيصطدم بها فحص صارم لأقصى طول أو لنمط Regular Expression ويمنع حفظ المسودة أصلًا. تعليم هذا الخيار يزيل العلامة قبل الفحص، فتحكم القاعدة على الكود الحقيقي.
هذه الشاشة لا تخضع لقواعدها هي
تنسيقات الحقول لا تُطبَّق أبدًا على شاشة إعدادات الحقول والشاشات نفسها. فالسطر العام على اسم حقل مثل code لن يغلق عليك الشاشة التي تحتاجها لإصلاحه — لكن لا تعتمد على ذلك كشبكة أمان في أي مكان آخر. السطر العام الذي تُرك فيه النوع وقائمة الأنواع فارغين ينطبق فعلًا على كل شاشة أخرى فيها حقل بهذا الاسم.
قاعدة واحدة لكل حقل
إذا استهدف سطران الكيان نفسه والحقل نفسه، فلن يبقى إلا أحدهما — لا يُدمجان، والباقي ليس بالضرورة الذي تتوقعه. ضع كل ما تريد فرضه على الحقل في سطر واحد، واحتفظ بهذا السطر داخل سجل واحد. وتوزيع قواعد الحقل نفسه على سجلين يجعل الغالب غير متوقع.
تصل إلى أجهزة نقاط البيع أيضًا
سطر تنسيقات الحقول الذي يستهدف العميل يُنقل إلى أجهزة نقاط البيع مع باقي إعدادات العملاء، فقاعدة الكود التي ضبطتها مركزيًا يلتزم بها أيضًا الكاشير حين ينشئ عميلًا على الجهاز. انظر نقاط البيع — نظرة عامة.
يسري التغيير فور حفظ السجل — بلا إعادة تشغيل وبلا إجراء تضغطه. ولأن الفحص يجري على الخادم فهو ينطبق بالقدر نفسه على السجلات الواردة عبر استيراد السجلات. وهذا في الغالب ما تريده تمامًا، لكنه يعني أن قاعدة أضفتها اليوم قد توقف عملية استيراد روتينية ظلت تعمل سنوات، فيُستحسن تجربة الاستيراد مرة واحدة بعد إضافة قاعدة صارمة.
للمساعدة في بناء المعايير والاستعلام، انظر التحقق بالمعايير و المعايير من محلل النصوص.
القيم المسموح بها للحقول (Field Allowed Values)
بعض الحقول نصية حرة لمجرد أن أحدًا لم يتفرغ لتقييدها. حقل «نوع مرجع السداد» الذي يملؤه الناس بـ cheque وCheque وchq وcheck يستحيل إعداد تقارير عليه. هذا الجدول يحوّل حقلًا نصيًا أو رقميًا أو قائمة اختيار أو حقل نوع كيان إلى قائمة جاهزة: يحصل المستخدم على قائمة يختار منها بدل مربع فارغ.
كل سطر يحمل حتى عشر قيم. وإن لم تكفِ العشر، أضف سطرًا ثانيًا للكيان نفسه والحقل نفسه واكتب العشر التالية — تُدمج قيم كل السطور المطابقة في قائمة واحدة، فخمس وعشرون قيمة تعني ببساطة ثلاثة سطور.
| العمود | ماذا يفعل |
|---|---|
| للنوع (For Type) | الكيان الذي تنطبق عليه القائمة. |
| قائمة الأنواع (Entity List) | قائمة مسمّاة بأنواع الكيانات، فيغطي السطر الواحد عدة شاشات. |
| الحقل (On Field) | الحقل الذي يتحول إلى قائمة اختيار. |
| القيمة المسموح بها ١ … القيمة المسموح بها ١٠ (Allowed Value 1 … 10) | القيم المعروضة، قيمة في كل عمود. اترك غير المستخدم فارغًا. |
| عدم السماح بكتابة القيم يدويا (Restrict Selection) | يحدد هل القائمة اقتراح أم قاعدة — انظر أدناه. |
عدم السماح بكتابة القيم يدويا (Restrict Selection) هو العمود الذي يغيّر طبيعة الميزة. إن تُرك بلا علامة كانت القيم المسجلة مجرد اقتراحات مفيدة: يختار المستخدم إحداها بنقرة، لكنه يظل حرًا في كتابة شيء آخر تمامًا. وبتعليمه تصبح القائمة مغلقة، فلا تُقبل إلا القيم المدرجة. ابدأ بلا علامة ما دمت تستكشف القيم التي يستخدمها الناس فعلًا، ثم علّمه حين تستقر القائمة.
القيد يُحسم على مستوى الحقل كله لا السطر
حين تصف عدة سطور الحقل نفسه، تُجمَع راية القيد عبرها جميعًا. فسطر واحد معلَّم يجعل الحقل كله مقيدًا، ولو تُركت باقي سطوره بلا علامة. إن وزّعت خمس عشرة قيمة على سطرين، فعلّم عدم السماح بكتابة القيم يدويا في السطرين معًا أو اتركه في كليهما — وإلا وجدت قيمًا تبدو اقتراحات وهي مرفوضة.
هذا الإعداد يطبقه المتصفح، فالمستخدم الذي سجّل دخوله بالفعل لن يرى قائمة جديدة أو معدَّلة إلا بعد تسجيل الخروج والدخول من جديد. ويجدر أن تعرف أن القيد فحص من جانب المتصفح: يمنع كتابة الخطأ على الشاشة، لكنه لا يصفّي البيانات الواردة عبر استيراد أو تكامل.
الحقول المعطلة (Disabled Fields)
أبسط جدول في الشاشة. تسمّي كيانًا وحقلًا فيُعرض ذلك الحقل للقراءة فقط: القيمة ظاهرة، لكن المستخدم لا يستطيع تغييرها.
| العمود | ماذا يفعل |
|---|---|
| للنوع (For Type) | الكيان الذي تتأثر شاشته. |
| قائمة الأنواع (Entity List) | قائمة مسمّاة بأنواع الكيانات، فيغطي السطر الواحد عدة شاشات. |
| الحقل (On Field) | الحقل المطلوب عرضه للقراءة فقط. |
هذه الأداة المناسبة للحقول التي تُملأ تلقائيًا ولا ينبغي التشكيك فيها: إجمالي محسوب، أو كود يسنده النظام، أو قيمة منسوخة من مستند مصدر.
تسهيل لا وسيلة تأمين
الحقول المعطلة يطبقها المتصفح وحده. تمنع المستخدم من تعديل الحقل على الشاشة، ولا شيء غير ذلك. البيانات الواردة عبر استيراد أو تكامل ما زالت تستطيع الكتابة في ذلك الحقل، وكذلك أي شيء آخر يتجاوز شاشة التعديل. إن كان الحقل يجب ألا يتغير حقًا — لاعتبار يخص هوية المستخدم أو لحساسية القيمة — فاستخدم تأمين الحقول بدلًا من ذلك، فهو مفروض على الخادم. انظر تأمين الحقول والصفحات وشاشات العرض.
يوجد كذلك خيار في الإعدادات العامة اسمه Allow Filling Disabled Fields with Creators يتيح لأدوات الملء التلقائي في النظام أن تكتب في حقل لا يُسمح للمستخدم بتعديله بيده. ويُترك عادةً مفعَّلًا: المستخدم الذي لا يجوز له كتابة الفرع يدويًا ينبغي مع ذلك أن يُملأ له تلقائيًا. تجده في تبويب التأمين وتسجيل الدخول في الإعدادات العامة.
وكسائر الإعدادات التي يطبقها المتصفح، لا يصل التغيير هنا إلى مستخدم مسجَّل دخوله إلا بعد تسجيل الخروج والدخول من جديد.
أقصى عدد لسطور السندات والملفات (Max Lines Counts For Documents And Files)
الجدول بلا سقف دعوة إلى المتاعب. يلصق أحدهم ورقة إكسل في فاتورة مبيعات فينشئ مستندًا بأربعة آلاف سطر يستغرق فتحه دقيقة، ويُطبع في ستين صفحة، ويبطئ كل تقرير يمر عليه. هذا الجدول يضع حدًا صارمًا لعدد السطور التي يحملها جدول بعينه، ويُفحص الحد على الخادم عند حفظ السجل. والرسالة تذكر اسم الجدول والحد، فيعرف المستخدم فورًا ما حدث وبكم تجاوز.
| العمود | ماذا يفعل |
|---|---|
| الحقل (Field) | الجدول المحدود، مثل details. |
| للنوع (For Type) | الكيان المالك للجدول، مثل فاتورة المبيعات. |
| قائمة الأنواع (Entity List) | قائمة مسمّاة بأنواع الكيانات — انظر التحذير أدناه. |
| أقصى عدد لسطور السندات والملفات (Max Lines Count) | أكبر عدد سطور مسموح به. اتركه فارغًا أو صفرًا لإلغاء الحد. |
سلوكان يستحقان المعرفة قبل ضبط الحد، وكلاهما مقصود وكلاهما يجنّبك مفاجآت غير سارة.
الأول: الحد لا يجمّد البيانات القائمة. إن وضعت حدًا بـ ٢٠٠ وكانت هناك مستندات بها ٣٥٠ سطرًا، تبقى تلك المستندات قابلة للتعديل — فالفحص لا يعترض إلا إذا كان الحفظ سيترك الجدول بعدد سطور أكبر مما كان عليه. يظل بوسع المستخدمين تصحيح سعر في السطر ١٢ من فاتورة قديمة متضخمة؛ لكنهم لا يستطيعون إطالتها أكثر.
الثاني: المستندات التي أنشأها النظام نهائية معفاة. حين يولّد مستند مستندًا آخر تلقائيًا، لا يُوقف المستند المولَّد بحد وُضع أصلًا للإدخال اليدوي. والأمر نفسه أثناء نقل السجلات بين قواعد البيانات عبر Replication. وإلا لصار حدٌّ وُضع لراحة موظفي الإدخال يكسر المسارات الآلية في الخلفية.
عمود قائمة الأنواع لا يعمل في هذا الجدول
ملء قائمة الأنواع هنا لا ينشر الحد حاليًا على الأنواع المدرجة. استخدم للنوع (For Type) وأضف سطرًا لكل كيان. كتابة أكثر قليلًا، لكنها تعمل فعلًا.
أقصى طول للحقول في قاعدة البيانات (Max Fields Length In DB)
هذا الجدول يفعل أمرين مترابطين لكنهما مختلفان تمامًا، وعليك فهم الاثنين قبل استخدامه، لأن أحدهما غير مؤذٍ والآخر يغيّر قاعدة البيانات.
الأمر الأول أنه يغيّر الطول الذي يقبله النظام عند حفظ السجل. للحقول النصية حجم قياسي؛ فإن لم يناسب هذا الحجم أسلوب عمل مؤسستك — حقل ملاحظات يحتاج إلى استيعاب تعليمة طويلة، أو على العكس حقل مرجع تريده قصيرًا مرتبًا — فسطر هنا يرفعه أو يخفضه. والمستخدم الذي يكتب أكثر من الحد تصله رسالة واضحة بأن حجم المُدخل يتجاوز الحجم الأقصى، تذكر الطول الذي كتبه والطول المسموح به.
| العمود | ماذا يفعل |
|---|---|
| للنوع (For Type) | الكيان المالك للحقل. |
| قائمة الأنواع (Entity List) | قائمة مسمّاة بأنواع الكيانات — انظر التحذير أدناه. |
| الحقل (Field) | الحقل الذي يتغير طوله. |
| اقصي طول (Max Length) | الطول الجديد بالأحرف. |
والأمر الثاني لا يتاح إلا عبر إجراء Update Fields Max Length In DB أسفل الجدول. فرفع الطول المقبول لا ينفع كثيرًا إذا ظل التخزين الأساسي بالحجم القديم، ولذلك يمر هذا الإجراء على السطور ويعيد ضبط حجم التخزين ليطابقها.
إجراء Update Fields Max Length In DB يغيّر بنية قاعدة البيانات
هذا الإجراء يعدّل بنية قاعدة البيانات مباشرة. ليس إعدادًا يمكن التراجع عنه بهدوء، وقد يستغرق وقتًا طويلًا على جدول كبير ويحجز الجدول أثناء تنفيذه. تعامل معه كما تتعامل مع أي تغيير بنيوي:
- نفّذه خارج ساعات العمل، حين لا يُدخِل أحد بيانات؛
- تأكد من وجود نسخة احتياطية حديثة ومن أنك اختبرت إمكانية استرجاعها؛
- اجعل الذي ينفّذه شخصًا يفهم ماذا يعني تغيير حجم عمود في النظام؛
- تقليل الطول أخطر من زيادته — تحقق أولًا من أنه لا توجد قيمة قائمة أطول من الحد الجديد.
إن لم تكن متأكدًا، فاضبط الطول في الجدول وتحقق من السلوك الذي تريده، ورتّب تنفيذ الإجراء كمهمة صيانة مخططة بدل الضغط عليه في منتصف اليوم.
الحقول القابلة لتغيير الحجم هي الحقول النصية وما يشبهها فقط: النص العادي والأرقام وقوائم الاختيار والروابط وعناوين البريد الإلكتروني وكلمات المرور والألوان وأرقام الهاتف. وأي شيء غير ذلك — تاريخ أو مربع اختيار أو مرجع إلى سجل آخر — يُرفض، ويخبرك الإجراء بأي حقل رفضه ولماذا بدل أن يفشل بصمت. كما يخبرك إن لم يجد الكيان أو الحقل الذي سميته، وهو المؤشر المعتاد على خطأ إملائي في عمود الحقل.
عمود قائمة الأنواع لا يعمل في هذا الجدول أيضًا
بالنسبة لفحص الطول المطبَّق عند الحفظ، تُتجاهل قائمة الأنواع — استخدم للنوع (For Type) بسطر لكل كيان. (أما إجراء تغيير الحجم نفسه فيقرأ قائمة الأنواع، وهذا التعارض يسهل أن يمر دون انتباه: يُعاد ضبط حجم التخزين بينما لا يتبعه فحص الحفظ. استخدم النوع فيظل الاثنان متسقين.)
أقصى طول لحقول نقاط البيع (Max POS Fields Length In DB)
لأجهزة نقاط البيع تخزينها الخاص وقيودها الخاصة. طابعة الإيصال عرضها عدد ثابت من الأحرف، وشاشة اللمس عند كاشير مزدحم أضيق من شاشة المكتب، والجهاز الذي يجب أن يعمل والشبكة مقطوعة يحتفظ بنسخته الخاصة من البيانات. لذلك فالأطوال التي تناسب المكتب الخلفي ليست دائمًا التي تناسب الكاشير. هذا الجدول يضبطها على حدة.
| العمود | ماذا يفعل |
|---|---|
| النوع (POS Entity Type) | سجل نقاط البيع الذي يتغير حجم حقله. |
| الحقل (Field) | الحقل الذي يتغير طوله. |
| اقصي طول (Max Length) | الطول الجديد بالأحرف. |
يوجد أيضًا عمود نوع الحقل (Field Type)، لكنك لا تملؤه — يستنتج النظام عند الحفظ إن كان الحقل نصيًا أو رقميًا ويضبطه نيابة عنك.
والجانب المريح أنك لست مضطرًا للذهاب إلى الأجهزة. بمجرد حفظ السجل ينتقل التغيير إلى كل جهاز عبر Replication ويُطبَّق هناك، فسلسلة بأربعين فرعًا تُضبط مرة واحدة مركزيًا لا أربعين مرة.
أي سطر هنا يجعل السجل ينتقل إلى الأجهزة
بمجرد أن يحتوي هذا الجدول على سطر واحد، يُعلَّم سجل إعدادات الحقول والشاشات كله للانتقال إلى الأجهزة عبر Replication. وهذا في العادة ما تريده، لكن من المفيد أن تعرف لماذا بدأ سجل كان يبقى على الخادم في الظهور ضمن حركة Replication إلى الأجهزة. والأمر نفسه ينطبق على سطور تنسيقات الحقول التي تستهدف العميل.
لمعرفة موضع الأجهزة في الصورة الأوسع، انظر نقاط البيع — نظرة عامة.
صفحات ذات صلة
- إعدادات الحقول والشاشات — نظرة عامة — أعمدة النطاق، وكيف تُربط السطور بالشاشات، ومتى تسري التغييرات.
- مظهر الحقول والعرض — الأشقاء الشكليون لهذه الجداول، وهم غير مفروضين عند الحفظ.
- تخفيف القيود المدمجة — الاتجاه المعاكس: إرخاء قواعد يفرضها النظام افتراضيًا.
- تأمين الحقول والصفحات وشاشات العرض — حقول للقراءة فقط ومخفية مفروضة على الخادم، حين لا تكفي الحقول المعطلة.
- التحقق بالمعايير — بناء المعايير التي تجعل قاعدة تنسيقات الحقول مشروطة.
- المعايير من محلل النصوص — كتابة الاستعلام وراء تطبيق عند التوافق مع الاستعلام.
- استيراد السجلات — البيانات المستوردة تُفحص بهذه القواعد أيضًا.
- نقاط البيع — نظرة عامة — كيف تصل إعدادات الحقول إلى الأجهزة.