Thursday, August 11, 2016

AutoComplete in Visualforce Textbox/ InputText

Hi,

As a lot of users are trying to get auto-populate the data in the textbox. please try the below code

In the below code the search is based on the contact object. Search result based on contacts first name and last name.
<apex:page >
        <script language="JavaScript" src="/soap/ajax/10.0/connection.js"></script>
        <script language="JavaScript">
             
            var req = null;
            sforce.connection.sessionId ="{!$Api.Session_ID}";
             
            function loadXMLDoc(typed) {
                if(typed =='')
                {
                    document.getElementById("searchResult").style.display = 'none'; 
                }else{
                    document.getElementById("searchResult").style.display = 'block'; 
                    sforce.connection.query("select Name,Id from Contact where Name like '" + typed + "%' limit 10", onSuccess);
                }
            }
 
            function onSuccess(result) {
                var sb = "";
                var records = result.getArray("records");
                for (var i = 0; i < records.length && i < 10; i++) {
                    sb += "<span id="+records[i].Name +" onclick='divFunction(this.innerText);'>"+records[i].Name + "</span><br>";
                }
                getObject("searchResult").innerHTML = sb;
            }
 
            function getObject(name) {
                var ns4 = (document.layers) ? true : false;
                var w3c = (document.getElementById) ? true : false;
                var ie4 = (document.all) ? true : false;
 
                if (ns4) return eval('document.' + name);
                if (w3c) return document.getElementById(name);
                if (ie4) return eval('document.all.' + name);
                return false;
            }
 
            window.onload = function() {
                getObject("q").focus();
                document.getElementById("searchResult").style.display = 'none'; 
            }
             
            function divFunction(name){
                document.getElementById("q").value=name;
                 document.getElementById("searchResult").style.display = 'none'; 
                 alert('You have selected '+name);
            }
        </script>
     
        <div align="center">
            <form>
                <div align="left">
                    <table>
                        <tbody><tr>
                            <td>
                            Contact Name :
                            </td>
                            <td>
                                <input autocomplete="off" type="text" name="q" id="q" size="20" onkeyup="loadXMLDoc(this.value)" style="width:200px;" ></input>
                            </td>
                        </tr>
                            <tr>
                            <td></td>
                            <td>
                                <div align="left" id="searchResult" name="searchResult" style="font-family:Arial; border:#000000 solid 1px; font-size:12px; width:200px; padding:4px; margin:0"></div> 
                            </td>
                        </tr>
                    </tbody></table>
                </div>
            </form>
        </div>
</apex:page>


Monday, July 25, 2016

convert a Date/Time field for any timezone

Salesforce saves the date/time fields on GMT Timezone. It is difficult to the users who works on different time zones. Here is solution

create a formula field that calculates the time based on the timzone. Please try the below example. The example which i showed you will work for PST.  if needed to use that in IST change the values (-7 & -8) to 5.5

IF ( DATEVALUE(CreatedDate) >=
DATE ( YEAR (DATEVALUE(CreatedDate)),3,1)
+
(14-
CASE( MOD(DATE ( YEAR (DATEVALUE(CreatedDate)),3,1) - DATE (1900,1,7),7) ,
0,7,MOD(DATE ( YEAR (DATEVALUE(CreatedDate)),3,1) - DATE (1900,1,7),7))
)
&&
DATEVALUE(CreatedDate) <
DATE ( YEAR (DATEVALUE(CreatedDate)),11,1)
+
(7-
CASE( MOD(DATE ( YEAR (DATEVALUE(CreatedDate)),11,1) - DATE (1900,1,7),7) ,
0,7,MOD(DATE ( YEAR (DATEVALUE(CreatedDate)),11,1) - DATE (1900,1,7),7))
),
LEFT ( TEXT (CreatedDate- 7/24 ), 16),
LEFT ( TEXT (CreatedDate- 8/24), 16)
)


Tuesday, July 19, 2016

