- fetch a list of object IDs and descriptions
- display the descriptions to the user and allow them to select
- return the ID(s)
Another ugliness is that the identifier field can't be removed from the object creation page and is editable by default.
A workaround is as follows:
- In the object page layout, move the identifier field to the system information section. This shifts it out of the way a bit.
- Create a custom button that puts a default value into the identifier field
- Add a workflow rule to copy a value into the identifier field from another field