Creating User Multi Selects

Hints, Tips and Tricks

Technical Hints Tips and Tricks that cover customization and development using Sage CRM. API usage and coding are covered.

Creating User Multi Selects

  • Comments 7
  • Likes
Once upon a time there used to be a CRM field entrytype called 'user multi select' that seemed to be available to help define new fields. The actual EntryType is designed to be used with communications to allow the assigning of tasks and meetings to multiple users. When the field type was used to create a new column in an entity outside of it's proper context e.g. Projects or Company then it used to generate 'Pointer' errors as it assumed that there was an intersection table between the user and the table to which the user multiselect had been added.

This is because the User multi select writes into a field of data type 'Int' and as an 'Int' field it could never store multiselects and needs a link table to store this information in the link table. e.g.: in communication the user multiselects are stored in the comm_link table.

We can do a trick here to get round the need to put a User Multi Select into a table:

[1] Add a Dummy Translation with Caption Familytype = Choices,
Capt_Family = Users, Capt_code =1;
[2] Carry out a meta data fresh ;
[3] Create a multiselect field (not a user multiselect but a normal
multiselect) and select the Lookup family here as "Users";
[4] Add the field to the target entities Screen;

Try selecting more than 1 person and saving. It should be stored as a comma seperated list in the new nchar field.
Comments
  • Great stuff Jeff.

    Is there anyway to make it work similar to the New Appointment screen?

    Such that it is not showing as comma seperated but multi-lines, and allow for insertion of records to a custom entity similar to Comm_Link table?

  • Hi Jeff,

    Based on you description we have created a new multiselect field (1-4). Now we can select more than 1 person. If we will save the record we get an error message ...

    there was an unexpected event : EAccessViolation: Access violation at address 1A004AC4 in module 'eware.dll'. Read of address FFFFFFDD

    After that we couldn't open this screen for this company record again. Everytime the error message.

    The selected user data, however, were stored in the database as a comma seperated list (,1,29,5,). This seems to be correct.

    We use Sage CRM 7.1 d HF4.

    Do you have any idea what could be wrong?

    Best regards,

    Sigrid

  • Sigrid

    I have just done this with Sage CRM v7.1 SP2.  It worked for me.  I made sure that I added a new field and not tried editing an existing field. If you are sure that you have followed this then I would recommend deleting the field from the screen and database and trying recreating the field again.

  • Hi Jeff,

    Thanks for your quick reply.

    I already have 2 times created a new field with your requirements, always with the same negative result.

    I will try it on another machine with Sage CRM and will give you a feedback.

  • Hi Jeff,

    Can I order the user select by user_lastname?

    Best Regards

    Paul

  • Jeff awesome post as always !   Question if one would like to filter the user list down by TerritoryProfile of the user how would you go about doing that so that only certain user would show up in the fancy new multi user select field we can now create thanks to you sharing it with everyone.  

    is it as simple as referencing a view (in place of users) for the caption family when setting up the translation?

  • I also face this problem. Thank you for sharing.