Полный пример писать нет времени.
Суть в том, что выполняется это одной коммандой одного объекта Запрос:
ТекстЗапроса =
"ВЫБРАТЬ
| Таблица.Номенклатура КАК Номенклатура
|ПОМЕСТИТЬ ТаблицаНоменклатуры
|ИЗ
| &Таблица КАК Таблица
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ПродажиОбороты.Номенклатура КАК Номенклатура,
| ЕСТЬNULL(ПродажиОбороты.СтоимостьОборот, 0) КАК Сумма
|ПОМЕСТИТЬ ПродажиНоменклатуры
|ИЗ
| ТаблицаНоменклатуры КАК ТаблицаНоменклатуры
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты
| ПО ТаблицаНоменклатуры.Номенклатура = ПродажиОбороты.Номенклатура
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| СУММА(ПродажиНоменклатуры.Сумма) КАК Сумма
|ПОМЕСТИТЬ ИтогСумма
|ИЗ
| ПродажиНоменклатуры КАК ПродажиНоменклатуры
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ПродажиНоменклатуры.Номенклатура КАК Номенклатура,
| ПродажиНоменклатуры.Сумма
|ПОМЕСТИТЬ ПродажиГруппыА
|ИЗ
| ПродажиНоменклатуры КАК ПродажиНоменклатуры
| ЛЕВОЕ СОЕДИНЕНИЕ ИтогСумма КАК ИтогСумма
| ПО (ПродажиНоменклатуры.Сумма >= 0.2 * ИтогСумма.Сумма)
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ПродажиНоменклатуры.*
|ИЗ
| ПродажиГруппыА КАК ПродажиГруппыА
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи КАК ПродажиНоменклатуры
| ПО ПродажиГруппыА.Номенклатура = ПродажиНоменклатуры.Номенклатура";
Запрос = Новый Запрос(ТекстЗапроса);
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.Параметры.Вставить("Таблица", Таблица);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
// ...
КонецЦикла;
Внимание! Запрос ПродажиГруппыА абсолютно неверный! Ни в коем случае не используйте его в таком виде!