1.查询一个对象下所有字段
当需要查询一个对象所有字段进行复制或其他操作,可以使用一段拼接的语句来查询
  1. String query = 'select ';
  2. for(String fieldApi : Schema.SobjectType.Opportunity.fields.getMap().keySet()){
  3. if(fieldApi=='Id')
  4. continue;
  5. query += fieldApi + ', ';
  6. }
  7. query += 'Id from Opportunity';
  8. System.debug(query);

2.获取记录类型的几种方式

  1. //第一种
  2. String recordType = Schema.SObjectType.Good__c.getRecordTypeInfosByName().get('中端品牌').getRecordTypeId();
  3. system.debug('第一种:' + recordType);
  4. //第二种:
  5. List<RecordType> list_type = [Select id,Name,IsActive,DeveloperName FROM RecordType where Name = '奢侈品牌' and IsActive = true];
  6. System.debug('第二种:' + list_type);
  7.  
  8. //第三种
  9. List<RecordType> list_type3=[select Id,DeveloperName,Name from RecordType where (DeveloperName='MiddleBrand' OR DeveloperName='extravagant')
  10. AND SObjectType='Good__c'];
  11. System.debug('第三种:' + list_type3);
  12.  
  13. //第四种
  14. List<RecordType> list_type2 = [Select Id,Name,DeveloperName From RecordType where sobjecttype = 'Good__c'];
  15. System.debug('第四种:' + list_type2);
  16.  
  17. //************************************************************************************************************
  18.  
  19. /*********
  20. *
  21. * @function
  22. * 传入对象名,获取一个Map<对象记录类型id,对象记录类型名>
  23. *
  24. *
  25. */
  26. public static Map<ID,RecordType> getObjectRecordType(String objectName){
  27.  
  28. Map<ID,RecordType> RecordTypeMap = new Map<ID,RecordType>([
  29. SELECT
  30. Id,DeveloperName
  31. FROM
  32. RecordType
  33. WHERE
  34. SObjectType =: objectName
  35. ]);
  36.  
  37. return RecordTypeMap;
  38. }
 
3.List<sobject>与JSON串的转换
  1. String json_String = JSON.serialize(List<Opportunity> list_object);
  2. List<Opportunity>)JSON.deserialize(String json_String, List<Opportunity>.class);

提供一个工具网站,将JSON自动转换成Apex类:JSON to Apex

4.BASE64位与MD5加密

  1. // base64Encode:base64编码
  2. String AccountId = 'X66666694292';
  3. String mytime = Datetime.now().format('yyyyMMddHHmmss');
  4. String authorizationHeader = EncodingUtil.base64Encode(Blob.valueOf(AccountId + ':' + mytime));
  5. System.debug('authorizationHeader:' + authorizationHeader);
  6.  
  7. //sig的值为 32位大写MD5加密 (帐号Id + 帐号APISecret +时间戳)
  8. String sig = AccountId + APISecret + mytime;
  9. String token = EncodingUtil.convertToHex(Crypto.generateDigest('MD5', Blob.valueOf(sig))).toUpperCase();

5.订单产品页面布局调整

调整标准的订单产品添加页面字段,调整后预览如下

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

6.自定义标签提示错误信息

通过自定义标签创建一条提示消息

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

对应的代码,其实可以看到提示消息就是一个字符串,但是使用自定义标签能够支持配置提示消息。

  1. trigger OpportunityTrigger on Opportunity (after insert) {
  2.  
  3. if(trigger.isInsert && trigger.isAfter){
  4. for(Opportunity opp:trigger.new){
  5. opp.addError(Label.Opp_Machine_Approval);
  6. }
  7. }
  8. }

7.自定义设置没有列表

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

开启后预览效果

8.生成随机数