Test Class for Asynchronous Callouts using Continuation Class


Write test class and meet the test code coverage for deploy or managed package. Since apex tests doesnot supports the callouts. We use mock responses.

To simulate callouts in continuations, call these methods of the Test class:
setContinuationResponse(requestLabel, mockResponse) and
invokeContinuationMethod(controller, request).
public with sharing class ContinuationController {
    // Unique label corresponding to the continuation request
    public String requestLabel;
    // Result of callout
    public String result {get;set;}
    // Endpoint of long-running service
    private static final String LONG_RUNNING_SERVICE_URL = '';
   
   // Action method
    public Object startRequest() {
      // Create continuation with a timeout
      Continuation con = new Continuation(40);
      // Set callback method
      con.continuationMethod='processResponse';
      
      // Create callout request
      HttpRequest req = new HttpRequest();
      req.setMethod('GET');
      req.setEndpoint(LONG_RUNNING_SERVICE_URL);
      
      // Add callout request to continuation
      this.requestLabel = con.addHttpRequest(req);
      
      // Return the continuation
      return con;  
    }
    
    // Callback method 
    public Object processResponse() {   
      // Get the response by using the unique label
      HttpResponse response = Continuation.getResponse(this.requestLabel);
      // Set the result variable that is displayed on the Visualforce page
      this.result = response.getBody();
      
      // Return null to re-render the original Visualforce page
      return null;
    }
}
This example shows the test class corresponding to the controller. This test class contains a test method for testing an asynchronous callout. In the test method, Test.setContinuationResponse sets a mock response, andTest.invokeContinuationMethod causes the callback method for the continuation to be executed. The test ensures that the callback method processed the mock response by verifying that the controller’s result variable is set to the expected response.

@isTest
public class ContinuationTestingForHttpRequest {
    public static testmethod void testWebService() {
        ContinuationController controller = new ContinuationController();
        // Invoke the continuation by calling the action method
        Continuation conti = (Continuation)controller.startRequest();
        
        // Verify that the continuation has the proper requests
        Map requests = conti.getRequests();
        system.assert(requests.size() == 1);
        system.assert(requests.get(controller.requestLabel) != null);
        
        // Perform mock callout 
        // (i.e. skip the callout and call the callback method)
        HttpResponse response = new HttpResponse();
        response.setBody('Mock response body');   
        // Set the fake response for the continuation     
        Test.setContinuationResponse(controller.requestLabel, response);
        // Invoke callback method
        Object result = Test.invokeContinuationMethod(controller, conti);
        // result is the return value of the callback
        System.assertEquals(null, result);
        // Verify that the controller's result variable
        //   is set to the mock response.
        System.assertEquals('Mock response body', controller.result);
    }
}

Thursday, July 14, 2016

Make Long-Running Callouts from a Visualforce Page using Continuation Class

Use asynchronous callouts to make long-running requests from a Visualforce page to an external Web service and process responses in callback methods. Asynchronous callouts that are made from a Visualforce page don’t count toward the Apex limit of 10 synchronous requests that last longer than five seconds. As a result, you can make more long-running callouts and you can integrate your Visualforce pages with complex back-end assets.
An asynchronous callout is a callout that is made from a Visualforce page for which the response is returned through a callback method. An asynchronous callout is also referred to as a continuation.



   
      
       
   

   
   

public with sharing class ContinuationController {
    // Unique label corresponding to the continuation
    public String requestLabel;
    // Result of callout
    public String result {get;set;}
    // Callout endpoint as a named credential URL 
    // or, as shown here, as the long-running service URL
    private static final String LONG_RUNNING_SERVICE_URL = 
        '';
   
   // Action method
    public Object startRequest() {
      // Create continuation with a timeout
      Continuation con = new Continuation(40);
      // Set callback method
      con.continuationMethod='processResponse';
      
      // Create callout request
      HttpRequest req = new HttpRequest();
      req.setMethod('GET');
      req.setEndpoint(LONG_RUNNING_SERVICE_URL);
      
      // Add callout request to continuation
      this.requestLabel = con.addHttpRequest(req);
      
      // Return the continuation
      return con;  
    }
    
    // Callback method 
    public Object processResponse() {   
      // Get the response by using the unique label
      HttpResponse response = Continuation.getResponse(this.requestLabel);
      // Set the result variable that is displayed on the Visualforce page
      this.result = response.getBody();
      
      // Return null to re-render the original Visualforce page
      return null;
    }
}

