رفع القيود المدمجة
كل شيء تقريبًا في شاشة أعدادات الحقول و الشاشات يضيف قاعدة: قناع يُنسّق رقمًا، تحقق يرفض إدخالًا خاطئًا، معادلة تملأ حقلًا نيابة عنك. أما الجداول الثلاثة في هذه الصفحة فتفعل العكس تمامًا. كل واحد منها يمتد إلى حاجز حماية يفرضه Nama على كل الشاشات، ويوقفه عن العمل للحقل أو الكيان أو نوع السجل الذي تحدده.
هذا ما يجعلها أخطر الإعدادات في الشاشة كلها، ومن الأمانة أن نوضح السبب. كل واحد من الثلاثة موجود لأن هناك حالة عمل حقيقية ومشروعة تحتاجه — مستند مرتجع يجب أن يشير إلى صنف تم إيقافه، تحويل بين فرعين، أو كتالوج أصناف مشترك تستخدمه كل شركات المجموعة. لكن كل واحد منها يزيل أيضًا فحصًا كان يحمي بياناتك في صمت، وهذا الفحص لا يعود من تلقاء نفسه.
اقرأ هذا قبل إضافة أي سطر
هذه الجداول الثلاثة لا تضبط سلوكًا — بل تعطّل حماية. بمجرد حفظ السطر يتوقف النظام عن طرح سؤال كان يطرحه، في كل شاشة يصل إليها السطر. قبل إضافة سطر، يجب أن تكون قادرًا على الإجابة على أمرين: ما الحقل أو نوع السجل المتأثر تحديدًا، وماذا سيحدث إن أخطأ مستخدم هناك. إن كانت إجابة السؤال الأول هي "كل شيء"، فالسطر أوسع مما يجب.
الجداول الثلاثة يفحصها الخادم لا المتصفح، لذا يسري التغيير فور حفظ السجل — بلا إعادة تشغيل وبلا تسجيل خروج.
يبدأ كل جدول أدناه بأعمدة النطاق المعتادة، وهي مشروحة بالكامل في صفحة النظرة العامة: هي التي تحدد أي الشاشات وأي حقل يخصه السطر، كما أن علامة غير نشط توقف سطرًا واحدًا دون حذفه.
السماح باستعمال السجلات الممنوعة من الاستعمال (Allow Usage Of Prevented Records)
الملفات الرئيسية تُحال إلى التقاعد. صنف يُسحب من الكتالوج، عميل يُحظر بعد نزاع على السداد، مورد يُشطب من قائمة المعتمدين. وبدلًا من حذف السجل — وهو ما سيكسر كل مستند تاريخي يشير إليه — تُوضع على السجل علامة تمنع استعماله في المستندات الجديدة. وحين يختاره أحدهم رغم ذلك يفشل الحفظ برسالة تخبره بأن استعمال هذا السجل ممنوع.
هذا المنع مقصود، وهو يسري على مستوى النظام كله. المشكلة أن "لم يعد صالحًا للاستعمال" نادرًا ما تكون صحيحة على كل المستندات. فإذا أرجع عميل صنفًا موقوفًا، وجب على مستند المرتجع أن يذكر ذلك الصنف — فهذا هو جوهر المستند. منع البيع مع السماح بالمرتجع هو بالضبط السلوك المطلوب، وهذا الجدول هو الطريق إليه: فهو يستثني حقلًا واحدًا بعينه من المنع.
السطر النموذجي يذكر مستند المرتجع في للنوع، و details.item في الحقل. ومن تلك اللحظة يقبل حقل الصنف في ذلك المستند وحده الأصناف الموقوفة، بينما تظل كل شاشة أخرى في النظام ترفضها، بما فيها فاتورة المبيعات التي أوقف الصنف عنها أصلًا.
| العمود | ماذا يفعل |
|---|---|
| للنوع (For Type) | نوع الكيان الوحيد الذي ينطبق عليه هذا الاستثناء، مثل مستند المرتجع. |
| قائمة الأنواع (Entity List) | قائمة مسماة من أنواع الكيانات، ليغطي السطر الواحد عدة مستندات. |
| الحقل (On Field) | معرّف الحقل الذي تصبح السجلات الممنوعة قابلة للاختيار فيه، مثل details.item أو customer. |
ترك النطاق فارغًا يرفع المنع في كل مكان
يبحث النظام عن الاستثناء بنوع الكيان و الحقل معًا. فإن ذكرت نوع كيان (أو قائمة كيانات) انحصر الاستثناء في تلك الشاشات. أما إن تركت الاثنين فارغين فيُخزَّن السطر مقابل اسم الحقل وحده — ومن ثم تقبل أي شاشة في النظام فيها حقل بهذا المعرّف السجلات الممنوعة. سطر عام على item لا يفتح مستند مرتجع واحدًا، بل يفتح كل شاشة فيها حقل صنف.
وهذا ليس مطلوبًا في الغالب الأعم. اذكر نوع الكيان.
تجاهل تناسق المحددات لحقول (Ignore Dimensions Consistency for Fields)
يشترط Nama عادةً أن ينتمي السجل الذي تشير إليه إلى نفس المحددات التنظيمية للمستند الذي تكتبه — نفس الشركة والفرع والقطاع والإدارة والمجموعة التحليلية. إنه فحص صامت ودائم، وهو الذي يمنع موظفًا في فرع الرياض من صرف مخزون من مخزن جدة بالخطأ، أو من تحميل تكلفة على إدارة شركة أخرى. وفي معظم الوقت لا ينتبه إليه أحد، لأن التركيبة صحيحة أصلًا في معظم الوقت.
لكن بعض المستندات وُجدت تحديدًا لتعبر هذه الحدود. فالتحويل بين الفروع يجب أن يذكر مخزنًا يتبع الفرع الآخر — وهذا هو غرض المستند بأكمله، وفحص التناسق يرفضه في كل مرة. وإدارة الخدمات المشتركة التي ترفع طلبات شراء نيابة عن الشركة كلها لا بد أن تحمّل كل طلب على مركز تكلفة غيرها. هذا الجدول يخفّف الفحص حقلًا حقلًا حتى تُكتب هذه المستندات، دون إضعاف الفحص في أي مكان آخر.
في مثال التحويل يكفي سطر واحد يذكر مستند التحويل في للنوع، وحقل مخزن الوصول في الحقل، وعلامة في تجاهل الفرع. تظل الشركة والقطاع والإدارة تُطابَق كما كانت؛ ولا يُتجاوز إلا مقارنة الفرع، وعلى ذلك الحقل الواحد من ذلك المستند الواحد فقط.
| العمود | ماذا يفعل |
|---|---|
| للنوع (For Type) | نوع الكيان الوحيد الذي ينطبق عليه السطر. |
| لقوائم أنواع (For Type List) | قائمة مسماة من أنواع الكيانات، ليغطي السطر الواحد عدة مستندات. |
| الحقل (On Field) | معرّف الحقل الذي يُخفَّف فحص التناسق عليه، مثل warehouse أو details.warehouse. |
| تجاهل الشركة (Ignore Legal Entity) | يوقف مقارنة شركة السجل المشار إليه بشركة المستند. |
| تجاهل المجموعة التحليلية (Ignore Analysis Set) | يوقف مقارنة المجموعة التحليلية. |
| تجاهل الفرع (Ignore Branch) | يوقف مقارنة الفرع. |
| تجاهل القطاع (Ignore Sector) | يوقف مقارنة القطاع. |
| تجاهل الإدارة (Ignore Department) | يوقف مقارنة الإدارة. |
| تجاهل المسودات (Ignore Drafts) | يسمح بالإشارة إلى سجل مسودة، ويُظهر المسودات في بحث هذا الحقل. انظر أدناه. |
كل مربع اختيار يوقف المقارنة عن محدد واحد فقط. وهذه الدقة هي المقصودة: يمكنك السماح بتحويل بين فرعين مع ضمان أن الفرعين يتبعان نفس الشركة، فلا يتحرك مخزون بالخطأ بين شركتين منفصلتين. علّم فقط على المحدد الذي تحتاجه حالة العمل فعلًا، واترك الباقي يُطابَق.
تجاهل المسودات استثناء من نوع آخر
يقع تجاهل المسودات في نفس الجدول لكنه يفعل شيئًا مختلفًا تمامًا. فهو لا يخفف مقارنة محدد، بل يخفف قاعدة أن السجل المشار إليه يجب أن يكون منتهيًا. فمع تفعيله يصبح بالإمكان الإشارة إلى سجل مسودة من مستند آخر، وتبدأ سجلات المسودات في الظهور ضمن نتائج البحث لذلك الحقل من الأساس، بعد أن كانت تُستبعد.
هذا مفيد بحق حين يُجهَّز مستندان جنبًا إلى جنب ولا يكون أي منهما جاهزًا لأن يُنهى أولًا. وهو في الوقت نفسه أخطر علامة في الصفحة، لأن السجل الذي أشرت إليه ما زال قابلًا للتعديل — أو للإلغاء تمامًا — بعد أن أشار إليه مستندك. المرجع حقيقي، أما ما في نهايته فمؤقت.
علامات الأسطر المتعددة تتجمع
إذا استهدف سطران نفس الحقل فالنظام لا يختار فائزًا، بل يدمجهما. ينتهي الحقل معفى من كل محدد يعفيه منه أي سطر مطابق. ولا توجد طريقة لإلغاء علامة وضعها سطر آخر، ولا لكتابة سطر أضيق يتجاوز سطرًا أوسع.
القاعدة العملية بسيطة: احتفظ بـ سطر واحد لكل حقل، وضع فيه كل العلامات التي يحتاجها ذلك الحقل. وجود سطرين لنفس الحقل هو الطريق المعتاد لأن ينتهي بك الأمر بفحص كنت تظن أنك أعدت تشغيله.
هذا لا يمنح أحدًا صلاحية إضافية
تخفيف فحص التناسق ليس صلاحية. كل ما يفعله هو منع النظام من رفض تركيبة المستند والسجل الذي يشير إليه. أما أي السجلات يحق للمستخدم أن يراها ويختارها أصلًا فما زال يحسمه تأمين مستوى السجلات ومحددات المستخدم نفسه. فإذا كان المستخدم لا يرى مخزن جدة فلن يُظهره له سطر هنا — بل سيمنع فقط فشل الحفظ لمن يرى الاثنين بالفعل.
أما المحددات نفسها — معنى الشركة والفرع والقطاع والإدارة والمجموعة التحليلية وكيفية إسنادها — فمشروحة في المحددات.
الملفات المسموح بحفظها على العام (Public Entities)
الجدول السابق يخفف مقارنة واحدة على حقل واحد. أما هذا فيذهب أبعد من ذلك بكثير: فهو يجعل نوع سجل بأكمله عامًا عبر كل المحددات. تتوقف سجلاته عن الانحصار في شركة أو فرع أو قطاع أو إدارة بعينها، وتصبح مرئية وقابلة للاستعمال في كل مكان في قاعدة البيانات.
سبب الرغبة في ذلك هو الملف الرئيسي المشترك حقًا. فمجموعة شركات تتاجر في نفس الكتالوج لا تريد عشر نسخ من نفس الصنف، كل نسخة مثبتة على شركة مختلفة — بل تريد صنفًا واحدًا يستخدمه الجميع. وينطبق المنطق نفسه على قائمة وحدات قياس مشتركة، أو قائمة دول ترجع إليها كل شركات المجموعة. إبقاء هذه الملفات خاصة بشركة واحدة يخلق ازدواجية بلا فائدة، والازدواجية هي التي تجعل التقارير تتناقض مع نفسها في النهاية.
| العمود | ماذا يفعل |
|---|---|
| النوع المستهدف (Target Entity) | نوع سجل واحد يصير عامًا. |
| قائمة الأنواع (Target Entities) | قائمة مسماة من أنواع السجلات، ليجعل السطر الواحد عدة أنواع عامة. |
هناك أمران في هذا الجدول يوقعان الناس في الحيرة.
لن تجد هذا الجدول مع البقية
بخلاف باقي الشاشة، هذا الجدول ليس ضمن الكومة الطويلة في تبويب الرئيسية، فالتمرير بحثًا عنه هناك مضيعة للوقت. له تبويب مستقل باسم الملفات المسموح بحفظها على العام، وهناك تضيف أسطره وتعدّلها. وله كذلك شاشة قائمة خاصة به، وهي الطريق الأسرع حين تريد البحث في الأسطر الموجودة فقط.
والنقطة الثانية أهم. يأتي Nama أصلًا بـ قائمة مدمجة من أنواع السجلات العامة — وهي الأنواع التي لا معنى لها إلا كبيانات مرجعية مشتركة. وكل ما تضيفه في هذا الجدول يُضاف فوق تلك القائمة المدمجة. تستطيع أن توسّع القائمة بأنواعك أنت، لكنك لا تستطيع استخدام هذا الجدول في الاتجاه المعاكس: النوع العام افتراضيًا لا يمكن جعله خاصًا من هنا.
تعامل مع هذا كقرار معماري
جعل نوع سجل عامًا يغيّر ما يستطيع كل مستخدم في كل شركة في قاعدة البيانات أن يراه ويستعمله، بشكل دائم وبأثر رجعي — فسجلات ذلك النوع الموجودة تتوقف عن الانحصار لحظة حفظ السجل. والتراجع عن ذلك لاحقًا أصعب بكثير من اتخاذه، لأن مستندات في عدة شركات قد تكون حينها تشير إلى نفس السجلات المشتركة.
احسم هذا وأنت تصمم هيكل المجموعة، ومع من يملكون البيانات، لا استجابةً لمستخدم واحد لا يجد سجلًا. فإن كانت المشكلة الحقيقية هي صلاحية مستخدم واحد، فإن تأمين مستوى السجلات هو الأداة المناسبة لذلك.
صفحات ذات صلة
- أعدادات الحقول و الشاشات — نظرة عامة — كيف تعمل أعمدة النطاق، وكيف تُجمَّع الأسطر من عدة سجلات.
- التحقق من المدخلات والحقول الإجبارية — الوجه المقابل لهذه الصفحة: جداولها تضيف القواعد، وجداول هذه الصفحة ترفعها.
- حقول المرجع والبحث — كيف تجد حقول المرجع السجلات التي تعرضها وكيف تفلترها.
- تأمين مستوى السجلات (المحددات والفلاتر) — ما يُسمح للمستخدم برؤيته، وهو ما لا يغيّره أي من هذه الجداول.
- تأمين الحقول والصفحات وشاشات القوائم — إخفاء الحقول وتعطيلها لمستخدمين بعينهم.
- نظرة عامة على نظام التأمين — كيف تتكامل ملفات التأمين والأدوار والمحددات.
- المحددات — معنى الشركة والفرع والقطاع والإدارة والمجموعة التحليلية، وكيف تُسند السجلات إليها.