I am trying to find out the available record types for each object for an entire profile.
Is this possible to do?
I would like to compare who has access to record types.
Yes, and there are a few ways of doing this.
When examining the XML there will be a section for record types, similar to the following:
Just look at the part for
This information would be available via the Metadata API. So You could pull down the Profile Metadata XML files via the Force.com IDE and when you've got the Profile Xmls, you can interrogate these files to find the recordTypeVisibilities elements
As an aside, users would be able to see records with all record types so long as they have Read Access to the Record. The explicit RecordType permissions only determine which RecordTypes the user can create records of, if they have Create Access on the Object.
Check out the answer to the Compare Profiles question on the stackexchange: http://salesforce.stackexchange.com/a/3693/220
The easiest way I know to do this is to use the force.com eclipse IDE where you can easily declare that you want all custom objects and profiles which will return the junction or intersection of profile settings including record types.
To help eliminate any eclipse specific behaviors, I typically create a package.xml file with the following text/elements:
Then I retrieve it using the workbench tool: http://workbench.developerforce.com by going to the migrate >> retrieve menu setting (I select single package when retrieving to be safe).
The resulting zip file will contain all of your profile settings including record type settings.
Hope this helps.