Плоская выборка отсортирована по товару: внешний цикл меняет товар, внутренний читает его строки.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Используйте приведённые три строки и сортировку Название; строки одного товара должны идти рядом.
Здесь нет предложения ИТОГИ: показано управление курсором плоской выборки.
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ""Книга"" КАК Название, 3 КАК Количество
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ ""Книга"", 2
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ ""Ручка"", 1
|УПОРЯДОЧИТЬ ПО Название";
Выборка = Запрос.Выполнить().Выбрать();
ВсегоСтрок = 0;
ВсегоКоличество = 0;
Пока Выборка.СледующийПоЗначениюПоля("Название") Цикл
НазваниеГруппы = Выборка.Название;
КоличествоГруппы = Выборка.Количество;
ВсегоСтрок = ВсегоСтрок + 1;
Пока Выборка.Следующий() Цикл
КоличествоГруппы = КоличествоГруппы + Выборка.Количество;
ВсегоСтрок = ВсегоСтрок + 1;
КонецЦикла;
ВсегоКоличество = ВсегоКоличество + КоличествоГруппы;
Сообщить(СтрШаблон("%1: %2", НазваниеГруппы, КоличествоГруппы));
КонецЦикла;
Сообщить(ВсегоСтрок = 3);
Сообщить(ВсегоКоличество = 6);Разбор по шагам
СледующийПоЗначениюПоля начинает новую группу одинаковых значений. Первый её элемент уже текущий, поэтому сразу учитываем его.
Внутренний Следующий читает остальные строки этой группы и останавливается на смене значения.
Следующий вызов внешнего метода переходит к следующему названию. Общий счёт строк помогает заметить пропуск первой записи.
Для настоящих итогов в отчёте можно выбрать запрос с ИТОГИ; этот урок специально показывает курсор без итогов.
Как проверить результат
Сообщения содержат Книга: 5, Ручка: 1; контроль трёх строк и количества 6 — Истина.
Добавьте третью строку Книга с количеством 4: итог этой группы станет 9, измените контроль числа строк и суммы.
Не убирайте сортировку: объединённые ветви сами по себе не гарантируют нужного порядка.
Ожидаемый результат
Соседние строки одного значения обработаны группами без повторного чтения первой строки.
На что обратить внимание
У обычного Следующий есть особое ограничение после СледующийПоЗначениюПоля: он остаётся внутри текущего значения поля.
Без сортировки одинаковые названия могут образовать отдельные несмежные группы.
Если нужны группы в произвольном порядке исходных данных, используйте запрос с группировкой или накопление в Соответствие.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.