Здравствуйте! Подсобите, пожалуйста.

Есть у меня таблица значений. Приложил скрин со строками. Мне нужно объединить строки по контрагенту: колонки НДС и Оплачено суммировать. Значение колонок Описание, ДокНачисления, Элект.Накладная и Заказ нужно объединить как строки. Вопрос в том как лучше было бы это сделать? Думал, сделать так: пройтись с конца по строкам ТЗ. На первой итерации выбрать контрагента, потом запустить второй цикл, пройти по всем строкам, найти нужного контрагента, объединить и суммировать нужные колонки. После каждой итерации с нужным контрагентом удалять строку. Все это записать в новую ТЗ. Но мне кажется это костыльный вариант. Может у кого-то появятся идеи лучше?
---
Не претендую на истину и не люблю давать готовые ответы, но тут проще запрогать, чем объяснить. Ваш вариант можно трансформировать примерно в это

```1c
    ИтоговаяТЗ = ТЗ.Скопировать(,"Контрагент,Оплачено,НДС");
    ИтоговаяТЗ.Свернуть("Контрагент", "Оплачено,НДС");
    ИтоговаяТЗ.Колонки.Добавить("Описание");

    Отбор = Новый Структура("Контрагент");
    Для Каждого Стр из ИтоговаяТЗ Цикл
    ЗаполнитьЗначенияСвойств(Отбор, Стр);
    СтрокиПоКонтрагенту = ТЗ.НайтиСтроки(Отбор);
    Стр.Описание = СтрСоединить(ТЗ.Скопировать(СтрокиПоКонтрагенту, "Описание").ВыгрузитьКолонку("Описание"), ";");
    КонецЦикла;
```
---
1. Создать новую чистую ТЗ с колонками из исходной ТЗ
2. Получить набор уникальных контрагентов без цикла
3. Циклом по набору контрагентов формировать копию исходной ТЗ с колонками для получения сумм + копию исходной с колонками для получения строк, выполняя отбор по контрагенту.
    а. копию ТЗ свернуть для вычисление суммы по нужным числовым полям. результат свертки поместить в ТЗ из п1.
    б. сделать копию ТЗ, содержащей колонки, значения которых нужно превратить в строку, получить из нужной колонки массив значений без цикла и выполнить конкатенацию строк так же без цикла. Результат поместить в строку ТЗ из п.1 по контрагенту так же без цикла.
---
Не претендую на истину и не люблю давать готовые ответы, но тут проще запрогать, чем объяснить. Ваш вариант можно трансформировать примерно в это

```1c
    ИтоговаяТЗ = ТЗ.Скопировать(,"Контрагент,Оплачено,НДС");
    ИтоговаяТЗ.Свернуть("Контрагент", "Оплачено,НДС");
    ИтоговаяТЗ.Колонки.Добавить("Описание");

    Отбор = Новый Структура("Контрагент");
    Для Каждого Стр из ИтоговаяТЗ Цикл
    ЗаполнитьЗначенияСвойств(Отбор, Стр);
    СтрокиПоКонтрагенту = ТЗ.НайтиСтроки(Отбор);
    Стр.Описание = СтрСоединить(ТЗ.Скопировать(СтрокиПоКонтрагенту, "Описание").ВыгрузитьКолонку("Описание"), ";");
    КонецЦикла;
```
---
Спасибо большое! Сделал таким образом.
---
Выгрузку колонок и поиск строк в ТЗ уже отменили? Остались только циклы?
---
Вы правы. Спасибо что обратили внимание на это.
---
Без двойной итерации не обойтись, похоже.
Сначала суммируемые поля сгруппировать запросом.
Потом в выборке искать строки с контрагентом в таблице значений и соединять их строки в новую ТЗ.
Я бы так сделал.
---
Сначала суммируемые поля сгруппировать запросом. Да что ж вы все в СУБД лезете со своими таблицами??? Там своих хватает.
---
Работает? результат правильный? значит, правильно сделано.
---
Съездил вчера на танке в магазин через дорогу, за кульком семечек.
По дороге разворотил 3 легковушки, и повалил одно дерево.
Но кулек семечек привез. Добился правильного результата.
Значит, все правильно сделал.