This is where UX is being tasked to fix something that isn't fixable at the UX level. I'd go as far to say this is where a back end system is unfairly asking a user to make decisions that they shouldn't have to.
If the issue is that people enter items they sell under a different name than what's already in the system, then the proper solution would be a smarter back end.
Option 1: Build a better back-end language parser
Let users input their items by typing them (perhaps keep the checklist for those that prefer that method).
As they type each item and hit return, the system should look up the item and check for both a) common mispellings and then b) look up synonyms in a table
So perhaps a user types in an item:
[ BOOZE ]
Upon hitting return, you may see:
[ ]
• Alcohol (match for 'booze')
Option 2: Duct tape
If improving the technology is out of your hands, about the best you can do is make a giant list of checkmarks less painful. I'd start by getting rid of any scrolling. Instead, make the selection of items a separate task with a page of it's own. List all of them on one page, perhaps in columns. I'd also add a filterable search at the top that, as a user types in the field, it reduces the checkboxes shown to only those that are matches. This can all be done client-side via Javascript.
X
applies at your client's company.X
is asked to enter products the company sells. One would enter "green vegetables and yellow fruits". Then companyX
should additonally check items from a list to generate a detailled set of product/item descriptions/names of their product portfolio? Correct?