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