This is the normal situation for loose goods, repacked bulk, imported items with unreadable codes, and anything you assemble yourself. The alternative — cashiers typing codes or searching by name — is slower and is where wrong-item errors come from.
Because labels print from the same catalogue the scanner reads, a code and its label cannot drift apart. That matters more than it sounds: the classic mess is a shelf label printed from a spreadsheet while the till reads a different price.
One practical check when a scanner seems dead: does it beep when it reads? If it beeps, the scanner is fine and the problem is the code or the product record; if it does not, the problem is the scanner or the cable. That two-second test saves a lot of remote debugging.