Friday, July 8, 2016

Read CSV file from documents and create records

Please try the below example. Create a csv file on documents and use the below code to create records.
Document doc=[SELECT Body,ContentType,Description,DeveloperName,Name FROM Document WHERE Name = 'Csv File'];
String[] columns=doc.Body.toString().split('\n');
String[] columnNames=columns[0].split(',');
columns.remove(0);
List<Sobject> lstAccounts=new List<Sobject>();
for(String str:columns)
{
	Account acc=new Account();
	String[] fields=str.split(',');
	for(Integer i=0;i<fields.size();i++)
	{
		acc.put(columnNames[i].trim(),fields[i]);
	}
	lstAccounts.add(acc);
}
if(!lstAccounts.isEmpty())
{
	insert lstAccounts[0];
}

Thursday, July 7, 2016

Salesforce Rest Api

Force.com REST API provides you with a powerful Web services API that you can use to interact with Force.com.

Each resource in REST API is a named URI that’s used with an HTTP method: HEAD, GET, POST, PATCH, or DELETE. All resources are accessed using a generic interface over HTTP with a base URI that follows your Force.com or Database.com URI. REST API supports authentication using OAuth 2.0 and supports both JSON and XML (JSON is the default).

To test the Salesforce Rest API. login to workbench. Navigate to utilities-> Rest Explorer and follow below examples to create/update/upsert/delete records. 

 Create a record:
Url:https://instance.salesforce.com/services/data/vNN.N/sobjects/sObject
Method:POST
Request Body:field-value pairs
eg:
url:https://ap1.salesforce.com/services/data/v37.0/sobjects/case
Request Body:{
"Origin": "SMS Feedback",
"Subject": "134350/Feedback",
"Description": "Payment Type: Credit Card "
}

Update a Record
Url:https://instance.salesforce.com/services/data/vNN.N/sobjects/sObject/Id 
Method:PATCH 
Request Body:field-value pairs 
eg:
url:https://ap1.salesforce.com/services/data/v37.0/sobjects/case/500260000045ffRAAQ
Request Body:{
"Origin": "SMS Feedback",
"Subject": "134350/Feedback",
"Description": "Payment Type: Credit Card "
}


Upsert a Record
Url:https://instance.salesforce.com/services/data/vNN.N/sobjects/sObject/externalIdField/value Method:PATCH 
Request Body:field-value pairs 
eg:
url:https://ap1.salesforce.com/services/data/v37.0/sobjects/case/externalfield__c/54364
Request Body:{
"Origin": "SMS Feedback",
"Subject": "134350/Feedback",
"Description": "Payment Type: Credit Card "
}
Delete a Record
https://instance.salesforce.com/services/data/vNN.N/sobjects/sObject/Id Method:DELETE 
eg:
url:https://ap1.salesforce.com/services/data/v37.0/sobjects/case/500260000045fesAAA

Salesforce Limits Class Methods

Salesforce developers often face the issue with governor limits provided by salesforce.

Below are the commonly used limits class methods in order to check the limits


