Salesforce簡單練習案例 - 適合初學者


 

 

以下練習適合剛剛接觸Saleforce平台,並已經做完官方salesforce文檔中招聘事例,對Apex語言有一些基礎認知,需要練習的童鞋。

需要文檔的請移步官方網站:https://developer.salesforce.com/docs/   

懶人網盤鏈接:http://pan.baidu.com/s/1bp1oGqz 密碼:b0zm

 

進入正題:

1.對象字段配置:

新建一個對象:對象名為會員(Member)。

上面新建幾個字段:

記錄編號(自動編號)autoNum__c,編號樣式MM-0001;

性別(選項列表):gender__c,選項列表值(男,女,未知),設置默認值為 ‘男’;

成為會員日期(日期類型):memdate__c,默認值今天;

已購商品(選項列表):buyedgoods__c; 選項列表值(洗發素,沐浴露,洗衣液);

是否已購商品(復選框):ifbuyed__c;

客戶(查找字段,查找客戶):account__c;

客戶地址 address__c;

標准對象:客戶

新建字段:

      會員數量(數字):mennum__c;默認值為0;

2.新建工作流:

     新建或更新會員記錄時,如果‘已購商品’字段為空,則‘是否已購商品’值變為未勾選,如果‘已購商品’字段選擇了值,則‘是否已購商品’值變為已勾選。

3、配置實現:

會員對象上的客戶地址 address__c;取客戶上的地址

4.Trigger和Class:

1、 利用trigger和class,來實時統計該客戶下有多少個會員。新建,更新,刪除會員時,統計該客戶的會員記錄數量,給客戶上的‘會員數量’字段賦值。

2、當會員上的是否已購商品打鈎時,在該客戶下創建一條任務。主題為”您有新的會員任務需要跟進”、到期日期取當前日期的后三天。

5.簡單頁面:

     做一個會員展示頁面,分頁顯示所有會員記錄,每頁顯示2條記錄,需要展示會員所有自定義字段。

 

 

前三題,對於做過官方文檔招聘事例的童鞋都是溫故的內容,后面兩題給大家提供下本人的解決方法。

第四題,第一小題

trigger:

trigger MemberTrigger on Member__c (after insert,after update,after delete,after undelete)
{
    if(trigger.isAfter){
        Cbl_MemberCount memberCount=new Cbl_MemberCount();
        if(trigger.isInsert){
            memberCount.memberCount(trigger.new);
        }
        if(trigger.isUpdate){
            memberCount.memberCount(trigger.new,trigger.old);
        }
        if(trigger.isDelete){
            memberCount.memberCount(trigger.old);
        }
        if(trigger.isUndelete){
            memberCount.memberCount(trigger.new);
        }
    }
}

trigger輔助類:

public class Cbl_MemberCount
{
    //適用於新建、刪除時的操作
    public void memberCount(List<Member__c> list_Member){
        Set<ID> set_ID=new Set<ID>();
        List<ID> list_id=new List<id>();
        //遍歷得到的集合,去重復得到操作過的客戶ID
        for(Member__c objMember:list_Member){
            set_ID.add(objMember.account__c);
        }
        //將最終結果用list保存
        list_id.addAll(set_ID);
        //重新查詢進行操作過的客戶ID下有多少個會員
        AggregateResult[] memberNum=[select Count(Member__c.autoNum__c) from Member__c 
                                     where Member__c.account__c in :list_id];
        system.debug(memberNum.size());
        //將查詢結果放入List中
        List<Account> list_updateAccout=new List<Account>();
        for(Integer i=0;i<memberNum.size();i++){
           Account account=new Account();
           system.debug(memberNum[i]);
           account.menNum__c=(Decimal)memberNum[i].get('expr0');
           account.id=list_id.get(i);
           list_updateAccout.add(account);
        }
        system.debug(list_updateAccout);
        //更新
        update list_updateAccout;
    }
    //適用於修改操作
    public void memberCount(List<Member__c> list_Member,List<Member__c> oldlist_Member){
        Cbl_MemberCount memberCount=new Cbl_MemberCount();
        memberCount.memberCount(list_Member);
        memberCount.memberCount(oldlist_Member);
    }
}

 

 

