Salesforce 小知識 - 必需欄位

將欄位定義為「必需」

當我們為對象設置欄位的屬性時,我們需要讓某些欄位在建立記錄的時候必需有值,比如定義一個「地址」對象,那麼必須填入「郵編」和「城市」。這時,我們就需要將「郵編」和「城市」欄位設置為「必需」。

欄位定義級別

最簡單的方法是在建立自定義欄位時,將某欄位定義為「必需」。這時,無論我們從用戶界面還是代碼來保存相關的數據,這個欄位的值都是必需的。

這是 Salesforce 提供的關於「必需」欄位最嚴格的檢查規則。

用戶界面級別

上述的方法過於嚴格,不適合需要靈活性的情況。那麼我們可以用其他方法來設定欄位的「必需」屬性。

最常見的方法就是在對象的用戶界面(Page Layout)將某欄位設置為「必需」。在這種情況下,只有通過用戶界面新建或保存數據的用戶需要為此欄位提供值,而通過代碼保存的數據則沒有這種檢查。

驗證規則級別

我們也可以通過驗證規則(Validation Rule)來將欄位定義為「必需」。這樣做有兩種好處:

  1. 避免了欄位定義級別的「必需」設置
  2. 驗證規則對用戶界面和代碼同時起作用

這種方法可以看作是上述兩種方法的中和。

「必需」欄位的許可權部署

在通過 Metadata API 對「必需」欄位的許可權進行部署時,有一條特殊的規則。

如果一個欄位是在欄位定義級別被設置為「必需」的話,對於 API 30.0 以後的版本,那麼我們不需要在簡檔(Profile)或許可權集(Permission Set)中對其進行許可權設置。

比如:

<fieldPermissions><editable>true</editable><field>Address__c.Postalcode__c</field><readable>true</readable></fieldPermissions>

如果我們用了上述的第一種方法將欄位 Postalcode__c 設置為「必需」,然後又在某個簡檔或許可權集中加入了上述的代碼,那麼在進行部署的時候就會出錯。

那麼我們怎麼確定該欄位的許可權呢?

在這種情況下,Salesforce 會自動將此欄位對於所有許可權可見(可讀、可修改)

推薦閱讀:

一張圖看懂阿里雲在量子計算領域的布局
雲支付的前景是怎樣的?
由淺入深聊聊SAP Cloud Platform (Part III)
「雲計算」很複雜?其實,一個小故事你就能看懂...
你應該了解的 Spring Cloud 是什麼

TAG:Salesforce | 雲服務 |