Salesforce 开发整理(九) 开发中使用的一些小技巧汇总[持续更新]
String query = 'select ';
for(String fieldApi : Schema.SobjectType.Opportunity.fields.getMap().keySet()){
if(fieldApi=='Id')
continue;
query += fieldApi + ', ';
}
query += 'Id from Opportunity';
System.debug(query);
2.获取记录类型的几种方式
//第一种
String recordType = Schema.SObjectType.Good__c.getRecordTypeInfosByName().get('中端品牌').getRecordTypeId();
system.debug('第一种:' + recordType);
//第二种:
List<RecordType> list_type = [Select id,Name,IsActive,DeveloperName FROM RecordType where Name = '奢侈品牌' and IsActive = true];
System.debug('第二种:' + list_type); //第三种
List<RecordType> list_type3=[select Id,DeveloperName,Name from RecordType where (DeveloperName='MiddleBrand' OR DeveloperName='extravagant')
AND SObjectType='Good__c'];
System.debug('第三种:' + list_type3); //第四种
List<RecordType> list_type2 = [Select Id,Name,DeveloperName From RecordType where sobjecttype = 'Good__c'];
System.debug('第四种:' + list_type2); //************************************************************************************************************ /*********
*
* @function
* 传入对象名,获取一个Map<对象记录类型id,对象记录类型名>
*
*
*/
public static Map<ID,RecordType> getObjectRecordType(String objectName){ Map<ID,RecordType> RecordTypeMap = new Map<ID,RecordType>([
SELECT
Id,DeveloperName
FROM
RecordType
WHERE
SObjectType =: objectName
]); return RecordTypeMap;
}
String json_String = JSON.serialize(List<Opportunity> list_object);
List<Opportunity>)JSON.deserialize(String json_String, List<Opportunity>.class);
提供一个工具网站,将JSON自动转换成Apex类:JSON to Apex
4.BASE64位与MD5加密
// base64Encode:base64编码
String AccountId = 'X66666694292';
String mytime = Datetime.now().format('yyyyMMddHHmmss');
String authorizationHeader = EncodingUtil.base64Encode(Blob.valueOf(AccountId + ':' + mytime));
System.debug('authorizationHeader:' + authorizationHeader); //sig的值为 32位大写MD5加密 (帐号Id + 帐号APISecret +时间戳)
String sig = AccountId + APISecret + mytime;
String token = EncodingUtil.convertToHex(Crypto.generateDigest('MD5', Blob.valueOf(sig))).toUpperCase();
5.订单产品页面布局调整
调整标准的订单产品添加页面字段,调整后预览如下

修改订单产品页面布局右上方下的多行式项目布局即可

6.自定义标签提示错误信息
通过自定义标签创建一条提示消息

然后在trigger里面判断,如果不满足条件可以抛出这条错误消息。效果如下图

对应的代码,其实可以看到提示消息就是一个字符串,但是使用自定义标签能够支持配置提示消息。
trigger OpportunityTrigger on Opportunity (after insert) {
if(trigger.isInsert && trigger.isAfter){
for(Opportunity opp:trigger.new){
opp.addError(Label.Opp_Machine_Approval);
}
}
}
7.自定义设置没有列表

在方案设置中开启列表类型

开启后预览效果

8.生成随机数
发现Salesforce没有比较顺手的随机数生成方法,自己写了一个功能函数备用
// @size 0-size范围的随机数
public static Integer getRandomNumber(Integer size){
return ((math.random()) * size).intValue();
} // @size 【lowerValue,upperValue】 范围的随机数
public static Integer getRandomNumber(Integer lowerValue,Integer upperValue){
return (math.random() * (upperValue - lowerValue + 1 ) + lowerValue).intValue();
}
9.自定义提交待审批按钮

按钮实现JS代码
{!REQUIRESCRIPT("/soap/ajax/35.0/connection.js")}
{!REQUIRESCRIPT("/soap/ajax/35.0/apex.js")}
var recordtype = '{!Opportunity.RecordType}';
var status = '{!Opportunity.ApprovalStatus__c}';// 审批状态
var stage = '{!Opportunity.StageName}';
if(recordtype != '需要的记录类型'){
alert('当前业务机会记录类型为:' + recordtype + '不能使用该审批!');
}else if(status == '审批中'){
alert('当前业务机会正在审批中,请耐心等待审批结果!');
}else if(status == '已通过'){
alert('当前业务机会已审批通过,请不要重复提交');
}else{
var request = new sforce.ProcessSubmitRequest();
request.objectId = "{!Opportunity.Id}";
var processRes = sforce.connection.process([request]);
if(processRes[0].getBoolean('success')){
alert("已提交报价审批,请等待审批完成!");
window.location.reload();
}else{
alert("提交审批错误:" + processRes[0].errors.message);
}
}
需要注意的,是保证对审批流条件的控制,虽然不做控制系统也会自动识别该选择那条审批流,但是这样没办法友好的提示用户有那些条件是审批必须要满足的
10 删除Chatter数据
List<FeedItem> list_feed = new List<FeedItem>([select id from FeedItem]);
delete list_feed;
11 正则表达式拆分中英文
String str = '123中文英文Englist通过正则@#!!进行&^%拆分';
System.debug('规格型号:' + str.replaceAll('[\u4E00-\u9FA5]',' '));
System.debug('名称:' + str.replaceAll('[^\u4e00-\u9fa5]',''));
拆分后预览

