Да, тяжко вспоминать семерку...
Получается, что в работающем варианте вы выполняете запрос, проходите по результатам, получая ячейки, и для каждой перебираете заново таблицу товаров в документе, чтобы проверить, нужно ли именно этот товар выводить?
Кстати, а почему в запросе нет выборки количества товара из накладной? И почему условие отбора по складу пользователя, а не по складу документа?
Вообще, если делать по рабоче-крестьянски, я бы сделала так:
1. создать ТаблицуЗначений с полями (группа ячеек, ячейка, товар, количество)
2. пройти один раз по табличной части, заполнить ТаблицуЗначений
3. сгруппировать ТаблицуЗначений по полям (группа ячеек, ячейка, товар) с суммированием количества
4. вывести список.
Второй рабоче-крестянский способ - выводить данные сразу из запроса, но не использовать Группировку по ячейке, вместо нее использовать сортировку.
Завести переменную ТекущаяГруппа и проверять соответствие данных в строке результатов запроса этой переменной. Если сходятся - выводить строку, если нет - обновлять данные переменной, выводить данные группы ячеек, потом выводить саму строку.
Ну и третий способ - все-таки понять, как использовать синтаксис языка правильно. Я не вспомню без встроенной помощи точно. Но мне кажется, что раз есть возможность выбрать группировку
Пока Запрос.Группировка("Ячейка") > 0
то должна быть возможность выбрать строки этой группировки. Во всяком случае, в версии 8 именно так. Может что-то типа Пока Запрос.Группировка("Ячейка").ПолучитьДанные или ВыбратьРезультатыГруппировки. Сейчас получается, что у вас в запросе три группы ячеек, в каждой по несколько строк, но вы проходите только по трем, заглавным строкам.
Что-то много букв получилось, надеюсь, хоть что-то поможет )