معايير من المحلل النصي (دليل معايير النص)
يوفر نظام نما ERP آلية مرنة للتصفية النصية تتيح للمستخدمين تعريف معايير الفلترة باستخدام صيغة بسيطة ومنظمة.
يتكوّن كل شرط فلترة في نظام نما ERP من المكونات التالية:
Field ID: الخاصية (الحقل) المراد تطبيق الفلتر عليها.
Operator: أحد الخيارات التالية:
Equal,NotEqualGreaterThan,GreaterThanOrEqualLessThan,LessThanOrEqualStartsWith,NotStartsWithEndsWith,NotEndWithContains,NotContainIn,NotIn(انظر قيم متعددة مع In/NotIn أدناه)OpenBracket,CloseBracket(تُستخدم لتجميع التعبيرات، ولا تتطلب Field ID أو قيمة)
Compared Value: القيمة المراد المقارنة بها.
Logical Relationship: الرابط المنطقي للشرط التالي (
ANDأوOR).
المعاملات الشرطية (لاحقة OrEmpty)
يمكن إضافة اللاحقة OrEmpty لأي معامل لجعل الشرط اختياريًا عندما لا تُوفَّر قيمة. إذا كانت القيمة فارغة، يُتجاهل الشرط بالكامل.
على سبيل المثال:
EqualOrEmpty- يطبّق Equal فقط إذا كانت القيمة موجودةContainsOrEmpty- يطبّق Contains فقط إذا كانت القيمة موجودةGreaterThanOrEqualOrEmpty- يطبّق GreaterThanOrEqual فقط إذا كانت القيمة موجودة
هذا مفيد لبناء فلاتر ديناميكية قد تحتوي بعض المعايير على قيم أو لا:
code,StartsWithOrEmpty,{userInput},AND;إذا كان {userInput} فارغًا، يُتجاهل هذا الشرط كليًا.
أوامر خاصة
distinct-values: أضف هذا في سطر منفصل للحصول على سجلات فريدة فقط:
distinct-values
code,StartsWith,01,AND;قيم متعددة مع In/NotIn
تتيح معاملات In وNotIn مطابقة حقل مع قيم متعددة. لتحديد قيم متعددة في صيغة معايير النص، افصل بينها بالمحدد الخاص @A=@X.
الصيغة:
fieldID,In,value1@A=@Xvalue2@A=@Xvalue3,AND;أمثلة:
تصفية العناصر التي حالتها "Active" أو "Pending" أو "Review":
status,In,Active@A=@XPending@A=@XReview,AND;تصفية السجلات التي رمز الفئة فيها ليس "CAT01" أو "CAT02":
category.code,NotIn,CAT01@A=@XCAT02,AND;التصفية بمعرّفات مرجعية متعددة:
warehouse.id,In,id1@A=@Xid2@A=@Xid3,AND;WARNING
يجب استخدام المحدد @A=@X بالضبط كما هو موضح (حساس لحالة الأحرف). لا تضف مسافات حول المحدد.
الصيغة
يُمثَّل كل شرط فلترة كسطر نصي يتكون من أربعة أجزاء مفصولة بفاصلات:
fieldID,operator,value,logic;يمكن فصل الشروط المتعددة بفاصلات منقوطة (;) أو أسطر جديدة. كلا الصيغتين صالحتان:
الصيغة في سطر واحد:
code,StartsWith,01,AND;name1,Contains,abc,AND;الصيغة متعددة الأسطر:
code,StartsWith,01,AND
name1,Contains,abc,ANDالقيم الافتراضية
- إذا حُذف operator، يكون الافتراضي
Equal - إذا حُذف logical relationship، يكون الافتراضي
AND
وهذا يعني أن أبسط صيغة للفلتر هي:
fieldID,,valueوهي مكافئة لـ fieldID,Equal,value,AND
صيَغ حقول خاصة
حقول التاريخ: يجب أن تكون الصيغة
dd-MM-yyyyحقول التاريخ والوقت: يجب أن تكون الصيغة
yyyy-MM-ddTHH:mm:ss.SSS(يمكن أن تكون الميلي ثانية000)حقول المرجع: يُكتب المرجع كسلسلة مفصولة بنقطتين:
<id>:<entityType>:<code>- جزء
codeاختياري. - يمكن بديلًا الإشارة إلى أجزاء محددة باستخدام
.idأو.codeللوضوح والبساطة.
- جزء
مثال
code,StartsWith,01,AND;
name1,Contains,abc,AND;
date1,Equal,06-07-2025,AND;
creationDate,GreaterThanOrEqual,2025-07-06T13:05:00.000,AND;
n1,Equal,10,AND;
section,Equal,ffff0001-79e2-11f2-8800-0000ff79c2dd:ItemSection:00,AND;يمكن أيضًا التعبير عن السطر الأخير بصيغتين بديلتين:
section.id,Equal,ffff0001-79e2-11f2-8800-0000ff79c2dd,AND;
section.code,Equal,00,AND;القيم الديناميكية
بالإضافة إلى القيم الثابتة، يدعم نظام نما ERP قيمًا ديناميكية تُحسب في وقت التشغيل. وهي مفيدة بشكل خاص للفلاتر المستندة إلى التاريخ والمعايير الخاصة بالمستخدم.
القيم الديناميكية للتاريخ
يمكن استخدام القيم الديناميكية التالية بدلًا من التواريخ الثابتة:
| القيمة | الوصف |
|---|---|
$today() | التاريخ الحالي |
$now() | التاريخ والوقت الحاليان |
$monthStart() | أول يوم في الشهر الحالي |
$monthEnd() | آخر يوم في الشهر الحالي |
$previousMonthStart() | أول يوم في الشهر الماضي |
$previousMonthEnd() | آخر يوم في الشهر الماضي |
$nextMonthStart() | أول يوم في الشهر القادم |
$nextMonthEnd() | آخر يوم في الشهر القادم |
$yearStart() | أول يوم في السنة الحالية |
$yearEnd() | آخر يوم في السنة الحالية |
$previousYearStart() | أول يوم في السنة الماضية |
$previousYearEnd() | آخر يوم في السنة الماضية |
$nextYearStart() | أول يوم في السنة القادمة |
$nextYearEnd() | آخر يوم في السنة القادمة |
$quarterStart() | أول يوم في الربع الحالي |
$quarterEnd() | آخر يوم في الربع الحالي |
$halveStart() | أول يوم في النصف الحالي من السنة (6 أشهر) |
$halveEnd() | آخر يوم في النصف الحالي من السنة |
$thirdStart() | أول يوم في الثلث الحالي (4 أشهر) |
$thirdEnd() | آخر يوم في الثلث الحالي |
القيم النسبية للتاريخ
يمكنك أيضًا حساب تواريخ نسبة إلى اليوم:
| القيمة | الوصف |
|---|---|
$todayPlusDays(N) | اليوم زائد N أيام |
$todayMinusDays(N) | اليوم ناقص N أيام |
$todayPlusWeeks(N) | اليوم زائد N أسابيع |
$todayMinusWeeks(N) | اليوم ناقص N أسابيع |
$todayPlusMonths(N) | اليوم زائد N أشهر |
$todayMinusMonths(N) | اليوم ناقص N أشهر |
$todayPlusYears(N) | اليوم زائد N سنوات |
$todayMinusYears(N) | اليوم ناقص N سنوات |
قيم سياق المستخدم
هذه القيم الديناميكية تُشير إلى المستخدم الحالي المسجّل دخوله:
| القيمة | الوصف |
|---|---|
$currentuserid | معرّف المستخدم الحالي المسجّل دخوله |
$currentempid | معرّف الموظف المرتبط بالمستخدم الحالي |
مثال على القيم الديناميكية
date1,GreaterThanOrEqual,$monthStart(),AND;
date1,LessThanOrEqual,$monthEnd(),AND;
createdBy.id,Equal,$currentuserid,AND;
dueDate,LessThanOrEqual,$todayPlusDays(30),AND;يُصفّي هذا المثال السجلات حيث:
date1ضمن الشهر الحاليcreatedByهو المستخدم الحالي المسجّل دخولهdueDateخلال الـ 30 يومًا القادمة
TIP
يمكنك استخدام شاشة Criteria Definition لبناء شروط الفلترة المطلوبة بصريًا عبر واجهة النظام. بعد تعريف المعايير المطلوبة من خلال واجهة المستخدم، اضغط على زر Convert to Text لتوليد التمثيل النصي المكافئ. يمكن بعد ذلك استخدام هذا النص مباشرةً في APIs أو سكريبتات الأتمتة.