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