![]() |
|
Обход иерархического справочника или дерева с выгруженным спр. по определенному уровню | ☑ | ||
---|---|---|---|---|
0
asder117
01.10.19
✎
11:58
|
Доброго времени суток Уважаемые.
Есть интересная задача, нигде на форумах найти ее решение толком не могу...может кто-то что-то похожее делал. есть справочник Номенклатура у уровнями вложенности не больше 10 0 1-Продукция 2--Категория 3---Вид и т.д. первый вопрос как можно выстроить все группы (уровень вложенности примерно известен но может плавать где 5 где 6 а где и 7) в одну таблицу причем каждая группа в отдельной колонке? Продукция Категория Вид Вид Категория Вид Категория Второй вопрос, как можно получить иерархию вниз по определенному уровню к пр. только по Категории или только по виду? Обход дерева и справочника делал через рекурсию но раскидать по колонкам так и не получилось (это по первому) а вот по второму идей пока вообще ни каких...Буду рад услышать Ваши. Спасибо заранее |
|||
1
aleks_default
01.10.19
✎
12:03
|
У вас Номенклатура - это иерархия элементов?
|
|||
2
asder117
01.10.19
✎
12:06
|
(1) ДА
|
|||
3
aleks_default
01.10.19
✎
12:07
|
Лучше картину приложи со примерной структурой отчета, что и как там должно выводится
|
|||
4
aleks_default
01.10.19
✎
12:08
|
(2) тогда я вам не завидую
|
|||
5
asder117
01.10.19
✎
12:32
|
(1) ошибся Групп и элементов
|
|||
6
asder117
01.10.19
✎
12:32
|
(4) Это я уж понял. (3) мои сами толком не могут определиться что хотят..задачу сказали а думай как хочешь..
|
|||
7
Fish
гуру
01.10.19
✎
12:35
|
"но раскидать по колонкам так и не получилось" - В СКД же можно сделать.
|
|||
8
asder117
01.10.19
✎
13:07
|
(7) можешь подсказать как и что..что-то не разу с этим не сталкивался
|
|||
9
asder117
02.10.19
✎
08:44
|
поднимем тему может какие мысли на свежую голову появились
Пока обошелся таким способом Имею дерево значений из справочника, имею пустую таблицу значений без колонок Процедура ОбойтиУровеньДереваБезСС(Строки) Для каждого Строка из Строки Цикл //что-то делаем со строкой, например: НомерКолонки = Строка.Уровень(); //Номер колонок групп ИмяКолонкиНом = "ПродукцияНом";//Имя колонки продукции //Сообщить(Строка.Наименование); СтрокаТаблицыИтогов = ТаблицаПоГруппировкам.Добавить(); Если Строка.Строки.Количество() > 0 тогда ИмяКолонки = "группа"+НомерКолонки; //////// КвалификаторыЧисла = Новый КвалификаторыСтроки(100); Массив = Новый Массив; Массив.Добавить(Тип("Строка")); ЧисловойТип = Новый ОписаниеТипов(Массив, , ,КвалификаторыЧисла); ////// Если ТаблицаПоГруппировкам.Колонки.Найти("группа"+ИмяКолонки) <> Неопределено Тогда //Сообщить("Колонка "+ИмяКолонки+" существует."); ЭлементыФормы.ТаблицаПоГруппировкам.СоздатьКолонки(); СтрокаТаблицыИтогов["группа"+ИмяКолонки] = Строка.Ссылка.Наименование; иначе ТаблицаПоГруппировкам.Колонки.Добавить("группа"+ИмяКолонки,ЧисловойТип,ИмяКолонки); ЭлементыФормы.ТаблицаПоГруппировкам.СоздатьКолонки(); СтрокаТаблицыИтогов["группа"+ИмяКолонки] = Строка.Ссылка.Наименование; КонецЕсли; Иначе КвалификаторыЧисла = Новый КвалификаторыСтроки(200); Массив = Новый Массив; Массив.Добавить(Тип("Строка")); ЧисловойТип = Новый ОписаниеТипов(Массив, , ,КвалификаторыЧисла); ////// Если ТаблицаПоГруппировкам.Колонки.Найти(ИмяКолонкиНом) <> Неопределено Тогда //Сообщить("Колонка "+ИмяКолонки+" существует."); ЭлементыФормы.ТаблицаПоГруппировкам.СоздатьКолонки(); СтрокаТаблицыИтогов[ИмяКолонкиНом] = Строка.Ссылка.Наименование; иначе ТаблицаПоГруппировкам.Колонки.Добавить(ИмяКолонкиНом,ЧисловойТип,ИмяКолонкиНом); ЭлементыФормы.ТаблицаПоГруппировкам.СоздатьКолонки(); СтрокаТаблицыИтогов[ИмяКолонкиНом] = Строка.Ссылка.Наименование; КонецЕсли; КонецЕсли; ОбойтиУровеньДереваБезСС(Строка.Строки); КонецЦикла; КонецПроцедуры Если кто-то поправит буду рад увидеть. И конечно тут есть проблема что колонка с элементами выводится по середине а хочется чтобы она появилась в конце...но пока думаю... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |