我是靠谱客的博主 包容花瓣,最近开发中收集的这篇文章主要介绍Salesforce 常用代码,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1. 可使用Developer Console来快速查看System.assertEquals的执行结果,也可以通过此方法快速查看某些变量的值;

2. 

关于set集合的使用,适合于存取Id值;如果要一次性List(只能根据index来remove值)中的指定项,可使用包装类使目标对象可“标记”,对删除项进行标记,然后获取删除项并将其删除。如果map的value是引用类型,可以直接拿出来修改,修改后不用在赋值回去,如果是Integer类型的value,就需要重新赋值回去。

3. 

Salesforce:将For循环内部的查询以及关于增删改查的操作拿出来,避免内部的循环内部的查询语句。操作时注意set集合的使用(常用来存储Id值,用于后续比较),set不能存储重复值。

如果类实现了schedulable接口,在写测试的时候应该使用Test.startTest()和Test.stopTest()方法来确保代码的完全执行,以保证判断结果的正确性。

4. 

添加自定义异常:

ApexPages.Message myMsg =newApexPages.Message(ApexPages.Severity.FATAL,'My Error Message'); ApexPages.addMessage(myMsg);

ApexPages.Severity是一个枚举类型,他指定了(the severity of a Visualforce message).共有五个枚举值 : CONFIRM ERROR FATAL INFO WARNING.


发送邮件:先实例化Messaging.SingleEmailMessage对象,然后设置该对象的各种属性方法,setToAddresses() , setSenderDisplayName() , setSubject() , setPlainTextBody() , setHtmlBody() ,最后调用静态方法Messaging.sendEmail(new Messaging.Email[] { 实例对象 } ) 。
5.
批量插入:insert new Account [ ] { a, b, c , ⋯⋯ } ;      
将字符串转化为日期格式:    date startDate = date.newInstance(Integer.valueOf(selectSeasonValue), 1, 1);

6.

使用<apex:variable>来对repeater等进行Record计数,使用如下方法:<apex:variable value="{!0}" var="index"/>,然后还需要在repeater内部定义一次:

<apex:variable var="index" value="{!index+1}"/>

7.

对workflow和trigger的执行次序进行的测试:测试过程:在Account上创建一个before update的trigger,触发结果是令
Account.Description='aaTest'同时在Account上创建workflow,产生的action是令Account.Description='bbTest'测试结果:对Description的变化过程进行跟踪:aaTest->bbTest->aaTest  所以可以判断

trigger和workflow的执行次序是:start -> trigger ->->wf->trigger -> end,即trigger会先于workflow执行,但是workflow只会执行一次,而trigger则是每一次满足触发条件都会执行

8.

获取字段picklist值:

example: 

Schema.Describefieldresult fieldResult = ProductLocation__c.Warehouse__c.getDescribe();

List<SelectOption> options = new List<SelectOption>();

List<Schema.PickListEntry> pickListEntries = fieldResult.getPickListValues();

for(Schema.PickListEntry entry : pickListEntries)

{ options.add(new SelectOption(entry.getValue(), entry.getValue()));}

9.

salesforce标准Popup框样式:

        <div class="overlayDialog inlineEditDialog" style="width: 600px; display:block; left:300px; top:110px; visibility:hidden;">           
            <div class="topRight">
                <div class="topLeft">
                    <img id="InlineEditDialogX2" οnmοuseοver="this.className='dialogCloseOn'" οnmοuseοut="this.className='dialogClose'" οnclick="closePop2()" class="dialogClose" src="/s.gif" />
                    <h2 id="InlineEditDialogTitle2">Pipeline Changes</h2>
                </div>
            </div>
            <apex:outputPanel id="abcd"></apex:outputPanel>
            <div class="middle">
                <div class="innerContent" id="InlineEditDialogContent2">
                    <div class="activeField">
                        <div class="inlineEditCompoundDiv" style="text-align:left">
                            <iframe src="/apex/ForecastingPipelineChanges?uid={!currentViewingUser}&quarter={!CurrentFiscalQuarter}" width="560" height="150" style="border:none"></iframe>
                        </div>
                    </div>
                </div>
            </div>
            <div class="bottomRight">
                <div class="bottomLeft"></div>
            </div>            
        </div>
        <div class="overlayBackground" style="width: 3289px; height: 1200px; display: none; position: fixed"></div>

