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

قيمة يتم حفظها لا تطابق ما يتوقعه الحقل، وغالبًا ما تكون قيمة قائمة اختيار غير موجودة في المؤسسة الهدف.

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

المعنى

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

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

التشخيص

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

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

الحل

  1. انشر قيم قائمة الاختيار أولًا
    أدرج مجموعة القيم العامة أو تغيير قيمة قائمة الاختيار على مستوى الحقل ضمن نفس عملية النشر التي تشمل أي شيء يستخدمها.
    <valueSet>
      <valueSetDefinition>
        <sorted>false</sorted>
        <value><fullName>Renewal_Pending</fullName><default>false</default></value>
      </valueSetDefinition>
    </valueSet>
  2. حافظ على تزامن قوائم الاختيار المقيدة
    دقّق قيم قوائم الاختيار المقيدة عبر البيئات بحيث تسمح المؤسسة المصدر والهدف بنفس المجموعة.
  3. حدّث بيانات الاختبار المعتمدة
    بعد تغيير نوع الحقل، حدّث أي بيانات اختبار Apex أو حقول صيغة كانت تفترض النوع القديم.
من واقع الاستخدام

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

يُظهر فرق البيئة الخاص بـ Serpent AI بدقة أي قيم قوائم اختيار موجودة في مؤسسة وغير موجودة في الأخرى، قبل تشغيل أي عملية نشر. راجع مكتبة أخطاء نشر Salesforce.

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

الوقاية

أخضع مجموعات قيم قوائم الاختيار للتحكم بالإصدارات مثل أي بيانات وصفية أخرى
استخرج والتزم بتغييرات GlobalValueSet وبيانات الحقل الوصفية عبر نفس سير عمل التحكم بالمصدر المستخدم لـ Apex، بدلًا من تعديل القيم بشكل عشوائي في Setup.
اجمع قيمة قائمة الاختيار مع الكود أو الاختبار الذي يستخدمها لأول مرة
اشحن القيمة الجديدة ضمن نفس عملية النشر التي تحتوي على الفئة أو الـ trigger أو الاختبار الذي يشير إليها، حتى لا يصل الاثنان بترتيب خاطئ أبدًا.
راجع تغييرات قوائم الاختيار المقيدة من حيث الأثر اللاحق
قبل تقييد قائمة اختيار أكثر، ابحث عن كود Apex وFlow والتكاملات التي تكتب قيمًا سيرفضها التقييد الجديد.
أسئلة شائعة

FIELD_INTEGRITY_EXCEPTION، تمت الإجابة

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

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

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

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

بدون التزام.