在項目中我們可能會遇見這種情況,不同的Profile擁有不同的頁面,頁面中的PickList標簽可能顯示不同的值。這個時候,使用Record Types可以很便捷的搞定需求。
Record Types允許在相同的object中為數據定義多個UI。用戶通過Profile進行分組,不同的Profile可以設置不同的Page Layout 以及顯示不同的PickList的item值。
簡單需求描述如下(以Goods__c為例):
1.Profile為Admin的用戶可以看到所有的字段,Profile為其他的用戶不能看到GoodsCostPrice__c;
2.Profile為Admin的用戶可以看到類型為PickList的GoodsBrand__c所有值,Profile為其他的用戶只能看到GoodsBrand__c的一部分值。
(注:需求只是隨便寫的)
實現上述功能可以通過Record Types實現,先定義兩個Page Layouts,使不同的Profile顯示不同的頁面,然后定義兩個Record Types,使不同的Profile顯示的PickList的值不同。
一.創建PageLayout
setup->Create->Objects->Goods__c進入具體的sObject.在Page Layouts中創建兩個Page Layout

Goods Layout For Admin顯示所有的字段,如下圖所示

Goods Layout For Other User顯示除GoodsCostPrice以外的所有字段,如下圖所示

二.創建Record Types
創建兩個Record Types,分給不同的Profile,如下圖所示
其中ShowUIByAdmin創建步驟如下:
1.點擊New后輸入具體的信息,然后選擇需要設置可見的Profile后點擊Next;


2.分配不同的Page Layouts給相關的Profile;

3.點擊Save以后,會顯示下圖所示頁面,點擊下方Edit,修改相關的PickList的Item Value值;

4.修改GoodsBrand的顯示項后Save,則名為ShowUIByAdmin的Record Type創建成功;

5.按照上述1-4創建另外的Record Types,分配相關的Page Layouts以及設置不同的Picklist Values的值。
顯示效果如下:
Profile為Admin的顯示頁面

Profile為other user的顯示頁面

總結:Record Types可以基於不同的Profile設置不同的顯示頁面以及不同的PickList的Values,並且只能基於Profile,如果項目通過Permission Set進行分組則無法使用Record Types.如果篇中有描述錯誤的地方歡迎指正,如果有疑問的地方歡迎留言。
