本篇参考: https://developer.salesforce.com/docs/atlas.en-us.234.0.apexref.meta/apexref/apex_methods_system_custom_metadata_types.htm https://trailhead.salesforce.com/en/content/learn/modules/platform-developer-i-certification-maintenance-winter-22/learn-…
salesforce中,有的时候我们需要将一组用户放进一个Group,用来实现以下主要功能: 1.通过sharing rule设置默认的共享访问; 2.将记录分享给其他用户; 3.指定同步的联系人,这些联系人的onwer属于其他user; 4.分配Group中用户到指定的动作,比如审批流程等. Group作为系统表,其字段信息如下所示: 其中Type作为PickList字段,他的取值可以通过Schema方式取出. public with sharing class GroupPickList {…
有的时候,我们项目有可能有类似需求:做一个简单的图像轮转播放功能,不同的VF页面调用可以显示不同的图片以及不同的图片描述.这种情况,如果在每个页面单独处理相关的图像轮转播放则显得代码特别冗余,此种情况下适合使用apex:component实现,将图像轮转的功能做成一个组件,图像的URL以及图像的描述信息可以作为参数传递进来,不同的VF可以放置不同的图像 URLS 和描述信息. 一.apex:component简单用法介绍: apex:component作为预定义的组件通常需要VF页面进行相关传值…
此篇请参看:https://resources.docs.salesforce.com/202/latest/en-us/sfdc/pdf/salesforce_developer_environment_tipsheet.pdf salesforce提供了多种API和外部交互,常用的有REST API方式以及SOAP API方式.其中,REST方式好处是方便,如果业务逻辑不复杂情况下,rest方式是首选,但是如果操作特别复杂,比如在api中需要调用审批流,需要进行复杂的业务逻辑,则可以考虑使用…
我们在开发中往往需要考虑国际化功能,salesforce 提供了国际化功能,在search部分搜索translate,便可以找到translate部分,从而对需要的进行translate.比如picklist values的中英文,字段标题的中英文翻译等等 翻译部分有一项可以设置需要翻译的类型,有时候我们需要对标准表的标准字段进行中英文翻译,但是发现里面并没有translate的地方.比如Account的Name字段是标准的字段,label的名字为Name,中文对应为客户名.但是用户希望将Nam…
今天在群里大概遇到了这样一个问题,明明这个User存在,但是save的时候提示信息说Value不存在,大概的意思如下图所示,目前认为这种问题常见的可能情况有两种. 一.此字段设置Validation Rule 此字段设置Validation Rule,判断条件为当User1的值与Owner相同情况下,便提示下方的Error信息; 二.LookUp/Master-Detail字段设置Filter 当字段类型为LookUp或者Master-Detail类型情况下,可以设置Record Filter,…
有一篇内容专门写了workflow,后来用到的时候心生疑问,不知道小伙伴有没有和我想法一样的,workflow具体内容原来已经说过,不在过多叙述,只说一下运行条件. 那就是:当满足运行条件时,执行相关的action.action操作有一点是field update,可以修改workflow针对的表的字段. 那么问题来了:如果执行field update操作以后,修改的值恰好又可以满足运行条件时,workflow是否会变成死循环? 当然,我希望抱有相同想法的人越少越好,因为action操作有一个c…
曾经做项目没有考虑那么多,对于级联表操作都是正常的一步一步操作,没有考虑过失败情况,最近项目遇见了失败的情况,导致碰到了相应的情况,特此mark一下,免得后期继续踩坑. 需求如下:新建页面,页面中包含1.新建企业,2.新建联系人,3.新建机会.任何一步的逻辑或者DML操作失败都会导致整体的回滚.只有当三步都正常插入成功了以后才会跳转到新生成的机会的标准页面. 1.NewOpportunityController:这里做了一个逻辑判断,当联系人为空情况下,不允许新建联系人.当然,现实场景不会在这里…
说Facet以前,我们先说一下浏览器加载解析以及渲染的过程.浏览器获取一个HTML的文件时,会按照自上向下的顺序进行解析,并在加载过程中进行渲染.对html解析成DOM树,对CSS 解析成CSS Rule树,然后通过DOM数以及CSS Rule树构造Rendering树. 接下来转回Facet,Facet是什么?有哪些的使用场景呢? Facet 可以理解成一个占位符,这个占位符用于对父组件的指定的部分进行重新渲染. 很多组件都有默认的渲染,如果默认的渲染的结果不是你想要得到的结果,可以使用fac…
之前的一篇介绍过关于salesforce手动配置关联关系实现PickList的联动效果,但是现实的开发中,很多数据不是定死的,应该通过ajax来动态获取,本篇讲述通过JavaScript Remoting 方式实现联动效果. 一.JavaScript Remoting简单介绍 上图为PDF中基本介绍,在VF中调用格式如下: Visualforce.remoting.Manager.invokeAction ( '{!$RemoteAction.MyController.myFunction}',…
本篇参考: salesforce零基础学习(九十五)lightning out https://developer.salesforce.com/docs/component-library/documentation/en/lwc/lightning_out_considerations https://developer.salesforce.com/docs/component-library/bundle/lightning:isUrlAddressable/documentation…
本篇参考: https://developer.salesforce.com/docs/atlas.en-us.228.0.apexcode.meta/apexcode/apex_class_Auth_SessionManagement.htm https://help.salesforce.com/s/articleView?language=en_US&type=1&id=000339386 机缘巧合下碰到了这种问题,还挺好玩,记录一下,方便以后再次遇见情况下快速解决.背景如下: 在某…
项目中,审批操作无处不在.配置审批流时,我们有时候会用到queue,related user设置当前步骤的审批人,审批人可以一个或者多个.当审批人有多个时,邮件中获取当前记录的审批人和审批意见就不能随便的取一个审批人了,有以下方式针对不同的场景可以获取到当前记录的最终审批人以及审批意见. 邮件内容使用以下几种方式实现: 1.代码里面实现邮件发送 2.email template(text/html/custom) 3.visualforce emailTemplate 对发送邮件方式不清楚的,可…
本篇参考:https://developer.salesforce.com/blogs/2018/07/which-streaming-event-do-i-use.html https://trailhead.salesforce.com/content/learn/modules/platform_events_basics https://developer.salesforce.com/docs/atlas.en-us.platform_events.meta/platform_even…
第十七篇的Trigger用法为通过Handler方式实现Trigger的封装,此种好处是一个Handler对应一个sObject,使本该在Trigger中写的代码分到Handler中,代码更加清晰. 十七篇链接:salesforce 零基础学习(十七)Trigger用法 有的时候对于sObject的trigger处理复杂的情况下,比如一个sObject的before update要实现功能1,2.....n功能情况下,Handler中需要在before update写实现功能1--n的代码.然而…
此篇可以参考: https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_restful_http_testing_httpcalloutmock.htm https://developer.salesforce.com/trailhead/force_com_dev_intermediate/apex_integration_services/apex_integration_re…
项目中,我们有时候会需要实现自动联想功能,比如我们想输入用户或者联系人名称,去联想出系统中有的相关的用户和联系人,当点击以后获取相关的邮箱或者其他信息等等.这种情况下可以使用jquery ui中的autoComplete实现. 此篇需求为在输入框中输入检索词对数据库中User表和Contact表的Name字段进行检索,符合条件的放在联想列表中,当用户选择相应的名称后,输入框中显示此名称对应的邮箱地址. 实现此功能可以整体分成三步: 1.通过输入内容检索相关表中符合条件的数据: 2.对检索的数据进…
注:本篇解决方案内容实现转自:http://mysalesforceescapade.blogspot.com/2015/03/getting-dependent-picklist-values-from.html 群里面有个小伙伴询问了一个关于两个有Dependence关系的Picklist字段如何在Apex中通过control字段的值获取到Dependence字段的值,针对Salesforce配置来说,我们很好配置出两个Dependence字段的关系,通过点击设置一下include关系即可.…
在classic环境中,salesforce提供了<apex:inputFile>标签用来实现附件的上传以及内容获取.salesforce 零基础学习(二十四)解析csv格式内容中有类似的使用此标签进行解析附件内容,后台只要声明String类型变量用来存储附件名称,Blob类型变量用来存储附件的内容即可. 但是当我们的项目整体使用第三方的前端框架,例如VUE或者angular等前端框架时,有时使用apex:inputFile反而不是很方便,需要用到html的原生的附件上传的标签<inpu…
看本篇之前可以相应阅读以下Trigger相关文章: 1.https://developer.salesforce.com/page/Trigger_Frameworks_and_Apex_Trigger_Best_Practices 2.http://chrisaldridge.com/triggers/lightweight-apex-trigger-framework/ 3.http://www.sfdc99.com/2015/01/19/the-one-trigger-per-object…
本篇参考: https://developer.salesforce.com/docs/atlas.en-us.232.0.api_streaming.meta/api_streaming/using_streaming_api_durability.htm https://trailhead.salesforce.com/content/learn/modules/change-data-capture https://developer.salesforce.com/docs/atlas.e…
本篇参考: https://developer.salesforce.com/docs/atlas.en-us.216.0.apexcode.meta/apexcode/apex_classes_keywords_sharing.htm https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_with_security_enforced.htm 一. Currency 处理 我们在…
通过做项目以及群里面的一些大神的聊天,总结一下关于项目中的两个知识点,以后当做参考. 一. 在custom setting中配置集成接口信息后刷sandbox的问题 我们做项目时,经常会遇见和其他平台集成,比如和SAP等系统平台进行集成.因为salesforce开发模式大部分是dev -> full -> production.  所以当我们做类似callout等操作时,集成的账号密码或者Endpoint等通常要动态的配置.这种操作通常会配置在Custom Setting或者custom me…
本篇参考:https://architect.salesforce.com/decision-guides/migrate-change https://developer.salesforce.com/docs/atlas.en-us.sfdx_dev.meta/sfdx_dev/sfdx_dev_dev2gp.htm 很偶然看到了这篇文章,一下子就被吸引住了.尽管项目中的一些部署方式有用到过,考SF认证也有很多相关的靠题,也能二二三三的讲出点不同场景以及优缺点,但总不是很全面的了解,所以基于…
本篇内容只是本人简单的mark开发中常出现的一些疑问,方便后期项目使用时奠定基础,如果对Test零基础童鞋,欢迎查看Test官方的使用介绍: https://help.salesforce.com/apex/HTViewHelpDoc?id=testing_your_code.htm&language=zh_CN 编写Test类基本步骤可以分成4步: 1.创建测试数据; 2.调用Test.startTest()方法; 3.调用需要测试的方法(); 4.调用Test.stopTest()方法. 编…
我们在做项目时经常会使用changeset作为部署工具,但是某些场景使用changeset会比较难操作,比如当我们在sandbox将apex class更改名字想要部署到生产的org或者其他环境的org,使用changeset是没法实现的,这个时候我们需要使用Ant Migration Tool还是更好的. salesforce基于metadata进行管理,Ant Migration Tool 是一个基于 Java/Ant的命令行工具用于将metadata从本地迁移至Sales Org. Mig…
在Salesforce的世界,凡事皆Metadata. 先通过一句经常使用的代码带入一下: Account accountItem = (Account)JSON.deserialize(accountString,Account.class); 这种代码相信大部分开发都会写过,前台将数据序列化,通过字符串的形参传递给后台,后台将数据进行反序列化,从而获取到这个表或者这个自定义类的实例.所以问题来了,为啥第二个参数是 Account.class?我们通过官方的API描述可能更好的进行了解. 这里…
本篇参考:http://resources.docs.salesforce.com/200/17/en-us/sfdc/pdf/salesforce_workbench_cheatsheet.pdf 做项目一般需要考虑国际化问题.在salesforce中,当我们自定义一个Custom label情况下,他就可以选择需要translate的语言,如下图所示. 但是当我们new一个PickList字段或者当我们validation写错误信息情况下,便只能通过一种语言写,那如何实现PickList,v…
对于一个项目来说,除了稳定性以及健壮性以外,还需要有较好的安全性,此篇博客简单描述salesforce中关于安全性的一点小知识,特别感谢公司中的nate大神和鹏哥让我学到了新得知识. 项目简单背景: 假设有两个sObject,分别是A和B.B是A的子sobject.表单中元素显示的是B的相关字段,这些字段A中也全部包含.表单中包含了9个元素,点击提交的时候需要分成4组校验,每一组中只要有一个元素修改过,此组元素就需要全部按照特有的校验规则校验.此处的修改过代表输入框中的内容和A中的内容不一致,则…
本篇参考: https://help.salesforce.com/s/articleView?id=sf.security_restriction_rule.htm&type=5 https://help.salesforce.com/s/articleView?id=sf.security_restriction_rule_examples.htm&type=5 https://developer.salesforce.com/docs/atlas.en-us.236.0.restri…