前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Salesforce学习 Lightning(二)【RecordType】

Salesforce学习 Lightning(二)【RecordType】

原创
作者头像
repick
修改2021-01-04 10:24:35
1.2K0
修改2021-01-04 10:24:35
举报
文章被收录于专栏:SalesforceSalesforce

RecordType是什么,有什么用途

我们做成的【PageLayout】,可以分配给某些Group的人去使用看,也就是通过【Profile】去设置【PageLayout】的权限,但是如果是同一个级别的Group的两个人想看不同的【PageLayout】的情况下,如何实现呢,例如面向【国企】和【民营企业】,需要显示不同风格的【PageLayout】,就可以用【RecordType】去区分。

除了上述情况,还有下边两种,

·Business process

专为协助销售过程而设计的Salesforce功能,可用于Leads,opportunities,cases,solution等Object

·PickList

定义每一个RecordType使用的PickList的值和显示的顺序。

1.RecordType做成方法

例:在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个,因为管理起来非常困难。

2.分配权限

点击【Page Layout Assignment】就可以进行上边说的,对于同一个Profile,不同的RecordType分配给不同的PageLayout

左边找到Profile,然后对应的RecordType列选择自己做成的PageLayout

3.下边做一条数据试一试↓↓↓↓↓↓

点击【New】会自动弹出对话框,可以选择自己想要创建的数据类型。

数据创建成功↓↓↓↓↓↓

开发者Console里可以查询↓↓↓↓↓↓

4.关于Object的【Id】

通过上边开发者Console的查询结果发现插入两条数据的Id分别是【0016g000016K7R2AAK】和【0016g000016K7R7AAK】,为了保证数据不重复,salesforce的机制是Id会自动生成,不可能会出现两条相同Id的数据。为了标识每个Object,用Id的前三位区分,例如【001】就是Account,【003】是Contact,在ApexClass中也可以通过下边方法取得

代码语言:javascript
复制
Schema.SObjectType.Account.getKeyPrefix()

下面用ApexClass代码取得一下试试↓↓↓↓↓↓

代码语言:javascript
复制
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出力结果:

5.ApexClass中取得RecordTypeId

ApexClass中经常会用到RecordTypeId,例如SOQL查询,赋值操作等等,通过下边方法根据RecordType名称取得Id。

代码语言:javascript
复制
Schema.SObjectType.Account.getRecordTypeInfosByDeveloperName().get('xxx').getRecordTypeId()

ApexClass代码:↓↓↓↓↓↓

代码语言:javascript
复制
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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • RecordType是什么,有什么用途
    • 1.RecordType做成方法
      • 2.分配权限
        • 3.下边做一条数据试一试↓↓↓↓↓↓
          • 4.关于Object的【Id】
            • 5.ApexClass中取得RecordTypeId
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档