System.debug('Limits.getAggregateQueries==>'+Limits.getAggregateQueries());
System.debug('Limits.getLimitAggregateQueries==>'+Limits.getLimitAggregateQueries());
System.debug('Limits.getCallouts==>'+Limits.getCallouts());
System.debug('Limits.getLimitCallouts==>'+Limits.getLimitCallouts());
System.debug('Limits.getCpuTime==>'+Limits.getCpuTime());
System.debug('Limits.getLimitCpuTime==>'+Limits.getLimitCpuTime());
System.debug('Limits.getDMLRows==>'+Limits.getDMLRows());
System.debug('Limits.getLimitDMLRows==>'+Limits.getLimitDMLRows());
System.debug('Limits.getDMLStatements==>'+Limits.getDMLStatements());
System.debug('Limits.getLimitDMLStatements==>'+Limits.getLimitDMLStatements());
System.debug('Limits.getEmailInvocations==>'+Limits.getEmailInvocations());
System.debug('Limits.getLimitEmailInvocations==>'+Limits.getLimitEmailInvocations());
System.debug('Limits.getFutureCalls==>'+Limits.getFutureCalls());
System.debug('Limits.getLimitFutureCalls==>'+Limits.getLimitFutureCalls());
System.debug('Limits.getHeapSize==>'+Limits.getHeapSize());
System.debug('Limits.getLimitHeapSize==>'+Limits.getLimitHeapSize());
System.debug('Limits.getMobilePushApexCalls==>'+Limits.getMobilePushApexCalls());
System.debug('Limits.getLimitMobilePushApexCalls==>'+Limits.getLimitMobilePushApexCalls());
System.debug('Limits.getQueries==>'+Limits.getQueries());
System.debug('Limits.getLimitQueries==>'+Limits.getLimitQueries());
System.debug('Limits.getQueryLocatorRows==>'+Limits.getQueryLocatorRows());
System.debug('Limits.getLimitQueryLocatorRows==>'+Limits.getLimitQueryLocatorRows());
System.debug('Limits.getQueryRows==>'+Limits.getQueryRows());
System.debug('Limits.getLimitQueryRows==>'+Limits.getLimitQueryRows());
System.debug('Limits.getQueueableJobs==>'+Limits.getQueueableJobs());
System.debug('Limits.getLimitQueueableJobs==>'+Limits.getLimitQueueableJobs());
System.debug('Limits.getSoslQueries==>'+Limits.getSoslQueries());
System.debug('Limits.getLimitSoslQueries==>'+Limits.getLimitSoslQueries());

Salesforce Collection Types

In Salesforce we have 3 collection types

  • List
  • Map
  • Set
  • Ordered collection of typed primitives, sObjects, objects, or collections that are distinguished by their indices
// Create an empty list of String
List<String> myList = new List<String>();
myList.add('hi');
String x = myList.get(0);

// Create list of records from a query
List<Account> accs =[SELECT Id, Name FROM Account LIMIT 1000];
  • Collection of keyvalue pairs where each unique key maps to a single value. A key can be any primitive data type except Blob and Object, while a value can be a primitive, an sObject, a collection type, or an object.
Map<String,String> MyStrings =new Map<String,String>{'a' => 'b', 'c' =>'d'.toUpperCase()};
Account myAcct = new Account();
Map<Integer, Account> m =new Map<Integer,Account>();
m.put(1, myAcct);
Set
  • Unordered collection that doesn’t contain any duplicate elements.
Set<Integer> s = new Set<Integer>();
s.add(12);
s.add(12);
System.assert(s.size()==1);

Salesforce Trigger Context Variables

Variable

 Operators

isExecuting

 Returns true if the current context for the Apex code is a trigger only

isInsert

 Returns true if this trigger was fired due to an insert operation

isUpdate

 Returns true if this trigger was fired due to an update operation

isDelete

 Returns true if this trigger was fired due to a delete operation

isBefore

 Returns true if this trigger was fired before any record was saved

isAfter

 Returns true if this trigger was fired after all records were saved

isUndelete

 Returns true if this trigger was fired after a record was recovered from the Recycle Bin

new

 Returns a list of the new versions of the sObject records.(This sObject list is available only in insert and update triggers. The included records can be modified only in before triggers.)

newMap

 A map of IDs to the new versions of the sObject records. (Only available in before update, after insert, and after update triggers.)

