2014-10-08 72 views
1

我在Salesforce中有一个自定义按钮,我试图将其配置为自动填充收件人。我有一个自定义Salesforce对象'Approver',它与我配置了自定义按钮的对象相关。审批者对象是联系人对象的查找关系对象。审批人对象具有'批准者电子邮件','名字','姓'和'角色'等字段。批准者电子邮件地址,名字和姓氏字段是公式字段,用于从联系人获取此信息。角色字段是一个选项列表字段,其中包含与我在DocuSign for Salesforce的信封设置中配置的值相同的值。DocuSign for Salesforce自定义按钮 - 自动填充收件人

我尝试在按钮JavaScript中编写代码以自动填充Approver对象中选定的联系人,但该按钮甚至没有将收件人角色插入到信封中。下面是我是如何编码的任何帮助,将不胜感激

CCRM ='1〜APPR 1级1 CCRM,CCTM,CCNM和CRCL

的部分的JavaScript的; 2〜APPR 2级1 ; 3〜Appr 3 Level 1; 4〜Appr 4 Level 1; 5〜Appr 5 Level 1; 6〜Reviewer 1; 7〜Reviewer 2; 8〜Reviewer 3; 9〜Reviewer 4; 10〜Reviewer 5; 11〜Appr 1级2级; 12级〜2级2级; 13级〜3级2级; 14级〜4级2级; 15〜1级3级; 16〜2级3级; 17〜3级3级; 18〜约1级4级; 19〜约2级4级; 20〜约1级5级; 21〜约2级5级; //定制联系人类型地图 CCTM ='1〜签名人; 2〜签名人; 3〜签名人; 4〜签名人; 5〜签名人; 6〜确认收据; 7〜确认收据; 8〜确认收据; 9〜确认收据; 10〜确认收据; 11〜签名者; 12〜签名者; 13〜签名者; 14〜签名者; 15〜签名者; 16〜签名者; 17〜签名者; 18〜签名者; 19〜签名者; 20签名者; ; //定制联系人地图(默认没有注释) CCNM =''; //例如:'决策者〜DM注释';经济买家〜EB注释; DEFAULT_NOTE〜默认注释' //自定义相关联系人列表(默认对象联系人) CRCL ='Approver__r,Email〜Approver_Email__c; FirstName〜First_Name__c;姓氏〜Last_Name__c; ApRole〜Role__c; LoadDefaultContacts〜0' //例: 'Approver__r,电子邮件〜Email__c;姓〜First_Name__c;姓氏〜Last_Name__c;角色〜Role__c,LoadDefaultContacts〜0'

回答

3
  1. 我sugest你打破请记住这是jscript ,您需要使其可调试
  2. 以下是文档Docusign Custom Button Documentation for Salesforce 的参考,这里是DocuSign Custom Button Sample Documentation for Salesforce
  3. 我怀疑要loadDefaultContacts〜1%的文档CRCL“的LoadDefaultContacts参数确定用于所述源对象类型 默认联系人被加载(0 - 不 负载,1 - 负载)”。

  4. 我多么调试:

    一个。添加警报(由调试var控制,更改为true以查看它们)

    b。最后添加Try Catch

    c。查看下面的Sample Custom按钮,并与您正在尝试完成的操作进行比较,并一次一个步骤地执行该操作。

    d。使用Chrome进行调试并进入在Salesforce页面上创建的虚拟功能,以便您可以查看从{!}生成的变量和相关值。} SF令牌等

-sample GENERIC CUSTOM BUTTON: -

/*REQUIREMENTS: 
    1. Set Email Subject to Opp Name 
    2. Set CRL to User 
    3. Set signer tyoe to Carbon Copy 
    Created for Salesforce Version 5.2 
    Source Version of this button 1.0 
    Code Reviewed by: Group Accenture 

*/ 

var location ='\\'; 
var debug = false; 


try 
{ 

    var CES = 'Please sign this document for {!URLENCODE(JSENCODE(Opportunity.Name))}'; 
    var CRL = 'Email~{!URLENCODE(JSENCODE(User.Email))};LastName~{!URLENCODE(JSENCODE(User.Name))};Role~CCSigner;RoutingOrder~1;'; 
    var CCTM = 'CCSigner~Carbon Copy'; 
    var CCRM = 'CCSigner~CCSigner'; 

    location = "/apex/dsfs__DocuSign_CreateEnvelope?DSEID=0&SourceID={!Opportunity.id}&CES="+CES+"&CRL="+CRL+"&CCTM="+CCTM+"&CCRM="+CCRM; 


} 
catch (e) 
{ 

    alert("Error Occured"+e.message); 

} 
finally 
{ 
    if(debug) 
    { 
     alert(location); 
    } 
    else 
    { 
     window.location.href = location; 
    } 
} 

-sample复杂的自定义按钮使用SOQL和CRL/CCRM/CCTM的建立 -

