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

قيمة تم تمريرها حيث تتوقع Salesforce معرّف سجل ليست معرّفًا صالحًا على الإطلاق، وليست مجرد معرّف خاطئ.

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

المعنى

يعني MALFORMED_ID أن القيمة التي استلمتها Salesforce ليست معرّف سجل صالحًا نحويًا: طول خاطئ، أحرف غير صالحة، أو قيمة ليست معرّفًا على الإطلاق. يختلف هذا عن INVALID_ID_FIELD، حيث يكون المعرّف صحيح التنسيق لكنه يشير إلى السجل أو الكائن الخطأ؛ يعني MALFORMED_ID أن السلسلة نفسها فاسدة.

يتكون معرّف Salesforce الصالح دائمًا من 15 أو 18 حرفًا أبجديًا رقميًا يبدأ ببادئة مفتاح كائن من ثلاثة أحرف؛ أي شيء أقصر أو أطول أو يحتوي على أحرف خارج [A-Za-z0-9] يفشل في هذا الفحص قبل أن تحاول Salesforce حتى حله إلى سجل.

التشخيص

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

قيمة فارغة أو null تم تمريرها كمعرّف
يمرّر الكود أو بيانات الاختبار سلسلة فارغة أو null حيث يتوقع حقل معرّف مطلوب قيمة حقيقية.
ملف CSV أو تحميل بيانات اقتطع معرّفًا
قص ملف استيراد البيانات أحرفًا أثناء التصدير، أو قام جدول بيانات بتنسيق عمود المعرّف تلقائيًا وأفسد القيمة.
سلسلة ليست معرّفًا مُسندة إلى حقل معرّف
يقوم إعداد الاختبار أو ثابت مضمّن في الكود بإسناد اسم أو تسمية أو نص عنصر نائب إلى متغير من نوع Id.

الحل

  1. تحقق من صحة تنسيق المعرّف قبل الاستخدام
    تحقق من أن أي معرّف مبني ديناميكيًا أو مستورد يتكون من 15 أو 18 حرفًا أبجديًا رقميًا بالضبط قبل تمريره إلى DML أو حقل بحث.
    Boolean looksLikeId = idValue != null
        && idValue.isAlphanumeric()
        && (idValue.length() == 15 || idValue.length() == 18);
  2. أعد تصدير ملفات تحميل البيانات دون إعادة تنسيق
    صدّر ملفات CSV كنص عادي وعطّل التنسيق التلقائي في جداول البيانات الذي قد يزيل أو يغيّر أعمدة المعرّف.
  3. لا تُضمّن معرّفات عنصر نائب بشكل ثابت في إعداد الاختبار أبدًا
    استعلم عن معرّف سجل حقيقي في إعداد الاختبار بدلاً من إسناد سلسلة حرفية إلى متغير من نوع Id.
من واقع الاستخدام

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

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

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

الوقاية

افرض تنسيق عمود المعرّف كنص عادي قبل كل تصدير
اضبط تنسيق عمود المعرّف صراحةً في أدوات جداول البيانات قبل التصدير إلى CSV، حتى لا يشوّه التنسيق التلقائي القيمة بصمت أبدًا.
اجعل نوع المتغيرات التي تحمل معرّفات Id، وليس String أبدًا
استخدم نوع Id في Apex أينما يحمل متغير معرّف سجل، حتى يفشل التعيين غير الصالح فورًا بدلاً من الظهور لاحقًا كخطأ DML وقت التشغيل.
أضف فحص تنسيق عند كل حدود تكامل
تحقق من شكل المعرّف عند النقطة التي تدخل فيها البيانات الخارجية إلى Salesforce، سواء في خطوة وسيطة للتكامل أو تحويل تحميل بيانات، وليس داخل Apex فقط.
أسئلة شائعة

MALFORMED_ID، بالتفصيل

كيف يختلف MALFORMED_ID عن INVALID_ID_FIELD؟
يعني MALFORMED_ID أن القيمة ليست سلسلة معرّف صالحة على الإطلاق. أما INVALID_ID_FIELD فيعني أن المعرّف صحيح التنسيق لكنه يشير إلى سجل غير موجود أو ينتمي إلى الكائن الخطأ.
هل تلتقط طريقة Id.valid() في Apex هذا بشكل موثوق قبل DML؟
نعم، بالنسبة لفحوصات الطول ومجموعة الأحرف. تؤكد أن الشكل يشبه معرّف Salesforce الصالح، لكنها لا تستطيع تأكيد أن السجل موجود فعلاً؛ ذلك فحص منفصل.
هل يمكن أن تسبب مسافة زائدة وحدها MALFORMED_ID؟
نعم. معرّف منسوخ ولصق يحتوي على مسافة أو حرف سطر جديد زائد يفشل في فحص الأحرف الأبجدية الرقمية، حتى لو كانت أحرف المعرّف المرئية نفسها صحيحة.

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

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

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

بدون التزام.