old

 Returns a list of the old versions of the sObject records. (Only available in update and delete triggers.)

oldMap

 A map of IDs to the old versions of the sObject records. (Only available in update and delete triggers.)

size

 The total number of records in a trigger invocation, both old and new.

 

Salesforce annotations

  • Denotes methods that are executed asynchronously.
global class MyFutureClass {
 @future
 static void myMethod(String a, Integer i) {
  System.debug('Method called with: ' + a +' and ' + i);
  // do callout, or execute
  // other long-running code
 }
}
@isTest
  • Denotes classes that only contain code used for testing your application. These classes don’t count against the total amount of Apex used by your organization.
@isTest
private class MyTest {
 // Methods for testing
}
@isTest(OnInstall=true)
  • Denotes a test class or test method that executes on package installation
@isTest(OnInstall=true)
private class TestClass {
}

@isTest(SeeAllData=true)
  • Denotes a test class or test method that has access to all data in the organization, including pre-existing data that the test didn't create. The default is false
@isTest(SeeAllData=true)
private class TestClass {
}
@deprecated
  • Denotes methods, classes, exceptions, enums, interfaces, or variables that can no longer be referenced in subsequent releases of the managed package in which they reside
@deprecated
public void limitedShelfLife() {
}
@readOnly
  • Denotes methods that can perform queries unrestricted by the number of returned rows limit for a request
@readOnly
private void doQuery() {
}
@remoteAction
  • Denotes Apex controller methods that JavaScript code can call from a Visualforce page via JavaScript remoting. The method must be static and either public or global.
@remoteAction
global static String getId(String s) {
}
@restResource
  • Denotes a class that is available as a REST resource. The class must be global. The urlMapping parameter is your resource's name and is relative to https:// instance. salesforce. com/services/ apexrest/.
@restResource(urlMapping='/Widget/*')
global with sharing class MyResource() {
}
@httpGet,
@httpPost,
@httpPatch,
@httpPut,
@httpDelete
  • Denotes a REST method in a class annotated with @restResource that the runtime invokes when a client sends an HTTPGET, POST, PATCH, PUT, orDELETE respectively. The methods defined with any of these annotations must be global and static.
@httpGet
global static MyWidget__c doGet()
{
}
@httpPost
global static void doPost() {
}
@httpDelete
global static void doDelete() {
}



Thursday, June 2, 2016

TLS 1.0 has been disabled in this organization. Please use TLS 1.1 or higher when connecting to Salesforce using https

Hi,

To help customers test and prepare for the TLS 1.0 deprecation , Salesforce has provided customers with the Critical Update feature Require TLS 1.1 or higher for HTTPS.

The following steps can be followed to disable this feature:
- Navigate to Setup
- In the Quick Find bar, type in Critical Updates
- Select Critical Updates
- Locate the Require TLS 1.1 or higher for HTTPS connections​ under the Update Name column
- Click on Deactivate.






Monday, May 30, 2016

Salesforce Triggers and Order of Execution

When you save a record with an insert, update, or upsert statement, Salesforce performs the following events in order.

Note:
Before Salesforce executes these events on the server, the browser runs JavaScript validation if the record contains any dependent picklist fields. The validation limits each dependent picklist field to its available values. No other validation occurs on the client side.

On the server, Salesforce:
1 Loads the original record from the database or initializes the record for an upsert statement.
2 Loads the new record field values from the request and overwrites the old values.
If the request came from a standard UI edit page, Salesforce runs system validation to check the record for:
Compliance with layout-specific rules
Required values at the layout level and field-definition level
Valid field formats
Maximum field length
When the request comes from other sources, such as an Apex application or a SOAP API call, Salesforce validates only the foreign keys. Prior to executing a trigger, Salesforce verifies that any custom foreign keys do not refer to the object itself.
Salesforce runs user-defined validation rules if multiline items were created, such as quote line items and opportunity line items.