{!REQUIRESCRIPT("/apex/DocuSign_JavaScript")} 
{!REQUIRESCRIPT("/soap/ajax/29.0/connection.js")} 
{!REQUIRESCRIPT("/soap/ajax/29.0/apex.js")} 

/*REQUIREMENTS: 
    1. Set CRL based on Business logic using Product Type and User Roles 
    2. Set DST based on Business logci using Product Type 
    3. Business Logic (Expand Below here) 
     ====See Section Business Rules==== 
    4. By default this is for sandbox, prod value must be true for it to be using values for Templates in Production mode 
    5. This is not a one button click send 
    Created for Salesforce Version 5.4 
    Source Version of this button 0.5 (beta) 
    Code Reviewed by: DocuSign (TBD) 

    ====See Section Business Rules==== 
    DocuSign Button Logic 

    1. IF Docusign_Checkbox__c = TRUE 
     AND Sector__c = ‘Life Sciences’ 
     THEN 
     Signer 1 = Business Integrity Director Role 
     Signer 2 = Life Sciences Sector Lead Role 

    2. IF Docusign_Checkbox__c = TRUE 
     AND Sector__c = ‘Financial Services’ 
     THEN 
     Signer 1 = Business Integrity Director Role 
     Signer 2 = Financial Services Sector Lead Role 

    3. IF Docusign_Checkbox__c = TRUE 
     AND Sector__c <> ‘Life Sciences’,‘Financial Services’ 
     THEN 
     Signer 1 = Business Integrity Director Role 
     Signer 2 = Health Plans & Providers Sector Lead Role 

    4. IF Docusign_Checkbox__c = FALSE 
     THEN 
     Signer 1 = Business Integrity Director Role 
     Signer 2 = Practice Lead with Signing Power 

    Current Questions, Assumptions and clarifications outstanding 
a. What client Sign's? 
     i. I see the internal signers, but who is going to sign from the "clients" perspective, or will the person using the button decide 
    b. Can you send me the LS template, renamed to txt (xml or zip will not come through) 
    c. I will need the production template ids (guids) as they are different from Prod to Demo 
    e. What do you want the button to say aka "Send with DocuSign" or something else for your business process 
    f. I assume if I am missing the below you want an error message with all the issue shown without allowing the user to send: 
     i. No user for Role 
     ii. Data for Lead if not DocuSign 
    g. I assume the following as well: 
     i. The new doc with the 4 scenarios superceds the original email with the different condition 
     ii. You don't want to change the default on the below: 
      I. Email Subject or Message will be the standard default for the Managed Package in the admin 
      II. The expirations and reminders will be the standard default for the Managed Package in the Admin 
      III. I will not load the default contacts or attachments 
      IV. I will load the recipients based on the business rules only given in the new document 
      V. I will load the template based on the business rules only given in the new document 
      VI. This is NOT a one button click send 

     DEMO 
     EBM = DST = 1989696D-F058-42E5-9C5B-8718482E2C1A 
     NVS = DST = A906436D-5352-40DE-A9F8-1EE0795E4266 
     LS = DST = 4CFE35EC-C8A4-4090-9B72-024F1DE26757 

4CFE35EC-C8A4-4090-9B72-024F1DE26757 
     PROD 
     LS DST 
     6048B3CD-D2C5-44BE-9630-51CFCFBD092D 

     EBM DST 
     B3D6159B-5BE3-4B80-8e8e-96173120D0EF 

     NVS DST 
     855790D3-6121-496F-B870-D0B276A54611 

*/ 

var location ='\\'; 
var debug = false; 
var prod = false; 

//Define Business Rule Functions below for: 
// Getting User Role 
function getUserInfoForRole(roleName,templateRole, routingOrder) 
{ 
    var recipient = ''; 

    try 
    { 

     var result = sforce.connection.query("select id, Email, FirstName, Lastname from User where userroleid in (Select id from UserRole where Name ='"+roleName+"')"); 
     var userForRole = result.getArray("records"); 

     recipient = 'Email~'+userForRole[0].Email+';FirstName~'+userForRole[0].FirstName+';LastName~'+userForRole[0].LastName+';Role~'+templateRole+';RoutingOrder~'+routingOrder+';,'; 

    } 
    catch(e) 
    { 
      if(debug) 
      { 
       alert(e.message); 
      } 
    } 
    finally 
    { 

    } 

    return recipient; 
} 

