Role Base Permissions define the periphery of document types within which a user with a set of Roles can move around in. However, you can have an even finer control by defining User Permissions for a User. By setting specific documents in User Permissions list, you can limit access for that User to specific documents of a particular DocType, on the condition that "Apply User Permissions" is checked in Role Permissions Manager.
To start with, go to:
Setup > Permissions > User Permissions Manager
User Permissions Manager displaying how users can access only a specific Company.
User 'firstname.lastname@example.org' has Sales User role and we want to limit the user to access records for only a specific Company 'Rio Solutions'.
We add a User Permissions row for Company.
Add User Permissions row for a combination of User 'email@example.com' and Company 'Rio Solutions'.
Also Role "All" has only Read permission for Company, with 'Apply User Permissions' checked.
Read Permission with Apply User Permissions checked for DocType Company.
The combined effect of the above two rules lead to User 'firstname.lastname@example.org' having only Read access to Company 'Rio Solutions'.
Access is limited to Company 'Rio Solutions'.
We want this User Permission on Company to get applied on other documents like Quotation, Sales Order, etc.
These forms have a Link Field based on Company. As a result, User Permissions on Company also get applied on these documents, which leads to User 'tom.hagen@riosolutions' to acces these documents having Company 'Rio Solutions'.
Users with Sales User Role can Read, Write, Create, Submit and Cancel Quotations based on their User Permissions, since 'Apply User Permissions' is checked.
Quotation List is limited to results for Company 'Rio Solutions' for User 'email@example.com'.
User Permissions get applied automatically based on Link Fields, just like how it worked for Quotation. But, Lead Form has 4 Link fields: Territory, Company, Lead Owner and Next Contact By. Say, you want Leads to limit access to Users based only on Territory, even though you have defined User Permissions for DocTypes User, Territory and Company. You can do this by setting 'Ignore User Permissions' for Link fields: Company, Lead Owner and Next Contact By.
Sales User can Read, Write and Create Leads limited by User Permissions.
Check 'Ingore User Permissions' for Company, Lead Owner and Next Contact By fields using Setup > Customize > Customize Form for Lead.
Due to the effect of the above combination, User 'firstname.lastname@example.org' can only access Leads with Territory 'United States'.