Interview
Interview
Private: only owner and above hierarchy users can have Read/Write access and below hierarchy users don't have any
access.
Public Read only: only owner and above hierarchy users can have Read/Write access and below hierarchy users can
have only Read Only.
Public Read/Write: Irrespective of role hierarchy every one can have Read/Write permissions on the records.
11. What is Grant Access Using Hierarchies?
Say there are three roles
• Role A
• Role B
• Role C
Role A is higher in hierarchy, Role B is in middle and Role C is lower in hierarchy
If the Role A user through Manual Sharing or Sharing Rules, shares the record to Role C user who is in lower hierarchy,
then the Role B user who is above in hierarchy to Role C user can see the records, if we enable Grant Access Using
Hierarchies at sharing settings else Role B user cannot see the record.
4. if i m going to be create trigger on contact record and whenever is having email it should update
account email? what u will used?
5. whenevr contact is inserterd or updated there is one check box email is having check box its
true and if not its false?
what functionality u will used? what event u will used before update or after update? why ur
going to used it?
6. opproutinity and oppoyrtuinty line item , whenevr i insert opprouytunity line item is having
price not equal to zero
or something else u have to prepare discount with 10% and oppourtunity also having the same
amount?how u will achieve this using
trigger?which fielld u will update in which event?
7. what is dirffrence between after event and before event? what we can do in before insert that
we cant do in after insert?
8. if i m inserting one record what i can do in before insert and what i can’t do in after insert?
10. i want to populate custom filed on same record using trigger what event u will used before or
after? why?
11. i have one visualforce page and there is one controller and two extensions ex1 and ex2 and a
method which is calling from vf page i.e. methodcall() ,
methodcall() is available in controller, ex1 and ex2 [Link] method will call on vf page?
12. we have vf page with binding of list of objects so how many records we can show vf page with
list object ?how many records we can iteatre? and if i want to iterate
15. what will be the best for field update, trigger or workflow? workflow will support bulkificaion
or not?
18. we have trigger we are calling class method , class is having with sharing, whenever record is
craeted bt it is not having permission to related child record so it
21. suppose i have list in that 200 records and 10 records are going to failed so if i want to insert
remianing record what u will used?
23. we have one profile and persmission set, with persmission we grant some persmission,now
clients want to
24. there is one custom object abc , abc having validation rule ;like male should not be null, then
trigger that also having validation rule female
should not be null,then there is workflow ie updating field workflow also sented the email?so
when workflow will email sent? trigger will get execute it or not?
25. i m having two validation rule standard and custom whhich will execute first?
Cloudcertitude:----
[Link] me about ur self
[Link] projects
[Link] in projects
[Link] id internal id
[Link] is trigger
[Link] variable
[Link] set
[Link] is workflow
Absyz:----
[Link] projects
[Link] in projects
[Link]
[Link] i want to make field mandetory so how can i do this n what are diferent ways
[Link] setting
[Link] state
[Link] is trigger
[Link] of execution
[Link]
[Link] ur self
[Link]
[Link] salesperson who reports to sales manager so in dis situation can sales manager share
[Link] sharing rule.
[Link] object-level permissions conflict with record-level permissions, then what will happen
14.i hv workflow use 2nd evolution if record name start with P then it ll send mail or [Link]
what will hapen if name start with T then what [Link] i agin change it to P than mail will send or
not. Why in 2nd criteria we can not create time dependent [Link] i want to send in future so
what can i do.
deloitt:---
[Link] urself
[Link] between lookup and master [Link] me scenario whe i should go for master or lookup
n why
[Link] for makeing field [Link] are the ways make field madetory
[Link] writing workflow rule what are evolution [Link] i go for which perticulor criteria.
[Link] is two field first is pick list field on the basis of value of picklist i want to update one field is it
possible.
[Link] is two object account and opportunity if i crete record on account on that basis i want to
crate opportunity record is it possible.
9.I have not given any CRUD permission in the profile 'P1' for an object O1, yet I'm able to create
records for object 'O1'. How could this be possible
10.I have two un related objects Obj1 and Obj2. Now I want to create a Master Detail relation
between these objects how do I do this?
[Link] there are pre existing records in the Obj2 then With the above understanding on Master Detail
relation we have to be sure that every record in Obj2 has a related record in Obj1. And in our
scenario Obj1 and Obj2 are not related to each other. So first we have to create a basic Look up
relation between these two objects so that we can establish a relation between these two objects
12.i have picklist field which used in 3 differnt objects how can i do this.
[Link] user perform updation then i want to post chatter how can we do this
[Link] is two object account and opportunity if i crete record on account on that basis i want to
crate opportunity record how can we do this using trigger
[Link] of execution
16.i have field proficiency which show images if proficiency excellent than show green image if
proficiency is bad then show red image how can i do this using point click functionality
17.i have vf page on which display time i want to refresh that portion after each 10 second how can i
do this
18.i have vf page i have form if user enter wrong data i want to display error msg if all values are
appropriate the save record into the database
19.i have vf page which i want to sent as mail when workflow aries so how can i do this
[Link] have standard page called opportunity i want to override it with custom functionality how can
i do this
21.i want to create vf page i want input box in which i want to enter name after click on search
button the records having that name should be visible to [Link] i enter vipeen then show me the
record whos name is vipeen
23.i want run test for particular user how can i do this.
[Link] is batch.
27.i have batch which update for particular time what are detail step to perform if
Technomile-
[Link]
[Link] experience
[Link]
9. Can we perform dml in [Link] have requirement like that so what we can do.
[Link] we perform dml operation on [Link] we perform dml operation on [Link] we perform dml
operation on map.
[Link] limit
[Link] i need to write test class for future method ,how u achieve this
[Link] is [Link] is data [Link] how integration and data migration is different from
each other.
Example- A query like- [select id, name from Account limit 10 OFFSET 10]
Ans- Yes , we can convert lookup to master but When we are converting lookup in to master then any
of the lookup fields should not be blank, if there will be blank then populate values in lookup fields
then covert.
Ans- Use SaveResult class like [Link][] srLst=d [Link](lstData, false); and
there is isSuccess() method which finds the successfully record inserted and getError() method used
to get error from the failure record and by using getId() method we can get failure records Id in class.
Ans- The difference between Profile and Permission Sets is Profiles are used to restrict from
something where Permission Set allows user to get extra permissions.
Now Suppose you want give some extra permission to one of user. You have two options here.
a) To change Profile permissions : By this way those extra permissions will received by every user
who is having that profile
b) Second way is to create a permission set having those extra permission. You need to assign this
permission set to particular user by navigating to User detail page. In this way, you dont have to
worry about other users, as only specific user is getting those extra permissions.
8. If profile has read access and we create permission set with read/write access then what will
happen?
Ans- Then profile will have both read and write access.
9. If profile has read/write and permission set has read access then what will happen?
Ans- Then profile will have both read and write access. We cannot decrease permission onprofile but
we can increase permissions using permission set.
10. If account has related list Address and there is checkbox name primary, then record insert in
Address then each account has only one address with checkbox true if records exist already in
address with checkbox true then make them false.
12. Why we use future method and provide scenario where you have used future method?
Ans- NO
19. If we have list of integer type and there is 20 items and want to display list in table on page and I
want to display 5 data then 5 and then 4 so on, how you will display?
20. If we have 10 data and inserting 10 data and 3 insert successfully and failed at 4 then what will
happen when using [Link]() .
Ans- It will insert success records and not insert error records.
Ans- Yes
Ans- Cross Object Email Template is not Possible in salesforce at this point in time Only Possible way
to access and Display child record details in email template of parent is to use Visualforce Email
Templates.
23. If there is one object and we create two lookup field related to User object. And we have 3 users
like A, B, C of same roles and same profile. If we have assigned two users in two lookup like A and
B then only these two user can edit that object record C user cannot be able to edit the record.
How will you achieve this?
Ans- HAVING is a clause that can be used in a SOQL query to filter results that aggregate functions
return. You can use HAVING clause with GROUP By clause to filter the results returned by aggregate
function,such as SUM(). HAVING clause similar to WHERE clause. The difference is that you can
include in aggregate functions in a HAVING Clause , but not in WHERE Clause.
[Select Id, name from Lead] → It will return Lead record with Id and Name.
[Select Id, Name from Lead GROUP BY name] then it will through error like Field must be grouped or
aggregated: Id
[Select id, count(name) from Lead GROUP BY name ]-- then it will also through error , you cannot use
same field name used in count i.e-- select id, count(name) from Lead GROUP BY name ^ ERROR at
Row:1:Column:18 Grouped field should not be aggregated: Name
[SELECT LeadSource, count(Name) FROM Lead GROUP BY LeadSource]-- Now it will return record
With LeadSource and count total name field correspond to particular LeadSource.
Ans- List<List<SObject>>
Ans- AggregateResult[]
But using Soft Delete you can restore those datas lated within 15days from recycle bin.
Ans- "with sharing" keyword in apex class so that it will enforce only sharing rules of current user but
not, object permissions, field level permissions
But “without sharing” will not enforce only sharing rules of current user . does it mean it will enforce
current user object and field level permissions.
Created In this option, the rule never runs more than once per record.
Evaluate the rule criteria each time a record is created or updated. If the
rule criteria is met, run the rule.
In this option, the rule repeatedly runs every time a record is edited, as
long as the record meets the rule criteria.
created, and every time Note: We cannot add time-dependent actions to the rule if you select
it’s edited this option.
2. We have two team service team and sales team, and we have 15 fields in Account
object and want to show 10 fields to service team and 5 fields to sales team,
how will you do this?
2. I want to delete child when I delete parent object records in lookup relationship, because we
have already too many master-detail in object and not able to create master-detail, so how will
you do this task?
3. We have table with two rows with two columns, and data in table as-
Rows : Arun 10
Aman 12
Write query to count of total number of 12th class student.
4. How to write rollup summary for lookup and how to update roll up summary using lookup.
11. What is OWD? If for any object OWD is private so what will happen?
12. What is the default OWD of tasks and events?
Ans:- In [Link], for Activity objects (Task & Event), there are only 2 option in the Organization-Wide
Defaults sharing setting:
- Controlled by Parent
- Private
Private
Only activity owner (label as Assigned To), and users above the activity owner in the role hierarchy can edit
and delete the activity.
Users with read access to the record to which the activity is associated (Name and Related To) can view and
report on the activity.
Controlled by Parent
A user can perform an action (such as view, edit, transfer, and delete) on an activity based on whether he or
she can perform that same action on the records associated with the activity.
Example, if a task is associated with the Acme account and John Smith contact, then a user can only edit that
task if he or she can also edit the Acme account and the John Smith record.
15. What is future method? What are the restriction of the future method? Can we call future
method from batch class?
17. Assume there is user lookup in Account, if any user create account record then that user Id
should populate in lookup, how will you do this task?
Ans-
There are two types of triggers:
Before triggers are used to update or validate record values before they’re saved to the database.
After triggers are used to access field values that are set by the system (such as a record's Id or
LastModifiedDate field).
Trigger Events:
Before Insert, Before Update, Before Delete, After Insert, After Update, After Delete and
after undelete
22. What is workflow and time dependent workflow? Write will send mail after 15 mins?
23. Create visual force page1 with 3 rows data like Here no data from database, just you
create your own field
Column: Name Checkbox
Row 1: Arun True
Row 2: B False
Row 3: C True
Now we have showData button, then on click on button data which has checkbox
True should display on another visual force page.
6 comments:
1.
Replies
1.
2.
Hi Arun,
Replies
1.
Hi , I have posted questions here .. some are left so I will provide rest.
Reply
3.
1) If we have list of integer type and there is 20 items and want to display list in table
on page and I want to display 5 data then 5 and then 4 so on, how you will display?
2) If account has related list Address and there is checkbox name primary, then
record insert in Address then each account has only one address with checkbox true
if records exist already in address with checkbox true then make them false.
3) If there is one object and we create two lookup field related to User object. And we
have 3 users like A, B, C of same roles and same profile. If we have assigned two
users in two lookup like A and B then only these two user can edit that object record
C user cannot be able to edit the record. How will you achieve this?
4) Can we show error message using future method? How?
5) We have two team service team and sales team, and we have 15 fields in Account
object and want to show 10 fields to service team and 5 fields to sales team, how will
you do this?
6) Define all sharing rules?
7) What is Re-evaluate checkbox in workflow?
8) What is trigger framework?
9) What is process builder? Can we use apex class in process builder?
10) Can we call future method in batch class?
11) How to write rollup summary for lookup and how to update roll up summary using
lookup.
12) Write down Roll Up summary trigger.
13) What are the AJAX functions in salesforce?
14) Difference between render, rerender, render as.
15) Difference between save report and run report?
16) What are the buckets and formula fields in reports?
17) What is future method? What are the restriction of the future method? Can we call
future method from batch class?
18) Write query to get child from parent.
19) Assume there is user lookup in Account, if any user create account record then
that user Id should populate in lookup, how will you do this task?
20) Can we update record on account on ‘After insert’ trigger event?
21) What is forecasting in Salesforce?
22) What is territorial management?
23) What are the types of trigger and events?
1. Is it possible to write a validation rule which will fire only on insert of record
not on update of record ?
Answer: Use isnew() function which checks if the formula is running during the
creation of a new record and returns TRUE if it is. If an existing record is being
updated, this function returns FALSE.
Answer: No, only in insert and update events you can write validation rule.
4. Difference between formula field and rollup summary in Salesforce ?
Answer: Rollup Summary field is used to calculate the sum of a fields in the child
object record. It is compulsory to be in a Master-Detail relationship to use the
rollup summary. A rollup summary field is always created on Master record.
(Parent to Child).
For example. You have an Account and multiple Contacts under that Account.
Each of the Contact have a number field on it say Contacted People. Now on the
Account you can create a Rollup summary to check the Number of Contacted
People via all your contacts.
Where else a formula field is mostly used for calculations within a certain object.
And it is child to Parent.
Answer: Yes there are some standard objects which acts as a junction object.
Answer:
Answer: Go to data loader -> setting -> check Is null values checkbox.
Answer: 200
Using this annotation, you don not have to change the access modifiers of your
methods and member variables to public if you want to access them in a test
method.
Answer:
Workflow:
Trigger:
Answer: If your organisation fiscal year follows the Gregorian calendar, but does
not start in January, you can simply and easily set your fiscal year by defining a
standard fiscal year with a different starting month. If your fiscal year follows a
different structure from the Gregorian calendar, you can define a custom fiscal
year that meets your needs.
Whether you use a standard fiscal year or a custom fiscal year, you define
individual fiscal years one time. These fiscal year definitions allow you to use
these fiscal periods throughout Salesforce including in reporting, opportunities,
and forecasting.
Salesforce allows two types:
–Standard Fiscal Years are periods that follow the Gregorian calendar, but can
start on the first day of any month of the year. (A Gregorian Year is a calendar
based on a 12 Month Structure and is used throughout much of the world.)
–Custom Fiscal Years are for companies that break down their fiscal years,
quarters and weeks in to custom fiscal periods based on their financial planning
requirements.
Note: After you enable custom fiscal years, you cannot disable the feature.
However, if you need to revert to standard fiscal years, you can define custom
fiscal years that follow the same Gregorian calendar structure as the Salesforce
standard fiscal years.
Answer:
In simple words, Profile defines what user can do in your salesforce org and Role
defines what user can see.
13. Will data be lost in a custom field if data type is changed to number from any
other data type?
Answer: Yes
Changing the data type of an existing custom field can cause data loss in the
following situations:
14. There is one field which is used in Lead conversion and I want to convert its
data type, is this possible?
Answer: No, You can not change the data type of any custom field that is
mapped for lead conversion.
15. Can we convert formula field into any other data type ?
Answer: No, Formula fields are special read-only fields that cannot be converted
to any other data type. Likewise, you cannot convert any other field type into a
formula field.
Answer: In simple words, Web-to-Lead is Generate Leads from Your Website for
Your Sales Teams. This feature create or generate upto 500 leads per day with
prospecting data from your company’s website visitors.
Salesforce runs field validation rules before creating records submitted via Web-
to-Lead and only creates records that have valid values.
Gather customer support requests directly from your company’s website and
automatically generate up to 5,000 new cases a day with Web-to-Case. This can
help your organisation respond to customers faster, improving your support
team’s productivity.
Use a simple web form or a self-service customer community to make it easy for
customers to submit cases directly to your customer support group.
18. What are the Types of Sharing Rules in Salesforce and explain it?
Answer:
– Set default sharing access for accounts and their associated cases,
contacts, contracts, and opportunities
– Set default sharing access for individual contacts and their associated
accounts
– Set default sharing access for individual cases and associated accounts
Answer: {!$ObjectType.MyCustomObject__c.accessible}
21. What are the different AJAX action tags? What does each do?
Answer:
actionRegion: used to demarcate which parts of the page the server should
reprocess.
Answer:
Answer: 135 KB
Answer: NO
25. I want to count how many times execute method executed in Batch class ?
Answer: For COUNT(), the query result size field returns the number of rows. The
records field returns null.
COUNT(fieldName) returns the number of rows that match the filtering conditions
and have a non-null value for fieldName.
28. What are the Best Practises for Improving Visualforce Performance ?
Answer:
1) The view state size of your Visualforce pages must be under 135 KB. By
reducing your view state size, your pages can load quicker and stall less often.
2) Large page sizes directly affects load times. To improve Visualforce page load
times:
4) By using the with sharing keyword when creating your Apex controllers, you
have the possibility of improving your SOQL queries by only viewing a data
set for a single user.
Answer:
Answer:
35. How can you expose a apex class as web service? and how to obtain a wsdl
file for exposed class?
Answer - In order to expose a class as a webservice we have to use keyword
'webservice' with the method also the method should be global and also the
class should be defined global. ex-
Global class DemoWebServiceClass{
global webservices void myWebServiceMethod(){
}
}
A wsdl file for a apex class can be obtained by using the button generate wsdl on
class.
See more: 7 Easy Steps to Generate Apex Class From WSDL In Salesforce
REST API :
This api is used for accessing objects in organization through REST. Data format
used is JSON, XML and communicates Synchronously. We can use this whenever
we want to leverage the REST architecture to integrate with the salesforce
environment. There is No WSDL required while using REST API. This is well-suited
for browser based applications, mobile appslication, and social apps they are
more interactive. It is uses REST protocol.
BULK API :
The Bulk API provides a programmatic option to quickly load your org’s data into
Salesforce. Bulk API is based on REST principles and is optimized for loading or
deleting large sets of data. You can use it to query, queryAll, insert, update,
upsert, or delete many records asynchronously by submitting batches.
Salesforce processes batches in the background.
SOAP API :
SOAP API provides a powerful, convenient, and simple SOAP-based web services
interface for interacting with Salesforce. Protocol used is SOAP/WSDL, format is
XML and communicates Synchronously. You can use SOAP API to create, retrieve,
update, or delete records. You can also use SOAP API to perform searches and
much more. Use SOAP API in any language that supports web services.
METADATA API :
Metadata API is intended for managing customizations and for building tools that
can manage the metadata model, not the data itself. Here the SOAP API is
oriented around accessing data and manipulating records, the Metadata API’s
focuses on metadata. It gives you an API to manipulate layouts, classes,
visualforce pages, Apex triggers. Protocol used is SOAP/WSDL. Format used is
XML and communicates Asynchronously.
Tooling API :
This is used when one wants to manage and deploy working copies of Apex
classes or triggers or Visualforce pages or other components.
Streaming API :
Use Streaming API to receive notifications for changes to Salesforce data that
match a SOQL query you define, in a secure and scalable way. This enables one
to reduce the number of API calls and improve performance.
And , You have other workflow rules also if you enable Re-evaluate Workflow
Rules after Field Change checkbox in the Field Update recursive workflow rules
will come in some scenarios.
For the workflow Evaluation Criteria if you choose created, and any time
it’s edited to subsequently meet criteria option, we can avoid recursive workflow
rules.
If you don't enable Re-evaluate Workflow Rules after Field Change
checkbox in the Field Update of a workflow rule we can avoid.
40. What is the difference between [Link] and insert?
Answer :
Important Difference:
If we use the DML statement (insert), then in bulk operation if error occurs, the
execution will stop and Apex code throws an error which can be handled in try
catch block.
If DML database methods ([Link]) used, then if error occurs the
remaining records will be inserted / updated means partial DML operation will be
done.
41. What is the difference between 15 digit and 18 digit IDs in Salesforce?
Answer:
15 digit ID in [Link] is case sensitive and 18 Digit Id is case-insensitive.
Many applications does not support case sensitive strings, so in that case we can
make use of 18 digit Id which is case in-sensitive.
15 digit Id number will have numeric digits range from (0-9), a Lowercase
letter(a-z) or a Uppercase letters(A-Z). 15 digit ID in [Link] is case
sensitive. Example 999999999999ABC is different from 999999999999abc.
When using external productive tools like Microsoft Excel, MS Access and SQL
Server external ID’s are not case sensitive and they don’t recognize the
difference between 999999999999ABC and 999999999999abc.
44. What is the maximum size of the PDF generated on visualforce attribute
renderAs ?
Answer : 15 MB
47. When Group By is used, How to write or use the Where clause in SOQL ?
Answer :
We cannot use the Where clause with Group By instead we will need to use
the Having Clause.
48. If user does not have any right on particular record and have only read level
access at object level. Can he change the record owner?
Answer :
Yes. In profile, there is setting for Transfer Record.
50. Can you use Group by clause inside inner query in SOQL? like SELECT Id,
Name,(SELECT Count(Id),Name FROM Contacts Group By Name Having Count(Id)
>1)
Answer :
No. Only root queries support aggregate expressions. Return type is
List<AggregateResult> for above query However the root result expects
List<Account> and there is no syntax or provision available in Salesforce to
specify that child results are of type AggregateResult.
52. How to get all records even from recycle bin or Achieved Activities using
SOQL query?
Answer : We will need ALL Rows clause of SOQL.
Example :
SELECT COUNT() FROM Opportunity WHERE AccountId = [Link] ALL ROWS
53. How can you lock record using SOQL so that it cannot be modified by other
user.
Answer : We will need FOR UPDATE clause of SOQL.
Example :
SELECT Id FROM Contact LIMIT 2 FOR UPDATE
54. In trigger, lets say you have [Link]() statement after adderror()
method. Will [Link]() be statement executed in Trigger after adderror()
method?
Answer: adderror() method is not error statement rather its normal execution
flow and all the statements written after adderror() will be executed normally.
56. What will happen if you try to update record in After Trigger Context?
Answer : You will get an error saying record is Read only.
Answer : If a workflow have any pending time dependent action, then we cannot
delete the workflow.
Answer : Send Email action is not available while creating workflow on task
object.
63. Why I am not able to find list of Person Account fields in Field Level Security
(FLS) settings when navigated to fields on Account Object.
Answer :
Field Level Security (FLS) of Person Account fields are controlled by Contact
Fields. So, if you want to setup FLS of Person Account Fields navigate to fields of
Contact and it will be reflected on Person Account.
Determines the best index from which to drive the query, if possible,
based on filters in the query
Determines the best table to drive the query from if no good index is
available
Determines how to order the remaining tables to minimize cost
Injects custom foreign key value tables as needed to create efficient join
paths
Influences the execution plan for the remaining joins, including sharing
joins, to minimize database input/output (I/O)
Updates statistics
68. How to capture errors after using Database DML methods in Salesforce?
Answer :
List<Contact> lstContact = new List<Contact>();
Contact con = new Contact (lastName = 'Talekar',
SQL_Server_Id__c='3',firstName='Nitish');
[Link](con);
// add some other contacts records in contact List
[Link][] results = [Link]( lstContact,
Contact.SQL_Server_Id__c.getDescribe().getSObjectField() ,false ) ;
for(Integer i=0;i<[Link]();i++){
if (.isSuccess()){
[Link] err = [Link](i).getErrors().get(0);
[Link]('Error - '+[Link]() + '\nStatus Code :
'+[Link]()+'\n Fields : '+[Link]());
}
}
RecordTypeId
Division
CreatedDate
Systemmodstamp (LastModifiedDate)
Name
Email (for contacts and leads)
Foreign key relationships (lookups and master-detail)
The unique Salesforce record ID, which is the primary key for each object.
multi-select picklist
text area (long)
text area (rich)
non-deterministic formula fields (Like any formula field using function
NOW() or Today() )
encrypted text fields.
71. What is best practice to refer dynamic custom messages in Visualforce with
multi-language support ?
Answer :
Using Custom Label or OutputField or InputField tag, Platform itself will take care
of internationalization. However in some cases, Message needs to be dynamic at
the same time it should also support muti-language. In Custom Label, we cannot
save dynamic String.
Let’s assume we want to show message something like “DEVELOPERNAME is not
authorized to access this page”.
Here, Developername should be dynamically changed in visualforce which
supports multilanguage. For each developername, it is not feasible to create
custom labels. So below workaround can be used :
Step 1 : Create a Custom Label with text {0} is not authorized to access
this page. In every language, dynamic value should represented by {0}.
Chatter API is REST API for Chatter to display Salesforce data, especially in
mobile applications. Responses are localized, structured for presentation, and
can be filtered to contain only what the app needs.
Connect API provides apex classes for accessing the same data available in
Chatter REST API. Use Chatter in Apex to create custom Chatter experiences in
Salesforce.
74. What the Concurrent Request Limit is and Why it Exists in Salesforce?
Answer :
The multi tenant [Link] platform uses governor limits to ensure that system
resources are available to all customers and to prevent any one customer from
monopolizing them. If a governor limit is exceeded, the associated execution
governor limit issues a runtime exception that cannot be handled. When you
design your applications, you can help plan for their growth by keeping these
limits in mind.
One of the limits customers frequently reach is the concurrent request limit.
Once a synchronous Apex request runs longer than 5 seconds, it begins counting
against this limit. Each organisation is allowed 10 concurrent long-running
requests. If the limit is reached, any new synchronous Apex request results in a
runtime exception. This behavior occurs until the organization’s requests are
below the limit.
Ultimately, this limit is in place to protect the user experience. Once the limit is
reached, new synchronous Apex requests are denied. This behaviour can be
disruptive to your work.
78: How to get the list of all available sobject in salesforce database using Apex
(Dynamic Apex) ?
Answer :
Map<String, [Link]> m = [Link]();
80: How to read the parameter value from the URL in Apex?
Answer :
Consider that the parameter name is AccountName then use below code snippet:
String objAccountName =
[Link]().getParameters().get('AccountName');
81. How to get the debug log of Connection user in salesforce to salesforce
Integration?
Answer :
When configuring Debug Logs, you cannot choose a Salesforce to Salesforce
Connection User from the User Lookup, but there is a workaround to achieve
this.
To begin capturing Debug Logs for a Connection User open the following URL in
your browser:
[Link]
gLogUser?retURL=%2Fsetup%2Fui
%[Link]&UserLookupInput_lkid=YYYYYYYYYYYYYY
&UserLookupInput=Connection%20User
Replace YOURSALESFORCEINSTANCE with your salesforce instance,
UserLookupInput_lkid is the ID of the Connection User and UserLookupInput is
the User name. You can find the user ID of the connection user, by inspecting the
CreatedById for a record created by this user. (eg. via eclipse or [Link]
explorer)
82. What are different user licenses available in salesforce and explain them?
Answer : Below is the list of licenses available in salesforce
1) Salesforce : Full access to salesforce CRM and appExchange
2) Salesforce Platform : Access only to Custom apps but not standard CRM
3) [Link] One App : Designed to access only one custom app with
unlimited number of tabs
4) [Link] Knowledge Subscription : Grant user access to [Link] Light
app or [Link] enterprise app but no CRM functionality
5) Knowledge Only User :Designed for users who only need access to the
Salesforce Knowledge app
6) Chatter Free : User has access to chatter which includes feeds, profiles, files
and groups
7) Chatter External : Designed to allow customers in Chatter groups.
Customers are users outside of a company’s email domain.
8) Chatter Only : User has access to Groups, feeds, people, profiles and files
along with access to view accounts and contacts, modify custom objects and use
CRM contents, Ideas.
83. What is the difference between Customer portal and Partner portal?
Answer : Traditionally Partner Portal is part of companies Partner Channel Sales
efforts. It is a portal focused more on Sales force automation and the efforts of
those partners that sell your products to nurture the leads you pass to them, the
leads they enter in themselves and the convert to Opportunity and subsequent
sale.
Customer Portal on the other hand is more focused on the Service and Support of
one’s Customers.
The feature differences are that Partner Portal exposes the Leads and
Opportunity objects whereas the Customer Portal does not. However, only the
top tier of Partner licensing (Gold Partner licenses) exposes the Case object
whereas this is standard in the Customer Portal.
88. Tell me about Jump Start Wizard versus Standard Wizard in Salesforce?
Answer :
The Jump Start wizard creates a one-step approval process for you in just a few
minutes
The Standard Wizard is useful for complex approval processes.
Standard Wizard
• The standard wizard is useful for complex approval processes.
• Use it when you want to fine tune the steps in your approval process.
• The standard wizard consists of a setup wizard that allows you to define your
process and another setup wizard that allows you to define each step in the
process.
93. We have Time Based Workflow and there is action scheduled to be executed.
Can we delete that workflow?
Answer : If a workflow has any pending time dependent action, then we cannot
delete the workflow.
98. What are different Organization Wide Defaults? Explain each of them?
Answer :
Below are the different OWD values :
Private :
If the OWD for an object is set to private, then only the owner, and users
above that role in role hierarchy, can view, edit and report on those records
Public Read Only :
If the OWD for an object is set to Public Read Only, then all users can view and
report on records but they cannot edit them. Only the record owner and the
users above that role in the role hierarchy can edit the records
Public Read/Write :
If the OWD for an object is set to Public Read/Write, then all users can view, edit
and report on all records. But only owner of the record can delete the records.
Public Read/Write/Transfer :
This is available only for Case and Lead objects
If the OWD for an object is set to Public Read/Write/Transfer then, all users can
view, edit, Transfer and report on all the records but only owner of the record
can delete the records
Controlled By Parent :
If the OWD for any object is set as Controlled By Parent, then user can perform
an action on the record based on whether they can do the same on the parent
record associated with it.
99. What are differences between custom settings and custom objects?
Answer :
Custom Settings:
1. Custom settings are SOQL inexpensive
2. We can’t write triggers on custom settings
3. Fields on which we can create custom settings are restricted like picklists,
lookups and formula fields can’t be created in custom settings
4. No Page layouts, record types, validation rules and workflow rules can be used
on custom settings.
5. Custom Settings SOQL is faster than custom objects.
Custom Objects:
1. Custom Objects are SOQL Expensive
2. We can have triggers on custom objects
3. No restrictions on creation of fields
4. Can be used on Custom objects
5. Custom objects SOQL not fast as a custom Settings .
101. What is the difference between public cloud & private cloud in salesforce? Is
[Link] a public cloud or private cloud?
Answer :
Public Cloud: Could services are provided "as a service" over the Internet with
little or no control over the underlying technology infrastructure. More than one
tenant can use the same resources.
Private Cloud: This also offers activities and functions "as a service" but is
deployed over a company intranet or hosted data center. This is private product
for a company or organization offering advance security.
[Link]: Is a public cloud as it is hosted on [Link] data centers
and data of more than one tenant resides on same servers.
This component displays all messages that were generated for all components
on the current page, presented using the salesforce styling. This will display both
salesforce generated messages as well as custom messages added to the
ApexPages class
apex:PageMessage:
apex:Message:
apex:Messages:
Sample Code
105. Write a code to find the average Amount for all your opportunities by
campaign?
Answer :
AggregateResult[] arList = [select CampaignId, AVG(amount) from Opportunity
group by CampaignId];
for(AggregateResult ar : arList){
[Link]('CampaignId ' + [Link]('CampaignId'));
[Link]('Average Amount' + [Link]('expr0'));
}
106. What are groups in SFDC and what is their use in salesforce?
Answer :
Groups are set of users. They can contain individual users, other groups, the
users in a particular role or territory, or the users in a particular role or territory
plus all of the users below that role or territory in the hierarchy.
There are two types of groups:
• Public groups: Only administrators can create public groups. They can be used
by everyone in the organization.
• Personal groups: Each user can create groups for their personal use.
You can use groups in the following ways:
• To set up default sharing access via a sharing rule
• To share your records with other users
• To specify that you want to synchronize contacts owned by others users
• To add multiple users to a Salesforce CRM Content library
• To assign users to specific actions in Salesforce Knowledge
Click Setup >Data Management > Data Export > Schedule Export.
Select the desired encoding for your export file. Leaving the default is fine.
Check the Include in export checkbox if you want to include attachments
in the export (optional)
Leave the default Replace carriage returns with spaces if you want your
export files to have spaces instead of carriage returns.
Select Weekly as the frequency for the exports.
Choose start and end dates. Set the end date to sometime in the distant
future such as 20 years from the begin date.
Set the time of day for your scheduled export. The export is put in a job
queue and the exact time of the export will depend on the amount of activity in
the queue.
You can select the types of data to include in your export. It is best to
include all data in your export file. This will make sure all your organizations data
is exported.
Click Save.
Points to Remember:
112. What are email services in salesforce and explain how we can use them in
code?
Answer :
Email services are automated processes that use apex class to process the
contents, headers and attachment of an inbound email.
Sample code
Use Case: create a contact record if the inbound email subject is Create Contact
and body contains contact name
<apex:page controller="wrapperDemoCtrl">
<apex:column value="{![Link]}"/>
</apex:pageBlockTable>
</apex:pageBlock>
<apex:column value="{![Link]}"/>
</apex:pageBlockTable>
</apex:pageBlock>
</apex:page>
Apex Controller :
acc= accn;
}
public wrapperClass(Opportunity opn)
{
op=opn;
}
}
}
114. How can we hard delete a record using a Apex class/by code?
Answer :
ALL ROWS key word can be used to get all the records including records in the
recycle bin.
Below is the sample code to delete contact records from recycle bin
List<Contact> dContactList=[Select ID From Contact Where IsDeleted = true
limit 199 ALL ROWS];
[Link]( dContactList );
118. Let’s say we have to update the same record in After Trigger context. Is
there any way or workaround?
Answer :
If we create a new instance of a sObject in the Apex Trigger in memory using the
Id of the newly created record as provided in the After Trigger context, we can
perform an Update DML statement and not get a read only error. This is because
in Apex, the SObject is seen as a new reference (even though the records have
the same SFDC ID) and therefore is eligible for DML operations. The below
snippet of code illustrated this working and not working.
List<Contact> originals = new List<Contact>();
if([Link]().size() > 0)
{
for(Contact origContact : [Link]())
{
Contact mirrorContact = [Link]([Link]);
//origContact.Linked_Contact__c = [Link]; //Link the Original
Record i.e. Mirror Record WILL FAIL
Contact origContactUpdate = new Contact(Id=[Link],
Linked_Contact__c = [Link]); //This will WORK
[Link](origContactUpdate);
}
//update [Link](); //Update the Records -> THIS WILL FAIL AS ITS
ORIGINAL RECORDS IN MEMORY
update originals;
}
[Link] fieldResult =
OfficeLocation__c.Country__c.getDescribe();
List<[Link]> ple = [Link]();
@RemoteAction:
The RemoteAction annotation provides support for Apex methods used in
Visualforce to be called via JavaScript. This process is often referred to as
JavaScript remoting.
@TestVisible:
Use the TestVisible annotation to allow test methods to access private or
protected members of another class outside the test class. These members
include methods, member variables, and inner classes. This annotation enables a
more permissive access level for running tests only.
@RestResource(urlMapping='/yourUrl'):
The @RestResource annotation is used at the class level and enables you
to expose an Apex class as a REST resource.
@HttpDelete:
The @HttpDelete annotation is used at the method level and enables you
to expose an Apex method as a REST resource. This method is called when an
HTTP DELETE request is sent, and deletes the specified resource.
@HttpGet:
The @HttpGet annotation is used at the method level and enables you to
expose an Apex method as a REST resource. This method is called when an HTTP
GET request is sent, and returns the specified resource.
@HttpPatch:
The @HttpPatch annotation is used at the method level and enables you
to expose an Apex method as a REST resource. This method is called when an
HTTP PATCH request is sent, and updates the specified resource.
@HttpPost:
The @HttpPost annotation is used at the method level and enables you to
expose an Apex method as a REST resource. This method is called when an HTTP
POST request is sent, and creates a new resource.
@HttpPut:
The @HttpPut annotation is used at the method level and enables you to
expose an Apex method as a REST resource. This method is called when an HTTP
PUT request is sent, and creates or updates the specified resource.
before insert
after insert
before update
after update
before delete
after delete
after undelete
So as a best practice, create one Trigger per object and let it handle all of the
contexts that you need. Here is an example of a Trigger that implements all
possible contexts:
// trigger body
}
Best Practice #2: Bulkify your Helper Methods
Make sure any code that runs a query or DML operation does it in a bulk manner
and doesn't execute within an iteration or a for loop. Executing queries or DML
operations within an iteration adds risk that the governor limits will be exceeded.
This is also true for any helper or utility methods an Apex request executes.
Governor limits are calculated at runtime. After the request is initiated (Trigger,
Visualforce page, etc.), any Apex code executed in that transaction applies and
shares the governor limits. So if a trigger uses some Apex methods written in a
helper class, it's important that those shared Apex methods are properly
designed to handle bulk records. These methods should be written to be invoked
with a set of records, especially if the method has a SOQL query or DML
operation.
For example, if the Apex method performs a SOQL query, that method should
receive a collection (Array, List, Set, etc.) of records so when it performs the
query, it can perform the query for all records in the Apex transaction.
Otherwise, if the Apex method is called individually for each record being
processed, the Apex transaction will inefficiently run queries and possibly exceed
the allowed number of queries allowed in that transaction. The same is true for
DML statements in Apex methods.
So please make sure any utility or helper methods are efficiently written to
handle collections of records. This will avoid unnecessarily executing inefficient
queries and DML operations.
Best Practice #4: Avoid SOQL Queries or DML statements inside FOR
Loops
A common mistake is that queries or DML statements are placed inside a for
loop. There is a governor limit that enforces a maximum number of SOQL
queries. There is another that enforces a maximum number of DML statements
(insert, update, delete, undelete). When these operations are placed inside a for
loop, database operations are invoked once per iteration of the loop making it
very easy to reach these governor limits.
Instead, move any database operations outside of for loops. If you need to query,
query once, retrieve all the necessary data in a single query, then iterate over
the results. If you need to modify the data, batch up data into a list and invoke
your DML once on that list of data.
For example, if the results are too large, the syntax below causes a runtime
exception:
//A runtime exception is thrown if this query returns enough records to exceed
your heap limit.
Account[] accts = [SELECT id FROM account];
Instead, use a SOQL query for loop as in one of the following examples:
// Use this format for efficiency if you are executing DML statements
// within the for loop. Be careful not to exceed the 150 DML statement limit.
update accts;
Let the [Link] platform chunk your large query results into batches of 200
records by using this syntax where the SOQL query is in the for loop definition,
and then handle the individual datasets in the for loop logic.
Best Practice #7: Use of the Limits Apex Methods to Avoid Hitting
Governor Limits
Apex has a System class called Limits that lets you output debug messages for
each governor limit. There are two versions of every method: the first returns the
amount of the resource that has been used in the current context, while the
second version contains the word limit and returns the total amount of the
resource that is available for that context.
This is the same test class as in the previous example but it defines the test
method with the isTest annotation instead.
@isTest
private class myClass {
@isTest static void myTest() {
// code_block
}
}
Starting with Salesforce API 28.0, test methods can no longer reside in
non-test classes and must be part of classes annotated with isTest. See the
TestVisible annotation to learn how you can access private class members from a
test class.
Test methods can’t be used to test Web service callouts. Instead, use
mock callouts. See Test Web Service Callouts and Testing HTTP Callouts.
You can’t send email messages from a test method.
Since test methods don’t commit data created in the test, you don’t have
to delete test data upon completion.
If a test class contains a static member variable, and the variable’s value
is changed in a testSetup or test method, the new value isn’t preserved. Other
test methods in this class get the original value of the static member variable.
This behavior also applies when the static member variable is defined in another
class and accessed in test methods.
For some sObjects that have fields with unique constraints, inserting
duplicate sObject records results in an error. For example, inserting
CollaborationGroup sObjects with the same names results in an error because
CollaborationGroup records must have unique names.
Tracked changes for a record (FeedTrackedChange records) in Chatter
feeds aren't available when test methods modify the associated record.
FeedTrackedChange records require the change to the parent record they're
associated with to be committed to the database before they're created. Since
test methods don't commit data, they don't result in the creation of
FeedTrackedChange records. Similarly, field history tracking records (such as
AccountHistory) can't be created in test methods because they require other
sObject records to be committed first (for example, Account).
124. How do you unit test a trigger when you don’t know the required fields?
Answer :
Customers can have validation on custom fields via validation rules and triggers,
so handling that in your unit tests without customer intervention is next to
impossible. The first step to reducing issues is to have your test data populate all
standard fields and ensure the data uses the most common formatting for your
customer base (US style phone numbers and addresses for the US for example).
Beyond that you can use the new Reflection features added to Salesforce in
Summer ’12 to allow customers to create unit test data classes that can be used
by your managed package. Basically you define a test data generation interface
and the customer creates an Apex class to generate data for you. Here’s an
example of using Reflection in a similar manner on the DeveloperForce
blog:[Link]
[Link]
Using the method for unit tests run on install might be problematic as you’d have
to have the customer create the class before they install your package and your
package could only look for the class by name (or iterate through all default
namespace classes and check for the correct interface). However, it’s no longer
necessary for unit tests to run during installation for managed packages and by
default they do not.
The Reflection method requires some coding knowledge on the customer side,
but you could add a tool in your application to generate the custom unit test data
class for the customer.
FYI, it’s no longer necessary for managed package unit tests to succeed in
customer orgs. They’re not required on install, they will no longer prevent
deployment to production and they don’t count as part of the customers unit test
coverage percentage for purposes of deployment. The only exception to that is if
the customer uses ANT and sets the runAllTests parameter to true.
125. How do you write a unit test for a trigger whose only function is to make a
callout?
Answer :
Both future methods and callouts can be unit tested.
To test future methods simply make your call to any future method between
[Link]();and [Link](); statements and the future method will
return when [Link](); is called. See the documentation for the Test class
here: [Link]
Testing callouts is a bit trickier though. Basically in your callout code you check
to see if you’re executing within a unit test context by checking
[Link]() and instead of getting your callout response from an
[Link]() request, you return a pre-built test string instead. There’s
one example of this method here: [Link]
callouts-in-apex-code-part-2/
There’s also an older example of callout unit testing that uses a static variable
you set in your unit test. Just replace that static variable with a call to
[Link]() and their example works fairly well as well. That example
can be found here:[Link]
126. Can I find out if the current user has access to a record without querying?
Answer :
To find out if a particular user has Edit access to a record, use the
UserRecordAccess object. This object is available in API version 24.0 and later.
You can use SOQL to query this object to find out if the user has edit access to
the record in question.
But make sure that allRecordIds is a LIST of IDs. It doesn’t work if allRecordIds is
a SET of IDs. I guess that’s a bug.
Also, only a maximum amount of 200 recordIds can be checked in one query.
1) Write a Apex trigger to update related Contacts phone number whenever Accounts phone number is
updated.
2) Write a Visualforce page to display the Account information on entering Account Name as input by
user
Check answer at: [Link]
Sandboxes are the environment where we develop and test our code before implementing it into the
production. There are four types of Sandboxes.
Developer Sandbox :
[Link]: It returns the list of new records which are updated or inserted on objects
[Link]: It returns the list of old records which are updated or deleted on and from objects.
[Link]: It returns the Map of IDs of new records. Available only for Update and Insert.
[Link]: It returns the Map of IDs of old records. Available only for Update and Delete.
8) What will happen when we load data from data loader where required field is empty?
1. If the fields are marked Mandatory on page layout level, all the records would be inserted.
2. If the fields are marked Mandatory except page layout, all the records will be inserted apart from
records which don't have data in mandatory field.
SOQL: Salesforce Object Query Language. It is used to query data from objects. It is similar to SQL but
here tables are objects and columns are the object fields. Records are retrieved using SELECT keyword.
SOSL: Salesforce Object Search Language. It is similar to SOQL but it returns list of list of objects because
it works on multiple objects. Records are retrieved using FIND keyword.
DML: Data Manipulation Language. This is used to manage records in salesforce. Keywords used are
UPDATE, DELETE, INSERT, UPSERT, MERGE, UNDELETE.
SOQL:
SOSL:
DML:
1. Total number of DML statements in single transaction is 150.
2. Total number of records processed will be 10000.
11) How do you export data from Visualpage into excel and PDF?
We can export data into excel and PDF by using below content inside <apex:page>
EXCEL:contentType="application/[Link]-excel#[Link]"
PDF: renderAs="pdf"
Whenever a Lead is converted, Salesforce creates accounts, contacts and optionally opportunity using the
details from Lead.
Data Loader:
Import Wizard:
1. It is an internal tool.
2. It can only import data.
3. It can import upto 50 thousand records.
4. Supports all custom objects and few standard objects ( Contacts, Leads, Accounts,Solution and
Campaign)
5. Cannot delete records using Import Wizard.
By checking "Insert Null Values" at Data loader setting page. This option is not available for Bulk API is
enabled.
By checking Lead Status = Closed-Converted. Also, the converted lead wont be searchable unless admin
has given View and Edit converted Lead permission.
This can be achieved by using Joined Reports which can use multiple report types.
Custom Label enables developers to create multilingual apps by presenting information in user's native
[Link] are custom texts, where all the information is pre-loaded by developers which will be
displayed based on the users language). It can be used in both Apex and Visualforce pages.
1. Create Custom Label from setup. let the name of custom label be blog.
2. Use them in Visualforce page : {!$ [Link]}
3. Use them in Apex : [Link]
To delete components, use the same procedure as with deploying components, but also include a delete
manifest file that’s named [Link] and list the components to delete in this manifest.
A Test class is an apex class that tests your logic written in either apex class or trigger programatcally. A
test class actually ensurs that your code is working fine as expected.
This is an important thing when you are doing deployment in production as salesforce allows deployment
only when your 75% of the code is covered through test classes.
23) Can we delete user? Explain why.
No, we cant delete user and can only deactivate. Users cannot be deleted because any thing created in
Salesforce has "created by" field and if we delete the user, those fields data will also get deleted.
Making your Apex class available as a REST web service is straightforward. Define your class as global, and
define methods as global static. Add annotations to the class and methods. For example, this sample
Apex REST class uses one method. The getRecord method is a custom REST API call. It’s annotated with
@HttpGet and is invoked for a GET request.
@RestResource(urlMapping='/Account/*')
global with sharing class MyRestResource {
@HttpGet
global static Account getRecord() {
// Add your code
}
}
Lookup Relationship:
Master-Detail Relationship:
Many-to-Many Relationship :
4) What is workflow?
Workflows help in automating four actions based on the Evaluation criteria set by
user.
Evaluation Criteria:
Actions:
6) How to get count of Child records in Parent object having lookup relationship.
This can be done using Trigger.
Check Sample Trigger at : [Link]
[Link]
List Custom Setting: This custom setting provides data which will remain same for
entire organization. Every user will view same set of data.
Hierachy Custom Setting: This custom setting provides data which will differ based
on the users access. It will show/restrict data based on users permission.
1. Chart
2. Gauge
3. Metric
4. Table
5. Visualforce Pages
15) What is Batch Apex? How to know status of the Batch Job?
Batch Apex is an asynchronous process which is used to process millions of
records. It uses three methods, Start, Execute and Finish.
19) Approach to view all records related to user from account whenever
visualpage loads
We will use custom controller with constructor having a query to display data
based on user.
Custom Controller: These are used when developer need a functionality which
cannot be fulfilled by Standard controller. These require coding.
<apex:page controller = "testApexCode">
Log in to the Data Loader. Select the "Insert" command. In the 'Select Sforce
Object' step, select the 'Show all Sforce Objects' checkbox and then select
"Attachments". Choose the [Link] file. In the mapping step, map the
following fields:
Parent ID
Name
Owner ID
Body - Make sure to map the Body column which you created previously with the
file extension.
This is how you designate the file and location of the attachments to be inserted.
Click "OK" to proceed with the insert. It may take a few minutes but the
attachments should be successfully uploaded to your salesforce org.
Class:
Trigger:
Process Builder: Something which evaluates criteria and perform actions when criteria is met.
To call an Apex Method, add a call apex method to your process and select an Apex class with a
@invocable method annotation.
[Link] = 'apex/visualforcePageName'
A Sale process is used to determine which opportunity stages are selectable when record types are
enabled. In other words,it determines what stage is the opportunity and based on that, what action can
be taken.
Role:
Profile:
Viewstate is a state of visualforce page which helps salesforce to regenerate the page when it comes back
from server.
1. All non-transient data members in the associated controller (either standard or custom) and the
controller extensions.
2. Objects that are reachable from a non-transient data member in a controller or controller
extension.
3. The component tree for that page, which represents the page's component structure and the
associated state, which are the values applied to those components.
4. A small amount of data for Visualforce to do housekeeping.
12) How will you create a new record in Account when a command button is clicked in Custom object
using VF page (without UI)
1. Create a class which will have a function to insert records in new object
2. Call that function in visualforce <apex:page> tag.
3. Call visualforce page using command button (refer question 6)
Example:
Visualforce Page:
</apex:page>
Class:
insert acc ;
return null;
13) Approval step is already created and it is active now. I want to add one more step. How do I do it?
We can't make any changes once the approval process is active. We need to create a new approval
process.
Syntax:
global class SomeClass implements Schedulable {
global void execute(SchedulableContext ctx) {
// Write your code here
}
}
Tabular Reports:Tabular reports are the simplest and fastest way to look at your data. Similar to a
spreadsheet, they consist simply of an ordered set of fields in columns, with each matching record listed
in a row. While easy to set up, they can't be used to create groups of data and there are limits to how you
can use them in dashboards. Consequently, they're often best used for tasks like generating a mailing list.
Summary Reports: Summary reports are similar to tabular reports, but also allow users to group rows of
data, view subtotals, and create charts. These will take you a bit more time to set up, but summary
reports give us many more options for organizing the data, and are great for use in dashboards.
Matrix Reports: Matrix reports allow you to group records both by row and by column. These reports are
the most time-consuming to set up, but they also provide the most detailed view of our data. Like
summary reports, matrix reports can have graphs and be used in dashboards
Joined Reports:Joined reports let you create different views of data from multiple report types. In a
joined report, data is organized in blocks. Each block acts like a “sub-report,” with its own fields, columns,
sorting, and filtering. You can add a chart to a joined report.