try 
{ 

    //Set DST based on Business Logic 
    var DST = ''; 

     //Set CRL based on Business Logic in Function (TBD) 
    var CRL = ''; 

    //Set Signer Type to Signer for each Role as Signer (Looks to be just two in templates) 
    var CCTM = ''; 

    //Set Signer Type to Signer for each Role (Looks to be just two in templates) 
    var CCRM = ''; 


    if({!Contract.Docusign_Checkbox__c}==1) 
    { 

     if(debug) 
     { 
      alert('DocuSign Checked') 
     } 

     if('{!Contract.Sector__c}' == 'Life Sciences') 
     { 
      //Signer 1 = Business Integrity Director Role 
      CRL = getUserInfoForRole('Business Integrity Director', 'Business Integrity', '1'); 
      CCTM = 'Business Integrity~Signer;'; 
      CCRM = 'Business Integrity~Business Integrity;'; 

      //Signer 2 = Life Sciences Sector Lead Role 
      CRL = CRL + getUserInfoForRole('Life Sciences Sector Lead', 'Client Signer', '2'); 
      CCTM = CCTM + 'Client Signer~Signer;'; 
      CCRM = CCRM + 'Client Signer~Client Signer;'; 

      if(debug) 
      { 
       alert('Life Sciences') 
      } 

      if(prod) 
      { 
       DST = '6048B3CD-D2C5-44BE-9630-51CFCFBD092D' 
      } 
      else 
      { 
       DST = '686DBA37-EBF3-410F-90E3-7E3F36A95694'; 
      } 

      if(debug) 
      { 
       alert(DST) 
      } 

     } 
     else if('{!Contract.Sector__c}' == 'Financial Services') 
     { 
      //Signer 1 = Business Integrity Director Role 
      CRL = getUserInfoForRole('Business Integrity Director', 'Business Integrity', '1'); 
      CCTM = 'Business Integrity~Signer;'; 
      CCRM = 'Business Integrity~Business Integrity;'; 

      //Signer 2 = Financial Services Sector Lead Role 
      CRL = CRL + getUserInfoForRole('Financial Services Sector Lead', 'Sector Lead', '2'); 
      CCTM = CCTM + 'Sector Lead~Signer;'; 
      CCRM = CCRM + 'Sector Lead~Sector Lead;'; 


      if(debug) 
      { 
       alert('Financial Services') 
      } 

      if(prod) 
      { 
       DST = 'B3D6159B-5BE3-4B80-8e8e-96173120D0EF' 
      } 
      else 
      { 
       DST = '1989696D-F058-42E5-9C5B-8718482E2C1A' 
      } 

      if(debug) 
      { 
       alert(DST) 
      }   

     } 
     else if(('{!Contract.Sector__c}' != 'Life Sciences') && ('{!Contract.Sector__c}' !='Financial Services')) 
     { 
      if(debug) 
      { 
       alert('Not Life Sciences or Financial Services') 
      } 
      //Signer 1 = Business Integrity Director Role 
      CRL = getUserInfoForRole('Business Integrity Director', 'Business Integrity', '1'); 
      CCTM = 'Business Integrity~Signer;'; 
      CCRM = 'Business Integrity~Business Integrity;'; 

      //Signer 2 = Health Plans & Providers Sector Lead Role 
      CRL = CRL + getUserInfoForRole('Health Plans & Providers Sector Lead', 'Sector Lead', '2'); 
      CCTM = CCTM + 'Sector Lead~Signer;'; 
      CCRM = CCRM + 'Sector Lead~Sector Lead;'; 

      if(prod) 
      { 
       DST = '855790D3-6121-496F-B870-D0B276A54611' 
      } 
      else 
      { 
       DST = 'A906436D-5352-40DE-A9F8-1EE0795E4266' 
      } 

      if(debug) 
      { 
       alert(DST) 
      } 
     } 
     else 
     { 
      //Error 
      if(debug) 
      { 
       alert('Error in Services detection via Sector__c') 
      } 
     } 

    } 
    else 
    { 
     //Signer 1 = Business Integrity Director Role 
     CRL = getUserInfoForRole('Business Integrity Director', 'Business Integrity', '1'); 
     CCTM = 'Business Integrity~Signer;'; 
     CCRM = 'Business Integrity~Business Integrity;'; 

     //Signer 2 = Practice Lead with Signing Power 
     CRL = CRL + getUserInfoForRole('{!Contract.Sector__c} Lead', 'Practice Lead', '2'); 
     CCTM = CCTM + 'Practice Lead~Signer;'; 
     CCRM = CCRM + 'Practice Lead~Practice Lead;'; 


     if(debug) 
     { 
      alert('DocuSign NOT Checked') 
     } 

     if(prod) 
     { 
      DST = '855790D3-6121-496F-B870-D0B276A54611' 
     } 
     else 
     { 
      DST = 'A906436D-5352-40DE-A9F8-1EE0795E4266' 
     } 

     if(debug) 
     { 
      alert(DST) 
     }  

    } 




    //Need Error Check, No OppId, 

    location = "/apex/dsfs__DocuSign_CreateEnvelope?DSEID=0&SourceID={!Contract.id}&DST="+DST+"&CRL="+CRL+"&CCTM="+CCTM+"&CCRM="+CCRM; 


} 
catch (e) 
{ 

    alert("Error Occured"+e.message); 

} 
finally 
{ 
    if(debug) 
    { 
     alert(location); 
    } 
    else 
    { 
     window.location.href = location; 
    } 
} 
相关问题