【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.