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