我们做成的【PageLayout】,可以分配给某些Group的人去使用看,也就是通过【Profile】去设置【PageLayout】的权限,但是如果是同一个级别的Group的两个人想看不同的【PageLayout】的情况下,如何实现呢,例如面向【国企】和【民营企业】,需要显示不同风格的【PageLayout】,就可以用【RecordType】去区分。
除了上述情况,还有下边两种,
·Business process
专为协助销售过程而设计的Salesforce功能,可用于Leads,opportunities,cases,solution等Object
·PickList
定义每一个RecordType使用的PickList的值和显示的顺序。
例:在AccountObject里,创建【民营企业】和【国企】两个RecordType
·PrivateEnterprise
For customers of private enterprises
·StateOwnedEnterprise
For customers of state-owned enterprises
Setup>Object Manager>Record Types>New >输入Name和Label>Active CheckOn>Make Available 选择分配的Profile>Next>选择分配的PageLayout
创建成功↓↓↓↓↓
※RecordType的做成数量虽然没有限制,但是Salesforce推荐最好不要超过200个,因为管理起来非常困难。
点击【Page Layout Assignment】就可以进行上边说的,对于同一个Profile,不同的RecordType分配给不同的PageLayout
左边找到Profile,然后对应的RecordType列选择自己做成的PageLayout
点击【New】会自动弹出对话框,可以选择自己想要创建的数据类型。
数据创建成功↓↓↓↓↓↓
开发者Console里可以查询↓↓↓↓↓↓
通过上边开发者Console的查询结果发现插入两条数据的Id分别是【0016g000016K7R2AAK】和【0016g000016K7R7AAK】,为了保证数据不重复,salesforce的机制是Id会自动生成,不可能会出现两条相同Id的数据。为了标识每个Object,用Id的前三位区分,例如【001】就是Account,【003】是Contact,在ApexClass中也可以通过下边方法取得
Schema.SObjectType.Account.getKeyPrefix()
下面用ApexClass代码取得一下试试↓↓↓↓↓↓
String keyPrefixAccount = Schema.SObjectType.Account.getKeyPrefix();
String keyPrefixOpportunity = Schema.SObjectType.Opportunity.getKeyPrefix();
String keyPrefixContact = Schema.SObjectType.Contact.getKeyPrefix();
String keyPrefixEvent = Schema.SObjectType.Event.getKeyPrefix();
String keyPrefixTask = Schema.SObjectType.Task.getKeyPrefix();
String keyPrefixBear = Schema.SObjectType.Bear__c.getKeyPrefix();
system.debug('keyPrefix>>Account>>::' + keyPrefixAccount);
system.debug('keyPrefix>>Opportunity>>::' + keyPrefixOpportunity);
system.debug('keyPrefix>>Contact>>::' + keyPrefixContact);
system.debug('keyPrefix>>Event>>::' + keyPrefixEvent);
system.debug('keyPrefix>>Task>>::' + keyPrefixTask);
system.debug('keyPrefix>>Bear__c>>::' + keyPrefixBear);
Log出力结果:
ApexClass中经常会用到RecordTypeId,例如SOQL查询,赋值操作等等,通过下边方法根据RecordType名称取得Id。
Schema.SObjectType.Account.getRecordTypeInfosByDeveloperName().get('xxx').getRecordTypeId()
ApexClass代码:↓↓↓↓↓↓
Id priEnterRTId = Schema.SObjectType.Account.getRecordTypeInfosByDeveloperName().get('PrivateEnterprise').getRecordTypeId();
Id stateOwnerEnterRTId = Schema.SObjectType.Account.getRecordTypeInfosByDeveloperName().get('StateOwnedEnterprise').getRecordTypeId();
Set<Id> rtIdSet = new Set<Id>();
rtIdSet.add(priEnterRTId);
rtIdSet.add(stateOwnerEnterRTId);
List<Account> accList = [SELECT Id,Name,RecordTypeId,RecordType.name,phone
FROM Account
where RecordTypeId IN :rtIdSet];
if (accList != null && accList.size() > 0) {
for (Account acc : accList) {
system.debug('Id:>>>>::'+acc.Id + 'Name:>>>>::'+acc.Name);
}
}
Log出力结果:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有