salesforce零基础学习(一百二十六) Picklist Value Set 优缺点和使用探讨

salesforce,基础,学习,一百二十六,picklist,value,set,优缺点,使用,探讨 · 浏览次数 : 160

小编点评

**Global Picklist Value Set** Global Picklist Value Set是一种用于维护多个相关字段的可选值设置。它可以基于 Global Picklist 或手动输入。 **好处:** * 减少维护成本 * 保持代码可维护性 * 允许轻松添加或删除值 **坏处:** * 绑定可能很紧致,影响字段可用的其他字段 * 当需求改变时,需要对所有相关字段进行修改 **使用建议:** * 如果满足需求,使用与否值设置 * 如果需要频繁添加或删除值,或对字段可用的其他字段进行更新,使用基于 Global Picklist 的设置

正文

本篇参考:https://help.salesforce.com/s/articleView?id=sf.fields_creating_global_picklists.htm&type=5

当我们创建Picklist 字段时,比如很多表很多字段都会用到同样的 picklist value时,我们通常会使用 Global Picklist。入口为 set up搜索 picklsit以后选择 Picklist Value Sets然后针对业务上需要的场景,进行字段创建以及picklist value维护。

当我们创建picklist类型字段,可以选择基于 global picklist还是基于换行的手动输入。

我们以这两个类型进行metadata查看

针对 Code_By_Customize__c,此字段通过换行方式去输入。

<?xml version="1.0" encoding="UTF-8"?>
<CustomField xmlns="http://soap.sforce.com/2006/04/metadata">
    <fullName>Code_By_Customize__c</fullName>
    <externalId>false</externalId>
    <label>Code By Customize</label>
    <required>false</required>
    <trackFeedHistory>false</trackFeedHistory>
    <type>Picklist</type>
    <valueSet>
        <restricted>true</restricted>
        <valueSetDefinition>
            <sorted>true</sorted>
            <value>
                <fullName>AAA</fullName>
                <default>false</default>
                <label>AAA</label>
            </value>
            <value>
                <fullName>BBB</fullName>
                <default>false</default>
                <label>BBB</label>
            </value>
            <value>
                <fullName>CCC</fullName>
                <default>false</default>
                <label>CCC</label>
            </value>
            <value>
                <fullName>DDD</fullName>
                <default>false</default>
                <label>DDD</label>
            </value>
            <value>
                <fullName>EEE</fullName>
                <default>false</default>
                <label>EEE</label>
            </value>
            <value>
                <fullName>FFF</fullName>
                <default>false</default>
                <label>FFF</label>
            </value>
            <value>
                <fullName>GGG</fullName>
                <default>false</default>
                <label>GGG</label>
            </value>
        </valueSetDefinition>
    </valueSet>
</CustomField>

针对Code_By_Global_List__c,此字段用于选择指定的picklist value set。

<?xml version="1.0" encoding="UTF-8"?>
<CustomField xmlns="http://soap.sforce.com/2006/04/metadata">
    <fullName>Code_By_Global_List__c</fullName>
    <externalId>false</externalId>
    <label>Code By Global List</label>
    <required>false</required>
    <trackFeedHistory>false</trackFeedHistory>
    <type>Picklist</type>
    <valueSet>
        <restricted>true</restricted>
        <valueSetName>Code</valueSetName>
    </valueSet>
</CustomField>

Picklist Value Set的好处是一个地方维护,其他地方引用就好,维护方便,并且如果针对这个 picklist value有变更,只需要改动一个地方,其他的便会自动的使用最新的版本的值。

坏处往往也来源于好处,因为绑定的太狠,所以当最开始的设计满足了 picklist value set的需求,picklist字段都绑定了同样的picklist value set,后续如果有其他的需要要求有一些新增一个字段值,有一些不新增的时候,便带来了特别大的痛苦(不要以为是小概率事件,随着时间推移,需求增多,这种往往是会发生的,除非设计人员最开始就会告知有此种风险)。比如现在需要新增一个 III的值,有一些字段需要,有一些不需要,这种就很难处理。

一旦发生了这种情况,两种解决方案。

1. 删除原有字段,新建字段(需要先注释掉所有的字段的引用)。这种解决方案在部署的时候同样痛苦,因为无论是change set还是 ant方式都无法直接部署上去,会报错:Error: Cannot set picklist values when a global picklist is referenced on the field

