|
ДеревоЗначений с выводом в макет | ☑ | ||
---|---|---|---|---|
0
Popkorm
20.08.18
✎
14:46
|
Приветствую вас.
Вроде как обычно в рекурсии делаю,но не работает,где я ошибься. Функция ВывестиДеревеЗначений(мСтрокиДерева,Макет,ТабДок,Уровень) ОбластьСтроки = Макет.ПолучитьОбласть("Строка1"); Для Каждого СтрокаНоменклатуры Из мСтрокиДерева.Строки Цикл ОбластьСтроки.Параметры.Номенклатура = СтрокаНоменклатуры.Номенклатура; ОбластьСтроки.Параметры.КоличествоУпаковок = СтрокаНоменклатуры.КоличествоУпаковок; ТабДок.Вывести(ОбластьСтроки, Уровень); ВывестиДеревеЗначений(СтрокаНоменклатуры,Макет,табДок , СтрокаНоменклатуры.Уровень()+1); КонецЦикла; |
|||
1
Popkorm
20.08.18
✎
14:49
|
Вот на форме результат
https://clip2net.com/s/3WahDrQ в отчете группируется только одна https://clip2net.com/s/3WahSGy |
|||
2
Deon
20.08.18
✎
15:21
|
(1) А зачем ты Уровень параметром передаешь? Используй его только в Вывести.
Хотя, суть, по идее, меняться не должна. А ещё перед параметром Уровень я бы "Знач" пихнул, а то хз переопределяется оно при рекурсии или нет |
|||
3
Fedor-1971
20.08.18
✎
15:24
|
(0) После вывода шапки
ТабДок.НачатьАвтогруппировкуСтрок() ..... твой вывод рекурсией ТабДок.ЗавершитьАвтогруппировкуСтрок() Если не поможет, начинай и завершай группировку для каждой ветки первого уровня |
|||
4
Fedor-1971
20.08.18
✎
15:24
|
3+ по-моему ещё есть СгруппироватьСтроки
|
|||
5
Popkorm
20.08.18
✎
15:27
|
(3) Это все делаю
Если СтрокиДеревоВложение.Количество() Тогда ТабДок.НачатьАвтогруппировкуСтрок(); ВывестиДеревеЗначений(СтрокиДерева,Макет,ТабДок,1,ОбластьСтроки2); ТабДок.ЗакончитьАвтогруппировкуСтрок(); КонецЕсли; а что имел виду : "Если не поможет, начинай и завершай группировку для каждой ветки первого уровня" |
|||
6
Fedor-1971
20.08.18
✎
15:37
|
(5)
Для Каждого СтрокаНоменклатуры Из мСтрокиДерева.Строки Цикл ОбластьСтроки.Параметры.Номенклатура = СтрокаНоменклатуры.Номенклатура; ОбластьСтроки.Параметры.КоличествоУпаковок = СтрокаНоменклатуры.КоличествоУпаковок; ТабДок.Вывести(ОбластьСтроки, Уровень); ... начатьАвтогруппировку ВывестиДеревеЗначений(СтрокаНоменклатуры,Макет,табДок , СтрокаНоменклатуры.Уровень()+1); .... ЗакончитьАвтогруппировку КонецЦикла; Идея, что следующие строки то-же должны иметь группировку |
|||
7
Fedor-1971
20.08.18
✎
15:42
|
можешь поиграться таким функционалом:
ТабДок.Область().Сгруппировать() - по сути указываешь, что сию область нужно сгруппировать |
|||
8
Popkorm
20.08.18
✎
15:44
|
(6) не сработало,мне кажется с уровнями какая та лажа
|
|||
9
Fedor-1971
20.08.18
✎
16:00
|
(8) ВывестиДеревеЗначений(СтрокаНоменклатуры,Макет,табДок ,
Вместо СтрокаНоменклатуры.Уровень()+1); Уровень+1? |
|||
10
Popkorm
20.08.18
✎
16:05
|
||||
11
Popkorm
20.08.18
✎
16:14
|
||||
12
Fedor-1971
20.08.18
✎
16:23
|
(11) попробуй так:
... начатьАвтогруппировку
т.е. сначала выводим строку основу, потом группируем и начни уровни с 2 или 3 (шапка, то у тебя уже есть, у неё то же есть уровень |
|||
13
Popkorm
20.08.18
✎
16:39
|
||||
14
dezss
20.08.18
✎
16:47
|
а попробуй использовать НачатьГруппуСтрок, а не НачатьАвтогруппировкуСтрок
|
|||
15
Popkorm
20.08.18
✎
16:52
|
(14) Веселуха,так стал группировать,спасибо,пошел допилю рекурсию
|
|||
16
dezss
20.08.18
✎
17:06
|
(6) По логике НачатьАвтогруппировкуСтрок пишется только один раз?
(11) Читай СП, если уровень всего 1, то что группировать? (15) У тебя какая глубина получается, смотрел отладчиком? Просто надо бы внимательно посмотреть что происходит в твоей рекурсии. К тому же, тебе не надо самому вычислять уровень, он есть в самой строке дерева, метод Уровень(), т.е. у тебя будет так: ТабДок.Вывести(ОбластьСтроки, СтрокаНоменклатуры.Уровень()); |
|||
17
Fedor-1971
20.08.18
✎
17:16
|
(16) по уму - да, если правильно расставлены уровни, но бывает, и при правильно выданных уровнях, группировка глючит - тогда помогает её вызов несколько раз
|
|||
18
dezss
20.08.18
✎
17:25
|
(17) ну с табдоками работаю редко, НачатьАвтогруппировкуСтрок как-то даже особо не использовал.
А может в тех случаях бывало такое, что при выводе не указывался уровень, тогда да, глючить может... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |