Имя: Пароль:
1C
1С v8
Свернуть ТЗ
0 lirt82
 
28.09.18
08:10
В результате выполнения запроса, получаем ТаблицуЗначении с колонками
Док, НомерВагона, Контрагент. Мне нужно ее свернуть так.
Колонка                Колонка                       колонка
Док №1       номера вагонов через запятую          Контрагент
                     25, 65, 11, 84

Если сворачиваю по документу то в колонке где номера вагонов остается только первый вагон, как сделать?
1 Zmich
 
28.09.18
08:13
(0). Запросом к ТЗ. Обходя группировки, простым алгоритмом формировать колонку вагонов через запятую.
2 Лодырь
 
28.09.18
08:20
Использовать СКД, как вариант
3 fenement
 
28.09.18
08:53
Если это делается не для отчета, то можно:
1)Получить новую ТЗ путем сворачивания по Документу,Контрагенту. (Получится ТЗ с двумя колонками)
2) Добавить в эту ТЗ колонку "НомераВагонов"
3) Обойти эту ТЗ и для каждой строчки произвести поиск методом "НайтиСтроки" в исходной таблице.
4) Обходя массив с результатами поиска, сформировать строковое значение колонки "НомераВагонов"
4 lirt82
 
28.09.18
09:31
(3) 3) Обойти эту ТЗ "подтолкни..." пример:)

ТЗДляПередачиВФорму = ТЗ.Скопировать();
ТЗДляПередачиВФорму.Свернуть("Док, Клиент");
ТЗДляПередачиВФорму.Колонки.Добавить("Пометка", Новый ОписаниеТипов("Булево"));
ТЗДляПередачиВФорму.Колонки.Добавить("НомерВагона", Новый ОписаниеТипов("Строка"));
5 arsik
 
гуру
28.09.18
09:35
(3) (4) К чему это все. просто изначальный запрос поправьте и выгружайте не в ТЗ, а в дерево с итогами по документу и контрагенту
6 lirt82
 
28.09.18
09:42
(5) почти допилил:)
7 lirt82
 
28.09.18
11:57
(3) Спасибо большое за написание алгоритма
получилось, вот итог

ТЗДляПередачиВФорму = ТЗ.Скопировать();
                    ТЗДляПередачиВФорму.Свернуть("Док, Клиент");
                    ТЗДляПередачиВФорму.Колонки.Добавить("Пометка", Новый ОписаниеТипов("Булево"));
                    ТЗДляПередачиВФорму.Колонки.Добавить("НомерВагона", Новый ОписаниеТипов("Строка"));
                    
                    Для каждого Стр Из ТЗДляПередачиВФорму Цикл
                        Нашли = ТЗ.НайтиСтроки(Новый Структура("Док", Стр.Док));
                        Если Нашли <> Неопределено Тогда
                            Для каждого СтрокаНашли Из Нашли Цикл
                                НомВагонаДобавить = Стр.НомерВагона;
                                Стр.НомерВагона = СтрокаНашли.НомерВагона;
                                Стр.НомерВагона = НомВагонаДобавить + Лев(", " + СтрокаНашли.НомерВагона, 10);
                            КонецЦикла;
                        КонецЕсли;
                    КонецЦикла;
8 arsik
 
гуру
28.09.18
12:01
(7) lirt82 Стаж: 9 лет 2 месяца 20 дней
Твой подход печален.
9 Borteg
 
28.09.18
12:03
(7) Используй скд и ВычислитьВыражениеСГруппировкойМассив