以下練習適合剛剛接觸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為今半個多月,代碼寫得不好請多多包涵,有什么不足的地方也請評論指出,一起學習共同進步。