3 Executes all before triggers.
4 Runs most system validation steps again, such as verifying that all required fields have a non-null value, and runs any user-defined validation rules. The only system validation that Salesforce doesn't run a second time (when the request comes from a standard UI edit page) is the enforcement of layout-specific rules.
5 Executes duplicate rules. If the duplicate rule identifies the record as a duplicate and uses the block action, the record is not saved and no further steps, such as after triggers and workflow rules, are taken.
6 Saves the record to the database, but doesn't commit yet.
7 Executes all after triggers.
8 Executes assignment rules.
9 Executes auto-response rules.
10 Executes workflow rules.
11 If there are workflow field updates, updates the record again.
12 If the record was updated with workflow field updates, fires before update triggers and after update triggers one more time (and only one more time), in addition to standard validations. Custom validation rules, duplicate rules, and escalation rules are not run again.
13 Executes processes.
If there are workflow flow triggers, executes the flows.

The Process Builder has superseded flow trigger workflow actions, formerly available in a pilot program. Organizations that are using flow trigger workflow actions can continue to create and edit them, but flow trigger workflow actions aren’t available for new organizations.

14 Executes escalation rules.
15 Executes entitlement rules.
16 If the record contains a roll-up summary field or is part of a cross-object workflow, performs calculations and updates the roll-up summary field in the parent record. Parent record goes through save procedure.
17 If the parent record is updated, and a grandparent record contains a roll-up summary field or is part of a cross-object workflow, performs calculations and updates the roll-up summary field in the grandparent record. Grandparent record goes through save procedure.
18 Executes Criteria Based Sharing evaluation.
19 Commits all DML operations to the database.
20 Executes post-commit logic, such as sending email.

Please go through the below link for more information
https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_triggers_order_of_execution.htm

Friday, January 29, 2016

Dynamically Select Objects and Import csv files in visualforce

Hi,

We can create records from visual force page from csv file. Please check the below code
You can dynamically select the object from the dropdown and upload the file. the headers should be salesforce api field names in the csv file which you are trying to load. As there is a limitation on Visualforce view state. So please load the data using dataloader if the file has more records.

Visualforce page:


   
      
      
            
                
                    
                    
                        
                    
                
            
             
{!acc[hvalues]}
Apex Class:
public class DynamicFileUploader
{
    public string nameFile{get;set;}
    public Blob contentFile{get;set;}
    public String selectedObject {get; set;}
    String[] filelines = new String[]{};
    public List<String> headervalues {get;set;}
    List<Sobject> recordstoupload;

    //get Object Name //
    public List<SelectOption> getObjectNames(){
        List<Schema.SObjectType> gd = Schema.getGlobalDescribe().Values();     
        List<SelectOption> objNames = new List<SelectOption>();
        objNames.add(new SelectOption('','-- Select --'));
        for(Schema.SObjectType f : gd)
        {
           objNames.add(new SelectOption(f.getDescribe().getName(),f.getDescribe().getLabel()));
        }
        objNames.sort();
        return objNames;
    }
    
