كيفية إصلاح INVALID_OR_NULL_FOR_RESTRICTED_PICKLIST في عمليات نشر Salesforce

يُحفظ سجل بقيمة قائمة منسدلة (picklist)، أو بلا قيمة، غير موجودة في مجموعة القيم المقيدة للحقل في المؤسسة المستهدفة.

يظهر أثناء: عمليات DML وقت التشغيل، في تحميل البيانات والتكاملات وإعداد اختبارات Apex

المعنى

يظهر INVALID_OR_NULL_FOR_RESTRICTED_PICKLIST عندما يُضبط حقل قائمة منسدلة لتقييد القيم على تلك المحددة، ويحاول سجل حفظ قيمة خارج تلك القائمة، أو تُترك قائمة منسدلة مقيدة مطلوبة فارغة. قد تكون القيمة صالحة تمامًا في المؤسسة المصدر؛ المشكلة أن مجموعة قيم المؤسسة المستهدفة لا تتطابق.

تقييد قائمة منسدلة هو خيار اختياري لكل حقل؛ تقبل القائمة غير المقيدة أي نص بصمت، بما في ذلك الأخطاء الإملائية، بينما تفرض القائمة المقيدة مجموعة القيم المحددة بصرامة، وهذا بالضبط سبب ظهور هذا الخطأ عادة فور تفعيل تقييد حقل ما لأول مرة.

التشخيص

الأسباب الشائعة

مجموعة القيم تختلف بين المؤسسة المصدر والمستهدفة
عُدِّلت القيم النشطة للقائمة المنسدلة في البيانات الوصفية لحقل مؤسسة واحدة، لكن التغيير لم يُنشر أبدًا إلى الأخرى.
نوع السجل لا يتضمن القيمة
يستبعد ربط قيم القائمة المنسدلة لنوع سجل ما قيمة تسمح بها القائمة المنسدلة العامة خلاف ذلك.
تحميل البيانات يرسل قيمة معطّلة
عُطِّلت قيمة في القائمة المنسدلة، لكن البيانات الواردة أو تكامل API لا يزال يرسلها.

الحل

  1. انشر مجموعة قيم القائمة المنسدلة مع الحقل
    أدرج قائمة القيم النشطة الكاملة، وأي ربط لقيم أنواع السجلات، ضمن النشر نفسه لتغيير الحقل أو نوع السجل.
  2. أضف القيمة المفقودة إلى القائمة المنسدلة للمؤسسة المستهدفة
    إذا كان ينبغي أن تكون القيمة صالحة هناك أيضًا، أضفها إلى مجموعة قيم القائمة المنسدلة قبل إعادة محاولة النشر.
  3. طابق البيانات أو نظّفها قبل التحميل
    حدّث البيانات الواردة لاستخدام قيمة نشطة ومُطابَقة بدلًا من قيمة لم تعد القائمة المنسدلة للمؤسسة المستهدفة تقبلها.
من واقع الاستخدام

إزاي Serpent بتمنع ده

يُزامن Serpent مجموعات قيم القوائم المنسدلة وربط أنواع السجلات جنبًا إلى جنب مع بيئات sandbox التي يديرها، بحيث تبقى القائمة المنسدلة المقيدة متوافقة عبر كل مؤسسة بدلًا من الانحراف بصمت. طالع مكتبة أخطاء نشر Salesforce.

الـ metadata والبيانات في مسار نشر واحد داخل Serpent

الوقاية

أخضع مجموعات قيم القوائم المنسدلة وربط أنواع السجلات لضبط الإصدار معًا
تتبّع مجموعة قيم الحقل وربط عملية العمل أو القيمة لكل نوع سجل كوحدة واحدة في ضبط الإصدار (source control)، لا كتعديلات مخصصة منفصلة في الإعداد (Setup).
لا تعطّل أبدًا قيمة قائمة منسدلة دون التحقق من التكاملات النشطة أولًا
ابحث في ربط التكاملات ومنطق التدفقات عن أي إشارة إلى قيمة ما قبل تعطيلها، حتى لا يستمر نظام لاحق في إرسال قيمة لم تعد المؤسسة تقبلها.
تحقق من قيم القائمة المنسدلة الواردة مقابل جدول بحث قبل التحميل
تحقق من كل قيمة قائمة منسدلة واردة مقابل مجموعة القيم النشطة للمؤسسة المستهدفة أثناء تحويل تحميل البيانات، بدلًا من اكتشاف عدم التطابق وقت الإدراج.
أسئلة شائعة

INVALID_OR_NULL_FOR_RESTRICTED_PICKLIST، بالشرح

لماذا ينجح تحميل البيانات نفسه في sandbox واحدة ويفشل في أخرى؟
من شبه المؤكد أن المؤسستين لديهما قيم نشطة مختلفة أو ربط أنواع سجلات مختلف في القائمة المنسدلة. قارن مجموعة قيم الحقل وتعيينات أنواع السجلات بين المؤسستين.
هل يمكنني إيقاف التقييد بدلًا من إصلاح القيم؟
نعم، إلغاء تحديد "تقييد القائمة المنسدلة على القيم المحددة في مجموعة القيم" يزيل القيد تمامًا، لكنه يزيل أيضًا ضمان جودة البيانات الذي صُمم الحقل لفرضه، لذا تعامل معه كملاذ أخير.
هل تظل قيمة القائمة المنسدلة المعطّلة تظهر على السجلات الحالية التي تحملها بالفعل؟
نعم. تعطيل قيمة لا يزيلها من السجلات التي تحملها بالفعل؛ فهو فقط يمنع عمليات الحفظ الجديدة من استخدام تلك القيمة مستقبلًا، وهذا سبب اختلاف سلوك السجلات القديمة عن عمليات الحفظ الجديدة.

ابدأ مجانًا. دون بطاقة ائتمان، دون تثبيت، ودون التزام.

الإعداد في أقل من 15 دقيقة. لا حاجة لتوظيف مختص DevOps.

هل تريد معرفة كيف يمكنكم الشحن أسرع قبل البدء؟ لنتحدث

بدون التزام.