10.

* <apex:actionStatus>可能在有些apex页面中失效,所以就需要手动去控制status。

使用该方法为函数传递参数 country和 prodIndex,调用时直接在JS里面用:selectCountry( ' countryParam ', ' prodIndexParam '); 这两个参数会以url的形式post到Controller,通过ApexPages.currentPage().getParameters().get('country');的形式获取参数值。注意:这种传参只能在无刷新的情况下进行,否则参数是无法传递的。

<apex:actionFunction name="selectCountry" action="{!selectCountry}" reRender="physicalInfoPanel">
        <apex:param name="country" value=""/>
       <apex:param name="prodIndex" value=""/>
</apex:actionFunction>

11.

关于<apex:actionFunction>控件的位置放置问题:

当<apex:actionFunction>生成的函数要和页面自定义的JS函数混合使用时,采用如下方法:

例子:<apex:commandButton id="chatSubmit" value="Submit" οnclick="checkChatValue();return false;"/>

在自定义的checkChatValue()函数中调用Apex:actionFunction生成的函数。

如果要在标准的PageBlock中使用,这时需要将<apex:actionFunction>放到<apex:pageBlock>标签中,标签<apex:actionStatus>才会正常显示。(不一定是这样,但可以解决问题。)

12.

写测试代码的时候,一般情况我们都需要在测试方法中创建出需要的测试数据,但有些情况下一些系统的标准对象很难创建甚至不能创建,比如Standard 的pricebook等;那下面这个属性就很有作用了。
@isTest (seeAllData=true)
加上这个能让我们使用系统中所有的数据用于测试

13.

RemoteAction的使用:

global with sharing class EditRMALineAddressController 
{

    @RemoteAction
    global static List<CountryStateTable__c> getStateList(String country)
    {

return [select StateCode__c, StateName__c from CountryStateTable__c where Country__c=:country order by StateName__c];

     }

}

在VF页面上调用:

EditRMALineAddressController。getStateList( country, function(result, event){

for(var i = 0; i < result.length; i++)
        {
                 var stateCode = result[i].StateCode__c;
                 var stateName = result[i].StateName__c;

}

)

即result返回的是对象数组。

14. 测试时创建对象:

        Account testAccount = new Account(Name='acme');
        insert testAccount;    
        Contact testContact = new Contact(LastName = 'acme', AccountId = testAccount.Id);
        insert testContact;

        Product2 product1 = new Product2(IsActive=true, Name='acme', Forecast_Category__c='Virtual', Family = 'Virtual Image', Model__c = 'NX-2500');

        Asset asset1 = new Asset(Name='acme', Ship_Date__c = Date.newInstance(2000,01,01), SerialNumber='acme', Quantity=1.00, Status='Conditional PO', Product2Id=product1.Id, AccountId=testAccount.Id, ContactId=testContact.Id);

Contract contract = new Contract(AccountId = testAccount.Id, SP_Contract_Number__c = 'acme', Status = 'Draft');

insert contract;

contract.Status = 'Activated';

update contract;


15. 遮罩

<style>
        .displayBG
        {
            border: none;
            width: 100%;
            height: 100%;
            display: block;
            position: fixed;
             text-align: center;
        }
        .loadingImg
        {
            height: 20px;
            width: 20px;
            margin-top: 200px;        
        }
    </style>
[9/26/13 5:14:39 PM] Samba.gao: <apex:actionStatus id="loading" layout="block">         
            <apex:facet name="start">               
                <div class="overlayBackground displayBG">
                    <img src="/img/loading.gif" id="loading" class="loadingImg"/>
                </div>
            </apex:facet>
        </apex:actionStatus>
<apex:actionFunction name="populateContract" action="{!populateContract}" reRender="theSection" status="IOStatus"/>

最后

以上就是包容花瓣为你收集整理的Salesforce 常用代码的全部内容,希望文章能够帮你解决Salesforce 常用代码所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部