第四題,第二小題

這個問題本人能力有限,不知道如何用代碼實現,暫時通過salesforce進程生成器配置完成了

 

點擊:設置-》創建-》工作流和批准-》進程生成器

新建一個進程,然后配置如下所示:

 

注意相關項ID選擇會員所屬客戶ID,這樣一旦是否購物記錄為True,就會新建一條任務記錄,分配到相關的客戶下顯示。

 

第五題

本人分頁參考了zero大大一篇博客,大家可以移步去看看,寫的比較詳細http://www.cnblogs.com/zero-zyq/p/5343287.html

 

分頁控制類:

public class MemberController
{
    //實例化StandardSetController查詢定位器
    public ApexPages.StandardSetController con{
        get{
            if(con==null){
                con=new ApexPages.StandardSetController(Database.getQueryLocator([select Name,autoNum__c, gender__c,memdate__c,
                                  buyedgoods__c, ifbuyed__c, account__c, address__c from Member__c])); con.setPageSize(
2); } return con; } set; } public List<Member__c> getMember(){ return (List<Member__c>)con.getRecords(); } //首頁 public void first(){ con.first(); } //尾頁 public void last(){ con.last(); } //上一頁 public void previous(){ con.previous(); } //下一頁 public void next(){ con.next(); } //當前頁碼 public Integer getPageNumber(){ return con.getPageNumber(); } //總共頁數 public Integer getPageCount(){ if(con.getResultSize()<=2){ return 1; } if(math.mod(con.getResultSize(),con.getPageSize())==0){ return con.getResultSize()/con.getPageSize(); } return con.getResultSize()/con.getPageSize()+1; } //當前頁記錄數 public Integer getPageSize(){ return con.getPageSize(); } }

 

 

visualforce頁面代碼:

<apex:page Controller="MemberController">
    <apex:form >
        <apex:pageBlock title="會員展示頁面">
            <!--表格內容 下面的Member對應get后的方法名-->
            <apex:pageBlockTable value="{!Member}" var="mem">
                <apex:column value="{!mem.autoNum__c}" />
                <apex:column value="{!mem.Name}"/>
                <apex:column value="{!mem.gender__c}"/>    
                <apex:column value="{!mem.buyedgoods__c}"/>
                <apex:column value="{!mem.ifbuyed__c}"/>
                <apex:column value="{!mem.memdate__c}"/>
                <apex:column value="{!mem.account__c}"/>
                <apex:column value="{!mem.address__c}"/>
            </apex:pageBlockTable>
        </apex:pageBlock>
        <table style="margin:0 auto;width:120%;">
            <tr>
                <td style="width:30%"></td>
                <!--頁面信息展示-->
                <td style="width:40%;text-align:justify">
                    <apex:outputText >第{!PageNumber}頁,</apex:outputText>
                    <apex:outputText >共{!PageCount}頁,</apex:outputText>
                    <apex:outputText >每頁{!PageSize}條</apex:outputText>

                </td>
                   <!--分頁組件-->
                <td style="width:30%;text-align:right">
                    <apex:panelGrid columns="5" >
                        <apex:commandLink action="{!first}" value="首頁"/>
                        <apex:commandLink action="{!previous}" value="上一頁"/>
                        <apex:outputText >{!PageNumber}</apex:outputText>
                        <apex:commandLink action="{!next}" value="下一頁"/>
                        <apex:commandLink action="{!last}" value="尾頁"/>
                    </apex:panelGrid>
                </td>
            </tr>
        </table>
        <apex:detail />
    </apex:form>
</apex:page>

 

 

本人初出茅廬程序員一只,學習Salesforce為今半個多月,代碼寫得不好請多多包涵,有什么不足的地方也請評論指出,一起學習共同進步。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM