Есть табличная часть Товары в открытой форме. Необходимо сгруппировать строки по одинаковой номенклатуре и сделать это в клиентской процедуре. Как это лучше сделать?
---
Пока ждал ответ, уже сам успел разобраться). Вам спасибо за ответ. Вот мой код, который пришлось делать на сервере:

```1c
    &НаСервере
    Процедура СвернутьСтроки()

    СвернутаяТаблица = Объект.Товары.Выгрузить();

    // Определяем группируемые и суммируемые колонки
    СтрокаИменКолонок = ";
    Для каждого Колонка из СвернутаяТаблица.Колонки цикл
    СтрокаИменКолонок = СтрокаИменКолонок + Колонка.Имя + ", ";
    КонецЦикла;
    МассивИменСуммируемыхКолонок = СтрРазделить("Количество, КоличествоУпаковок, Сумма, СуммаНДС, СуммаСНДС", ", ", ложь);
    МассивИменГруппируемыхКолонок = СтрРазделить(СтрокаИменКолонок, ", ", ложь);
    // Удаляем из массива группируемых колонок ненужные
    Для каждого ЭлементМассива из МассивИменСуммируемыхКолонок цикл
    МассивИменГруппируемыхКолонок.Удалить(МассивИменГруппируемыхКолонок.Найти(ЭлементМассива));
    КонецЦикла;
    МассивИменГруппируемыхКолонок.Удалить(0); // удаляем колонку "НомерСтроки", т. к. она является не группируемой, а служебной

    СвернутаяТаблица.Свернуть(СтрСоединить(МассивИменГруппируемыхКолонок, ", "), СтрСоединить(МассивИменСуммируемыхКолонок, ", "));
    Объект.Товары.Загрузить(СвернутаяТаблица);

    КонецПроцедуры
```
---
сделать это в клиентской процедуре Какое странное условие. Ну например так:

```1c
    &НаКлиенте
    Процедура Команда1(Команда)

    СуммируемыеКолонки = "Количество,Сумма";
    МассивСуммируемыхКолонок = СтрРазделить(СуммируемыеКолонки, ",");

    СтрокиНоменклатуры = Новый Соответствие;

    Для Каждого Стр Из Объект.Товары Цикл

    МассивСтрок = СтрокиНоменклатуры[Стр.Номенклатура];

    Если МассивСтрок = Неопределено Тогда
    МассивСтрок = Новый Массив;
    СтрокиНоменклатуры.Вставить(Стр.Номенклатура, МассивСтрок);
    КонецЕсли;

    МассивСтрок.Добавить(Стр);

    КонецЦикла;

    Для Каждого КлючИЗначение Из СтрокиНоменклатуры Цикл
    НоваяСтрока = Объект.Товары.Добавить();
    ЗаполнитьЗначенияСвойств(НоваяСтрока, КлючИЗначение.Значение[0], , СуммируемыеКолонки);
    Для Каждого Стр Из КлючИЗначение.Значение Цикл
    Для Каждого ИмяКолонки Из МассивСуммируемыхКолонок Цикл
    НоваяСтрока[ИмяКолонки] = НоваяСтрока[ИмяКолонки] + Стр[ИмяКолонки];
    КонецЦикла;
    Объект.Товары.Удалить(Стр);
    КонецЦикла;
    КонецЦикла;

    КонецПроцедуры
```
---
Пока ждал ответ, уже сам успел разобраться). Вам спасибо за ответ. Вот мой код, который пришлось делать на сервере:

```1c
    &НаСервере
    Процедура СвернутьСтроки()

    СвернутаяТаблица = Объект.Товары.Выгрузить();

    // Определяем группируемые и суммируемые колонки
    СтрокаИменКолонок = ";
    Для каждого Колонка из СвернутаяТаблица.Колонки цикл
    СтрокаИменКолонок = СтрокаИменКолонок + Колонка.Имя + ", ";
    КонецЦикла;
    МассивИменСуммируемыхКолонок = СтрРазделить("Количество, КоличествоУпаковок, Сумма, СуммаНДС, СуммаСНДС", ", ", ложь);
    МассивИменГруппируемыхКолонок = СтрРазделить(СтрокаИменКолонок, ", ", ложь);
    // Удаляем из массива группируемых колонок ненужные
    Для каждого ЭлементМассива из МассивИменСуммируемыхКолонок цикл
    МассивИменГруппируемыхКолонок.Удалить(МассивИменГруппируемыхКолонок.Найти(ЭлементМассива));
    КонецЦикла;
    МассивИменГруппируемыхКолонок.Удалить(0); // удаляем колонку "НомерСтроки", т. к. она является не группируемой, а служебной

    СвернутаяТаблица.Свернуть(СтрСоединить(МассивИменГруппируемыхКолонок, ", "), СтрСоединить(МассивИменСуммируемыхКолонок, ", "));
    Объект.Товары.Загрузить(СвернутаяТаблица);

    КонецПроцедуры
```
---
Запросом на сервере
---
Выгрузить, свернуть, загрузить обратно
---
Как выгрузить? У объекта Элементы.Товары нет метода Выгрузить()
---
РеквизитФормыВЗначение