So beheben Sie INVALID_FIELD_FOR_INSERT_UPDATE in Salesforce-Bereitstellungen
Die Bereitstellung versucht, in ein nicht beschreibbares Feld zu schreiben, etwa ein Formelfeld oder ein Feld, das der ausführende Benutzer nicht bearbeiten darf.
Tritt auf bei: DML zur Kompilierzeit oder Laufzeit, meist innerhalb eines Apex-TestsWas das bedeutet
INVALID_FIELD_FOR_INSERT_UPDATE bedeutet, dass eine DML-Operation, meist innerhalb eines Apex-Tests, versucht hat, einen Wert in ein Feld zu schreiben, das nicht direkt beschreibbar ist. Das passiert bei Formelfeldern, Rollup-Summenfeldern und Systemfeldern, und auch dann, wenn die Feldsicherheit (Field-Level Security) ein Feld für das ausführende Profil schreibgeschützt macht.
Bei tatsächlich nicht beschreibbaren Feldern wie Formeln erkennt Apex dies bereits beim Kompilieren, sofern die SObject-Literalsyntax verwendet wird; bei Einschränkungen durch die Feldsicherheit zeigt sich das erst zur Laufzeit, da derselbe Code für ein Profil funktionieren und für ein anderes fehlschlagen kann.
Häufige Ursachen
Die Lösung
- Direkten Schreibzugriff entfernenLöschen Sie die Zeile im Test-Setup-Code, die dem Formel-, Rollup- oder Systemfeld einen Wert zuweist.
- Bearbeitungszugriff gewähren, falls das Feld beschreibbar sein sollAktualisieren Sie die Feldsicherheit für das Profil oder Berechtigungsset, das für die Bereitstellung verwendet wird, falls das Feld tatsächlich bearbeitbar sein soll.
- Feldtypänderungen prüfenDurchsuchen Sie nach der Umwandlung eines Felds in eine Formel die Codebasis nach direkten DML-Schreibzugriffen darauf und entfernen Sie diese.
grep -rn "Amount_Rollup__c\s*=" force-app/main/default/classes/
Wie Serpent das verhindert
Serpent AI erkennt Abweichungen bei der Feldsicherheit zwischen Umgebungen bereits während der Preflight-Prüfung, bevor sie als Laufzeitfehler auftreten. Siehe die Bibliothek der Salesforce-Bereitstellungsfehler.

Prävention
Verwandte Fehler
INVALID_FIELD_FOR_INSERT_UPDATE, erklärt
Kostenlos starten. Keine Kreditkarte, keine Installation, keine Verpflichtung.
In unter 15 Minuten eingerichtet. Keine DevOps-Einstellung nötig.
