If you can think of a story which tells you how to make the choice one step at a time, then often this can tell you how to count it too.
Let's see, suppose we have a list of the 7 types of items. We will go up to the first type of item, and we'll ask the baker to give us one of them, and then another, and then another, and so on until at some point we'll ask him to switch to the next type of item. Then we'll ask him for one of those, and then another and so on until we ask him to stop. And then tne next item. And so on. It may be that we'll get to an item and not ask him to give us one of those but simply to move on to the next item. At the end when we have enough of the last item we'll ask him to stop.
So our instructions might look like this:
"one of this item", "one of this item", "switch to next type of item", "one of this item", "one of this item", "switch to next type of item", "switch to next type of item", "one of this item", ..., "one of this item", "stop".
If we can count how many of these lists of instructions there are, this will count how many possible boxfuls there are.
Let's see, we have 12 instructions that say "one of this item", and six of them that say "switch to the next type of item", and one that says "stop". They all end in "stop" so we don't need to consider that. Therefore we have 12+6 = 18 instructions and we need to make sure that 12 of them are "one of this item". The number of ways to choose 12 out of 18 is CHOOSE(18,12).
This type of argument will always work when you have a situation where there are n types of objects and you want k objects in total, as long as you can have as many or as few of each type as you desire. You have k instructions that say "one of this type" and n-1 instructions that say "switch to the next type", so that's k + n-1 in total, with k that have to be "one of this type", so that's CHOOSE(k+n-1,k)