发现Salesforce没有比较顺手的随机数生成方法,自己写了一个功能函数备用

  1. // @size 0-size范围的随机数
  2. public static Integer getRandomNumber(Integer size){
  3. return ((math.random()) * size).intValue();
  4. }
  5.  
  6. // @size 【lowerValue,upperValue】 范围的随机数
  7. public static Integer getRandomNumber(Integer lowerValue,Integer upperValue){
  8. return (math.random() * (upperValue - lowerValue + 1 ) + lowerValue).intValue();
  9. }

9.自定义提交待审批按钮

按钮实现JS代码

  1. {!REQUIRESCRIPT("/soap/ajax/35.0/connection.js")}
  2. {!REQUIRESCRIPT("/soap/ajax/35.0/apex.js")}
  3.  
  4. var recordtype = '{!Opportunity.RecordType}';
  5. var status = '{!Opportunity.ApprovalStatus__c}';// 审批状态
  6. var stage = '{!Opportunity.StageName}';
  7.  
  8. if(recordtype != '需要的记录类型'){
  9. alert('当前业务机会记录类型为:' + recordtype + '不能使用该审批!');
  10. }else if(status == '审批中'){
  11. alert('当前业务机会正在审批中,请耐心等待审批结果!');
  12. }else if(status == '已通过'){
  13. alert('当前业务机会已审批通过,请不要重复提交');
  14. }else{
  15. var request = new sforce.ProcessSubmitRequest();
  16. request.objectId = "{!Opportunity.Id}";
  17. var processRes = sforce.connection.process([request]);
  18. if(processRes[0].getBoolean('success')){
  19. alert("已提交报价审批,请等待审批完成!");
  20. window.location.reload();
  21. }else{
  22. alert("提交审批错误:" + processRes[0].errors.message);
  23. }
  24. }

需要注意的,是保证对审批流条件的控制,虽然不做控制系统也会自动识别该选择那条审批流,但是这样没办法友好的提示用户有那些条件是审批必须要满足的

 10 删除Chatter数据

  1. List<FeedItem> list_feed = new List<FeedItem>([select id from FeedItem]);
  2. delete list_feed;

 11 正则表达式拆分中英文

  1. String str = '123中文英文Englist通过正则@#!!进行&^%拆分';
  2. System.debug('规格型号:' + str.replaceAll('[\u4E00-\u9FA5]',' '));
  3. System.debug('名称:' + str.replaceAll('[^\u4e00-\u9fa5]',''));

拆分后预览

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

错误消息:

Duration must be between 0 and 1440 minutes - Salesforce Error - [FIELD_INTEGRITY_EXCEPTION]

