#0
by kolts23381
Есть Таблица значений. Колонки у нее такие: категория,родительская категория,наименование категории. Нужно ее перевести в дерево значений. Какой алгоритм, а то бьюсь - не получается, пока только отсортировал таблицу :). Желательно чтоб работало побыстрее, потому что кое как циклом и я сделаю но будет скорей всего медленно.
#5
by kolts23381
Нет, это не справочник. Таблицу я получил из ТЕКДОКА(система подбора запчастей для автомобилей). Теперь нужно постоить дерево категорий запчастей.
#7
by iceman2112
тогда сделай так чтобы "категория" была индентификатором строки в ТЗ. После первого цикла посчитаешь уровень вложенности для каждого элемента и максимально вложенный элемент, потом начнешь строить дерево с самого верхнего
#9
by iceman2112
Затупил, 300х2, после первого цикла сортируем во уровню вложенности или передаем таблицу в запрос и группируем по уровню вложенности, и после второго цикла уже получаем дерево
#11
by kolts23381
Категория и родительская категория это числа а наименование это соответственно строка.
#13
by kolts23381
Кое какие подвижки есть, правда сделал по другому. Обычно когда что то долго не получается лучше оставить на завтра, но хочется добить. Сейчас другой косяк. Есть на форме элемент таблица значений. Тип значения - деревозначений, то есть именно здесь я и хочу отображать свое дерево. но мне нужно чтоб отображалась только одно колонка, в переменной деревозначений у меня 3 колонки. Добавить колонку в сам элемент не срабатывает, создатьколонки - создает 3 колонки. Попытался видимость колонок устанавивать в ложь но тогда вообще дерево не работает пропадают плюсики. КАК быть?
#16
by kolts23381
2 года писал запросы изучая нюансы по мере необходимости, но сейчас не знаю как это сделать :).
#17
by Zhuravlik
"Есть на форме элемент таблица значений. Тип значения - деревозначений," - так и не понял, о чем это... Как-то так:
#18
by Souvenire
ТЗ из ТЧ документа? тогда типизация не нужна, можно как здесь: Про типизацию здесь: пример запроса в
#19
by GANR
В кои веки 1С-запросы (ИЕРАРХИЯ) помогали преобразовать таблицу вида (Отец, Сын, Поле1, поле2...) в дерево значений? СКД с Хрусталевским примером на 323 странице - это может быть, но я бы для решения этой задачи другой подход использовал. Для этого нужна РЕКУРСИЯ, на вход которой подаются "корневые" строки ТЗ - строки в которых Отец = Пусто, ну а далее - ищем для каждой строчки дочерние строки (где сын = отец, внук, правнук и пр.). Смысл понятен? Нагуглить сможешь?
#21
by GANR
Если иерархия загнана в справочник или если дерево имеет фиксированный уровень вложенности - это поможет, но в топике ситуация явно другая.
#22
by kolts23381
Первым делом я гуглил. Так как когда у меня были деревья по программе в универе деревья я был далек от программирования и все списал то тему не усвоил. За 2 года эта надобность возникла в первый раз. Можно конечно отбросить мою обработку и погрузиться в дебри деревьев, но не сильно хочется. Пока сделал вот так, предварительно отсортировав таблицу по значению родительскаякатегория. КонецЦикла; Вроде работает, буду проверять на предмет непредвиденных багов.
#26
by Souvenire
"фиксированный уровень вложенности" - это откуда? динамически изменяющееся количество колонок? сейчас пять, а потом 28?
#28
by kolts23381
Нет это значит что у одной строки может быть 3 подстроки а у другой 6 а еще одной ни одной. Вложенность относится к строкам. Запросом из не получилось. Появляются иногда какие то 3 строки не в том месте.
#29
by Souvenire
каждое поле, ИТОГИ по которой у тебя в запросе - в порядке следования и будут ветвями дерева. Я не понимаю о чем вы говорите.
#31
by kolts23381
По моему функция ДеревоКатегорий.Строки.НайтиСтроки(СтруктураПоиска,Истина) Ищет только в непосредственных потомках
#34
by iceman2112
Я же тебе предложил отличный вариант, чтобы не заниматься такой ерундой типо, НайтиСтроки, сделать идентификатором индекс категории она же - у тебя поле "категория"
#35
by Zhuravlik
Из описания в я сделал вывод о трех уровнях вложенности. И если таблицу значений нужно превратить в дерево - святая моя уверенность - в восьмерке только запросом. И быстрее, и проще для понимания. Подобной проблемой я и сам страдал, когда сидел на клюшках - - вот до чего дошел в итоге. Это по-сути и есть преобразование плоской таблицы в дерево значений, с произвольным количеством группировок. И то, в итоге пришел к индексированной таблице которая раз и навсегда отучила страдать всякой фигней :)
#36
by GANR
Тогда вопрос: как указать запросу в секции ИТОГИ по какому полю строить иерархию неограниченного уровня вложенности? С иерархическим справочником то просто - там платформа сама все определит.
#37
by GANR
+ Да и какой это мазохизм - простенькая задачка требующая понимания рекурсивного механизма. Только и всего.
#38
by Zhuravlik
"неограниченного уровня вложенности" - в исходном условии не было таких слов. Для этого либо динамически формировать текст запроса, либо конечно рекурсией. С рекурсией дольше. И код сложнее.
#39
by kolts23381
Все не сплю, ковыряю. В общем проблема в том что дочерний узел создается раньше родительского это происходит из за того что индекс у него меньше чем у родительского. Надо либо нормализовать таблицу либо что-то другое думать. В принципе я так и думал что так может быть. Так и не дошли руки до твоего способа из поста , не разобрался я в нем пока.
#40
by GANR
Вот динамически текст запроса строить ни за что бы не стал в подобных ситуациях. Рекурсии сколько помню реализовывал - всегда выходили 20-30 строчек. Посмотри пункт 22 в топике - может на идеи натолкнет. ЗЫ могу сам написать, но хочу чтобы автор поднялся в программировании на ступеньку выше.
#41
by kolts23381
Из поста код работает но вылазят ошибки тогда когда ид категории меньше чем ид его родителя. То есть категория создается раньше чем ее родитель. В моем конкретном случае такого почти нет. Так как время поджимает я или оставлю так либо сделаю второй проход который будет это устранять.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- V8: Дерево значений
- Как быстро выгрузить таблицу значений в дерево значений?
- Как выгрузить результаты запроса в дерево значений
- Дерево значений, в Таблицу значений
- Быстро "выгрузить" дерево значений в таблицу значений
- Выгрузить запрос в дерево значений на форме?
- Как выгрузить дерево значений в таблицу значений?
- Список значений - Таблица значений - Временная таблица
- Скопировать колонки из таблицы значений в дерево значений
- Дерево значений в таблицу значений
- Таблица значений в дерево значений
- Дерево значений и таблица значений в одном реквизите.
В этой группе 1С
- перенос из БГУ 8 1.0 в 2.0
- Использование памяти рабочими процессами на сервере 1с
- Не отображаются данные из запроса в поле ввода
- 1С 8.3 Не отображается кнопка Печать
- Вопрос по ЗУП 2.5 - средний заработок
- 1C и TECDOC
- Тип Значения реквизита документа составного типа. Как?
- Чем отличается Пересчет итогов в конфигураторе от метода ПересчитатьИтоги()
- Посоветуйте принтер для нечастого использования дома
- Обмен УТ-БП: не переносятся склады
- УТ 10.3 Свертка базы (типовая с ИТС)
- RLS - добавление вида доступа
- Выгрузка в xml книги покупок и книги продаж
- v7: Поделитесь утилиткой DBAInfo
- Замена ИНН контрагенту или создать новый с корректировкой долга?
- v7: Патч Kernel 33.
- СКД: как убрать лишние строки после, левого соединения и группировки?
- Можно ли в конвертации данных настроить порядок выгрузки объектов
- Ошибка при получении сведений о внешней обработке при её загрузке
- Оприходование излишков и экспресс-проверка в БП 3.0