|
Свернуть ТЗ |
☑ |
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) Используй скд и ВычислитьВыражениеСГруппировкойМассив
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший