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