zoukankan      html  css  js  c++  java
  • Salesforce 开发中的小知识(一)

    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     
    29     Map<ID,RecordType> RecordTypeMap = new Map<ID,RecordType>([
    30                                 SELECT 
    31                                    Id,DeveloperName
    32                                 FROM 
    33                                    RecordType
    34                                 WHERE 
    35                                    SObjectType =: objectName
    36                                 ]);
    37     
    38     return RecordTypeMap;
    39 }   
     
    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]

  • 相关阅读:
    CoreOS 手动更新
    阿里云ECS安装 CoreOS
    CoreOS 手动升级篇
    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
    Microsoft.NETCore.App 版本不一致导致的运行失败
    设计模式之观察者模式
    设计模式之策略模式
    树的广度优先遍历和深度优先遍历(递归非递归、Java实现)
    设计模式之组合模式
    设计模式之外观模式
  • 原文地址:https://www.cnblogs.com/luqinghua/p/9349526.html
Copyright © 2011-2022 走看看