Salesforce 开发整理(九) 开发中使用的一些小技巧汇总[持续更新]的更多相关文章

  1. jquery小技巧汇总 持续更新中

    1.jquery高亮当前选中菜单 $("document").ready(function(){ $(".menu li").click(function(){ ...

  2. iOS 开发中使用到的小技巧汇总

    国庆即将来到,一个小项目也即将完成,把自己在项目中用的一些小技巧写出来,方便查找. 1,去掉分割线--动画设置透明度alpha //去掉tableView的分隔线:     self.tableVie ...

  3. selenium webdriver使用的一些小技巧(持续更新中)

    1.开始结束时间只支持控件选择,不支持填写,怎么办? 如下图: 解决方案: 用javaScipt把开始结束时间的reaonly属性去除,然后再输入,举例如下 /**     * 输入开始日期     ...

  4. 【MySQL】日常小技巧汇总,更新中……

    创建表时修改自增主键,添加 AUTO_INCREMENT=<Number> ,例如: CREATE TABLE `table_name` ( `id` int(11) unsigned N ...

  5. Windows Phone开发(8):关于导航的小技巧

    原文:Windows Phone开发(8):关于导航的小技巧 前文用几个例子对导航做了简单介绍,在一般应用中,使用上一篇文章中说到的方法,其实也够用了,不过,为了能够处理一些特殊的情况,有几个小技巧还 ...

  6. 《WCF技术剖析》博文系列汇总[持续更新中]

    原文:<WCF技术剖析>博文系列汇总[持续更新中] 近半年以来,一直忙于我的第一本WCF专著<WCF技术剖析(卷1)>的写作,一直无暇管理自己的Blog.在<WCF技术剖 ...

  7. 中国.NET:各地微软技术俱乐部汇总(持续更新中...)

    中国.NET:各地微软技术俱乐部汇总(持续更新中...)   本文是转载文,源地址: https://www.cnblogs.com/panchun/p/JLBList.html by ​史记微软. ...

  8. IDEA Intellij中vim插件使用小技巧

    在 IDEA Intellij小技巧和插件 一文中简单介绍了一下IdeaVim插件.在这里详细总结一下这个插件在日常编程中的一些常用小技巧.供有兴趣使用这个插件,但对Vim还不十分熟悉的朋友参考.当然 ...

  9. [转]Golang 中使用 JSON 的小技巧

    taowen是json-iterator的作者. 序列化和反序列化需要处理JSON和struct的关系,其中会用到一些技巧. 原文 Golang 中使用 JSON 的小技巧是他的经验之谈,介绍了一些s ...

随机推荐

  1. CentOS系统安装Python3

    准备: CentOS 6.4系统 Python-3.6.5.tgz 下载地址: 官网:https://www.python.org/downloads/release/python-365/ 镜像:h ...

  2. IDEA创建xml文件

    今天在用IDEA写项目的时候发现,创建xml文件只能通过File手动输入去创建,但在我看的一个学习视频上可以直接创建xml文件,好奇之下研究了一下,作此篇,希望能对需要的朋友有所帮助. 废话就不多说了 ...

  3. ArcGIS Server 地图发布请求分析

    1.1. 数据上传 请求 URL: https://172.16.2.17:6443/arcgis/admin/uploads/upload    POST            Location: ...

  4. SQLi-LABS Page-2 (Adv Injections) Less27-Less29

    Less-27 GET - Error Based- All your UNION and select belong to us 过滤了union 和select的报错注入 查看源码: 使用%09 ...

  5. 家电制造业中MES系统发挥的作用

    人们对MES系统在家电生产领域的应用并不陌生,这是离散型MES应用的一个重要领域. 如空调.冰箱.电视.洗衣机等生产加工中均具有批量制造.多品种小批量.单件生产的等特点,很多企业也是以以订单.合同为核 ...

  6. i春秋-第三届“百越杯”福建省高校网络空间安全大赛-Do you know upload?

    进去提示有提示文件包含漏洞 拿到源码发现这里上传验证只有MIME验证 可直接抓包改 image/gif 绕过 接下来就是这次学到的点了 菜刀连接过后怎么都找不到flag文件,但是这里找到了数据库配置文 ...

  7. Google Analytics 学习笔记三 —— GA常用术语

    一.Sessions 1.会话,指定的时间段内在网站上发生的一系列互动,例如一次会话可以是网页浏览.事件或电子商务等.参考Google Analytics(分析)如何定义网络会话 2.会话结束的方式分 ...

  8. python从入门到放弃之进程

    在理解进程之前我们先了解一下什么是进程的概念吧 以下就是我总结的一些基本的进程概念 进程就是正在运行的程序,它是操作系统中,资源分配的最小单位(通俗易懂点也就是电脑给程序分配的一定内存操作空间).资源 ...

  9. 01-MySQL 大纲介绍

    MySQL 大纲介绍 1.官方定义的MySQL DBA工作内容 (1)运维DBA 初级:各版本.各平台安装搭建.升级 中级:体系结构原理.基础管理(启动关闭.初始化配置文件管理.多实例管理.用户权限管 ...

  10. JAVAWEB复习day01

    一.基础知识 1.一个html文件开始和结束的标签<html></html> 2.html的两部分<head>设置相关信息</head>,<bod ...