参考:https://success.salesforce.com/issues_view?id=a1p3A0000008g7wQAA  (类似错误)

只能先将生产或者其他环境的删除,然后在做部署。除此以外,当删除操作以后,还会影响以前报表(如果有报表使用了此字段,删除再重新创建,原有报表内容不会自动的追加回来)

2. 需要保证使用 global picklist value set的字段所在的表拥有 record type. 当 picklist value set中新建 value时,下方会选择是否将新加的值默认给引用到 picklist value set的表的所有 record type,可以先将它反选,然后对于需要的字段,进行配置即可。这个也需要前提条件,就是保证表有record type。

总结:使用与否都是双刃剑,当时满足的需求,随着后续的变更可能改修成本更高,所以使用以前想好场景,想好后续如果扩展所需要的解决方案。针对 global picklist value set的使用,个人建议还是当前表有 record type情况下使用,否则后续容易出现上述类型的潜在风险,并且后续的改动成本以及部署成本会增加。篇中有错误欢迎指出,有不懂欢迎留言。

与salesforce零基础学习(一百二十六) Picklist Value Set 优缺点和使用探讨相似的内容:

salesforce零基础学习(一百二十六) Picklist Value Set 优缺点和使用探讨

本篇参考:https://help.salesforce.com/s/articleView?id=sf.fields_creating_global_picklists.htm&type=5 当我们创建Picklist 字段时,比如很多表很多字段都会用到同样的 picklist value时,我们

salesforce零基础学习(一百二十)快去迁移你的代码中的 Alert / Confirm 以及 Prompt吧

本篇参考: https://developer.salesforce.com/blogs/2022/01/preparing-your-components-for-the-removal-of-alert-confirm-prompt https://help.salesforce.com/s/a

salesforce零基础学习(一百二十一)Limitation篇之Heap Size Limitation

本篇参考: https://help.salesforce.com/s/articleView?id=000384468&type=1 https://help.salesforce.com/s/articleView?id=000385712&type=1 此前讲过CPU limitation:s

salesforce零基础学习(一百二十二)通过 excel / csv创建 object

本篇参考: https://help.salesforce.com/s/articleView?id=sf.dev_objectcreate_task_lex_from_spreadsheet.htm&type=5 背景:当客户给我们N个表的数据,告诉我们需要创建一些新表,然后导入这些数据的时候,我

salesforce零基础学习(一百二十三)Transaction Security 浅入浅出

本篇参考: https://help.salesforce.com/s/articleView?id=sf.enhanced_transaction_security_policy_types.htm&type=5 https://developer.salesforce.com/docs/atla

salesforce零基础学习(一百二十四)Postman 使用

本篇参考: Salesforce 集成篇零基础学习(一)Connected App salesforce 零基础学习(三十三)通过REST方式访问外部数据以及JAVA通过rest方式访问salesforce 我们在项目中也经常遇见下游系统去和我们进行交互的情况,针对 salesforce可以提供 标

salesforce零基础学习(一百二十七)Custom Metadata Type 篇二

本篇参考: salesforce零基础学习(一百一十一)custom metadata type数据获取方式更新 https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_methods_system_cu

salesforce零基础学习(一百二十八)Durable Id获取以及相关概念浅入浅出

本篇参考: salesforce 零基础开发入门学习(十一)sObject及Schema深入 https://developer.salesforce.com/docs/atlas.en-us.api_tooling.meta/api_tooling/tooling_api_objects_enti

salesforce零基础学习(一百二十九)Lead Conversion 有趣的经历

本篇参考:https://help.salesforce.com/s/articleView?id=000382564&type=1 Lead Conversion 是salesforce中sales cloud的一个很好用的功能。sales cloud流程可以简单的理解成 lead to cash

Salesforce LWC学习(四十三) lwc 零基础学习路径的视频已上传B站

本篇参考:https://www.bilibili.com/video/BV1QM411G7pN/ 还记得salesforce零基础学习(一百二十五)零基础学习SF路径 中描述的那样,预计今年年底以前基于0基础学习的内容录制成视频,更好的更方便的进行学习和互动。当时的一个动机是以前公司做veeva的