12 事件不超过24H限制解除

错误消息:
Duration must be between 0 and 1440 minutes - Salesforce Error - [FIELD_INTEGRITY_EXCEPTION]

Salesforce 开发整理(九) 开发中使用的一些小技巧汇总[持续更新]的更多相关文章
- jquery小技巧汇总 持续更新中
1.jquery高亮当前选中菜单 $("document").ready(function(){ $(".menu li").click(function(){ ...
- iOS 开发中使用到的小技巧汇总
国庆即将来到,一个小项目也即将完成,把自己在项目中用的一些小技巧写出来,方便查找. 1,去掉分割线--动画设置透明度alpha //去掉tableView的分隔线: self.tableVie ...
- selenium webdriver使用的一些小技巧(持续更新中)
1.开始结束时间只支持控件选择,不支持填写,怎么办? 如下图: 解决方案: 用javaScipt把开始结束时间的reaonly属性去除,然后再输入,举例如下 /** * 输入开始日期 ...
- 【MySQL】日常小技巧汇总,更新中……
创建表时修改自增主键,添加 AUTO_INCREMENT=<Number> ,例如: CREATE TABLE `table_name` ( `id` int(11) unsigned N ...
- Windows Phone开发(8):关于导航的小技巧
原文:Windows Phone开发(8):关于导航的小技巧 前文用几个例子对导航做了简单介绍,在一般应用中,使用上一篇文章中说到的方法,其实也够用了,不过,为了能够处理一些特殊的情况,有几个小技巧还 ...
- 《WCF技术剖析》博文系列汇总[持续更新中]
原文:<WCF技术剖析>博文系列汇总[持续更新中] 近半年以来,一直忙于我的第一本WCF专著<WCF技术剖析(卷1)>的写作,一直无暇管理自己的Blog.在<WCF技术剖 ...
- 中国.NET:各地微软技术俱乐部汇总(持续更新中...)
中国.NET:各地微软技术俱乐部汇总(持续更新中...) 本文是转载文,源地址: https://www.cnblogs.com/panchun/p/JLBList.html by 史记微软. ...
- IDEA Intellij中vim插件使用小技巧
在 IDEA Intellij小技巧和插件 一文中简单介绍了一下IdeaVim插件.在这里详细总结一下这个插件在日常编程中的一些常用小技巧.供有兴趣使用这个插件,但对Vim还不十分熟悉的朋友参考.当然 ...
- [转]Golang 中使用 JSON 的小技巧
taowen是json-iterator的作者. 序列化和反序列化需要处理JSON和struct的关系,其中会用到一些技巧. 原文 Golang 中使用 JSON 的小技巧是他的经验之谈,介绍了一些s ...
随机推荐
- ThinkPHP查询数据的时候toArray()报错解决办法
当查找不到数据时toArray()会报错,如图 解决办法:先查找数据,然后加个判断,如果有数据再转化为数组,如果没有数据就给个空值,不想代码继续往下执行就return false;
- 一篇文章帮你彻底搞清楚“I/O多路复用”和“异步I/O”的前世今生
在网络的初期,网民很少,服务器完全无压力,那时的技术也没有现在先进,通常用一个线程来全程跟踪处理一个请求.因为这样最简单. 其实代码实现大家都知道,就是服务器上有个ServerSocket在某个端口监 ...
- react 练习参考
项目地址:https://gitee.com/dhclly/icedog.react React 练习项目 相关资源链接 React官方 https://reactjs.org React 中国 ht ...
- javascript模块化编程思想、实现与规范
随着BS架构的发展,网站逐渐变成了互联网应用程序,嵌入网络的JavaScript代码越来越庞大,越来越复杂(业务逻辑处理或用户交互很多写在前端).网页越来越像桌面程序,需要一个团队分工协作.进度管理. ...
- 如何在点击 a 标签的 onclick 时间时,不触发 window.onbeforeunload 事件
如题! 直接贴代码了: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:/ ...
- Entity Framework 6 中如何获取 EntityTypeConfiguration 的 Edm 信息?(一)
1. 案例1 - 类型和表之间的EF代码优先映射 从EF6.1开始,有一种更简单的方法可以做到这一点.有关 详细信息,请参阅我的新EF6.1类型和表格之间的映射. 直接贴代码了 从EF6.1开始,有一 ...
- C#使用splitContainer控件制作收缩展开面板
C#使用splitContainer控件制作收缩展开面板 原创 2011年07月19日 17:18:02 标签: c# / object / 扩展 / 测试 15690 最近对Squi ...
- jmeter返回结果出现乱码
这是我的问题: 请求的百度地址,返回的数据是中文乱码 去jmeter安装目录的bin下: 修改配置文件jmeter.properties 右键打开 ,查找:sampleresult.default.e ...
- 进程调度算法spf,fpf,时间片轮转算法实现
调度的基本概念:从就绪队列中按照一定的算法选择一个进程并将处理机分配给它运行,以实现进程并发地执行. 进程信息 struct node { string name;//进程名称 int id;//进程 ...
- block注意事项
1.block的声明和注意事项 #import "ZYViewController.h" @interface ZYViewController () @end /*用typede ...