【Salesforce】System.SObjectException: Invalid field {!FiledName} for {!SObjectName}
Salesforceで構築された稼働中のシステムで突然エラーが出るようになったと連絡がありました。
Sandboxで調査してみると、再現しません。
本番環境では毎回エラーが発生しているとのことで、エラーの内容を確認しました。
System.SObjectException: Invalid field {!FiledName} for {!SObjectName}
SObjectに対して無効なフィールドですよ、ということですね。
レコードに対して存在しない項目でアクセスすると発生するエラーです。
SObject account; account = new Account(); account.get('InvalidFieldName__c'); // エラー
エラーが発生している部分では、確かにgetで項目名を参照して内容を取得しています。
しかし、Sandboxでは発生しませんでした。
そもそも項目が存在するかを調べてみると、本番環境でのみ削除されていました。
原因が分かりました。
お客さんに話を聞いてみると、既に使っていない項目だと思って削除してしまったとのこと。
「Accuont.FieldName」の形式であれば削除するときにエラーが発生して項目を削除できませんが、「Account.get(‘FieldName’)」の形式だとエラーが発生せずに削除できるんですよね。
Sandboxで検証をせずに本番環境でのみ削除したことによって発生した悲しい事件でした。
せめて、調査する前に事前情報として本番環境で項目を削除したと教えてほしかったです。
項目を削除するときは気を付けましょうというお話でした。
No comments.