【Salesforce】数式項目で数値を参照した際の動きについて
Salesforceの数式項目で数値項目とnullを比較したところ、期待した動作をしませんでした。
頭が良い方や察しが良い方は既に分かったかもしれませんね。
例えば、このような数式です。
取引先の年間売上項目に値が入っていればtrueを返す(ことを期待した)数式です。
NOT( ISNULL(AnnualRevenue) )
年間売上項目に値が入っている場合の動きです。
これだけを見ると期待した通りに動いてくれそうに見えます。
Account acc; acc = new Account(); acc.Name = '確認'; acc.AnnualRevenue = 100; insert acc; acc = [select Id, Name, AnnualRevenue, IsAnnualInput__c from Account where Id = :acc.Id]; system.debug('【ログ】Name:' + acc.Name); // 【ログ】Name:確認 system.debug('【ログ】AnnualRevenue:' + acc.AnnualRevenue); // 【ログ】AnnualRevenue:100 system.debug('【ログ】IsAnnualInput__c:' + acc.IsAnnualInput__c); // 【ログ】IsAnnualInput__c:true delete acc;
年間売上項目に値が入っていない場合の動きです。
数式で参照している項目に値が入っていないにも関わらず、数式項目がtrueになっていますね。
Account acc; acc = new Account(); acc.Name = '確認'; acc.AnnualRevenue = null; insert acc; acc = [select Id, Name, AnnualRevenue, IsAnnualInput__c from Account where Id = :acc.Id]; system.debug('【ログ】Name:' + acc.Name); // 【ログ】Name:確認 system.debug('【ログ】AnnualRevenue:' + acc.AnnualRevenue); // 【ログ】AnnualRevenue:null system.debug('【ログ】IsAnnualInput__c:' + acc.IsAnnualInput__c); // 【ログ】IsAnnualInput__c:true delete acc;
実は、数式項目の「空白項目の処理」のチェックが「空白項目を 0 として処理」になっていました。
これにより、数値通貨の項目である「年間売上」が0となっていたようです。
「空白項目を空白として処理」にチェックを入れることでうまく動作しました。
No comments.