    public Pagereference ReadFile()
    {
        try{
                System.debug('\n Selected Object'+selectedObject);
                if(selectedObject == null)
                {
                    ApexPages.Message errormsg = new ApexPages.Message(ApexPages.severity.ERROR,'Object Should be selected');
                    ApexPages.addMessage(errormsg);
                    return null;
                }
                //Convert the uploaded file which is in BLOB format into a string
                nameFile =blobToString( contentFile,'ISO-8859-1');
                
                //Now sepatate every row of the excel file
                filelines = nameFile.split('\n');
                Map<String,Schema.SObjectType> gd = Schema.getGlobalDescribe();
                Schema.SObjectType objecttypeinfo=gd.get(selectedObject);
                
                //Iterate through every line and create a Account record for each row
                recordstoupload= new List<Sobject>();
                headerValues =new List<String>();
                headerValues = filelines[0].trim().split(',');
                for (Integer i=1;i<filelines.size();i++)
                {
                    String[] inputvalues = new String[]{};
                    inputvalues = filelines[i].split(',');
                    sObject sObj = Schema.getGlobalDescribe().get(selectedObject).newSObject() ;  
                    for(Integer j=0;j<headerValues.size();j++){
                        sObj.put(headerValues[j],inputvalues[j]) ;  
                    }
                    recordstoupload.add(sObj);
                }
         }
         catch(Exception e){
                 ApexPages.Message errormsg = new ApexPages.Message(ApexPages.severity.ERROR,'An error has occured reading the CSV file'+e.getMessage());
                ApexPages.addMessage(errormsg);
         }       
        //Finally, insert the collected records
        try{
            insert recordstoupload;
        }
        catch (Exception e)
        {
            ApexPages.Message errormsg = new ApexPages.Message(ApexPages.severity.ERROR,'An error has occured inserting the records'+e.getMessage());
            ApexPages.addMessage(errormsg);
        }    
        return null;
    }
   
    public List<Sobject> getuploadedAccounts()
    {
        if (recordstoupload!= NULL)
            if (recordstoupload.size() > 0)
                return recordstoupload;
            else
                return null;                    
        else
            return null;
    }  

    public static String blobToString(Blob input, String inCharset){
        String hex = EncodingUtil.convertToHex(input);
        System.assertEquals(0, hex.length() & 1);
        final Integer bytesCount = hex.length() >> 1;
        String[] bytes = new String[bytesCount];
        for(Integer i = 0; i < bytesCount; ++i)
            bytes[i] =  hex.mid(i << 1, 2);
        return EncodingUtil.urlDecode('%' + String.join(bytes, '%'), inCharset);
    }         
}

Labels

visualforce page ( 13 ) apex integration ( 5 ) apex trigger ( 4 ) csv file from vf page ( 4 ) javascript ( 4 ) csv visualforce page ( 3 ) Too many ( 2 ) call out ( 2 ) integration ( 2 ) rest api ( 2 ) salesforce rest api ( 2 ) salesforce to salesforce integration ( 2 ) sfdc rest api ( 2 ) trigger ( 2 ) 15 digit to 18 digit ( 1 ) DML rows in Apex ( 1 ) Date Conversion ( 1 ) Date/Time conversion ( 1 ) Deploy ( 1 ) Objects to Future Annotated Methods ( 1 ) SFDC limits ( 1 ) Sobject to Future Annotated Methods ( 1 ) Test Class ( 1 ) TimeZone Conversion ( 1 ) Too many dml rows ( 1 ) Too many future calls ( 1 ) annotations ( 1 ) apex code ( 1 ) closed opportunities ( 1 ) commit ( 1 ) convert ( 1 ) create records ( 1 ) csv create records ( 1 ) custom setting ( 1 ) deployment ( 1 ) deployment changeset ( 1 ) disable apex class ( 1 ) disable apex trigger ( 1 ) disable in production ( 1 ) document ( 1 ) download ( 1 ) field name ( 1 ) formula fields ( 1 ) iframe ( 1 ) inactive ( 1 ) intellisense ( 1 ) jsforce ( 1 ) limits ( 1 ) matrix report in vf page ( 1 ) multi select ( 1 ) multi select salesforce ( 1 ) multiselect ( 1 ) paypal ( 1 ) picklist ( 1 ) record type ( 1 ) rollback ( 1 ) salesforce limits ( 1 ) salesforce list ( 1 ) salesforce map ( 1 ) salesforce rest ( 1 ) salesforce set ( 1 ) salesforce1 ( 1 ) sandbox deployment ( 1 ) sfdc collection ( 1 ) sfdc list ( 1 ) sfdc map ( 1 ) sfdc rest ( 1 ) sfdc set ( 1 ) uncommitted ( 1 ) updated field ( 1 ) user ( 1 ) validation rule opportunity ( 1 ) validation rules opportunities ( 1 ) vf page ( 1 )

Ad