#10
by Lama12
Варианта из должно хватить для восстановления из таблицы - дерева. Вариант из удобно читабелен человеку. Что нужно-то?
#13
by Irbis
Можно но сначала придётся определить максимальный уровень вложенности, чтобы количество колонок определить
#14
by akaBrr
это сделать легко, опираясь на то что xml есть теги :), если тег содержит значение, то его используем как колонку в таблице, соответственно добавляем если колонки нет
#20
by Irbis
Если я правильно понял, тебе нужно добираться до "листочка" (ветки в которой нет больше ничего) и только такие листочки складывать в таблицу. А дальше сортировка
#26
by akaBrr
я так думаю, нужно установить связь между колонкой таблицы и путем по которому получается значение, получается двухпроходной алгоритм, сначала создаем колонки и фиксируем связи, потом заполняем таблицу
#27
by Ursus maritimus
Хорошо. Чем тебе дерево не таблица? Какие у таблицы свойства и методы, которых нет у дерева? Чего в дереве не хватает?
#28
by Irbis
Значит не понял, но тогда в 18 не содержится строк для отдельных листочков из веток верхнего уровня
#29
by akaBrr
ну у дерева разной длинны ветки, и в общем случае в узлах могут лежать не соответствующие друг другу данные, обсуждается дерево не из 1С 8
#31
by fedoss
Функция РазобратьУзел(ТекущийУзел, Уровень, ТЗ) ТЗ.НоваяКолонка; Уровень = Уровень + 1; ВсегоДобавленоСтрок = 0; Если ЕстьПодчиненныеУзлы Тогда Для Каждого ПодчиненныйУзел Из ТекущийУзел Цикл ДобавленоСтрок = РазобратьУзел(ПодчиненныйУзел, Уровень, ТЗ); ВсегоДобавленоСтрок = ВсегоДобавленоСтрок + ДобавленоСтрок; КонецЦикла ТЗ.Заполнить(ЗначениеТекущегоУзла, ТЗ.КоличествоСтрок - ВсегоДобавленоСтрок + 1, ТЗ.КоличествоСтрок, Уровень); Возврат ВсегоДобавленоСтрок; Иначе ТЗ.НоваяСтрока; ТЗ.УстановитьЗначение(ТЗ.НомерСтроки, Уровень, ЗначениеТекущегоУзла); Возврат 1; КонецЕсли; КонецФункции ТЗ = СоздатьОбъект("ТаблицаЗначений"); РазобратьУзел(Корень, 0, ТЗ);
#33
by GANR
Вот так нужно обходить дерево: СтекВызовов = Новый Массив; СтекВызовов.Добавить(Новый Структура("НаборСтрок, Курсор", ТвоеДерево.Строки, 0)); Пока СтекВызовов.Количество <> 0 Цикл ТекущиеПараметры = СтекВызовов[СтекВызовов.Количество-1]; Если ТекущиеПараметры.Курсор <= ТекущиеПараметры.НаборСтрок.Количество - 1 Тогда ДочернийНабор = ТекущиеПараметры.НаборСтрок[ТекущиеПараметры.Курсор].Строки; ТекущиеПараметры.Курсор = ТекущиеПараметры.Курсор + 1; // здесь строить ТЗ Если ДочернийНабор.Количество <> 0 Тогда СтекВызовов.Добавить(Новый Структура("НаборСтрок, Курсор", ДочернийНабор, 0)); КонецЕсли; Иначе СтекВызовов.Удалить(СтекВызовов.Количество-1); КонецЕсли; КонецЦикла; Ну а как получить текущий и родительский узлы в точке "// здесь строить ТЗ" - придумайте сами :-).
#34
by GANR
+ Пардон, ТЗ надо строить перед строчкой "ТекущиеПараметры.Курсор = ТекущиеПараметры.Курсор + 1; "
Тэги: Математика и алгоритмы
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Таблицу значений выгрузить в таблицу печатной формы
- Как таблицу Excel передать в таблицу значений?
- Как таблицу значений значений превратить во временную таблицу SQL ?
- Как программно раскрыть ветку дерева значений в табличном поле дерева значений?
- Алгоритм сортировки с помощью дерева выбора
- Пятничная задачка. Алгоритм преобразования ряда чисел в строку.
- Задача написать оптимальный алгоритм преобразования частоты
- Передаю таблицу по com соединению, используя сериализацию. Как получить таблицу назад
В этой группе 1С
- ЗУП: ФСС НС по подразделениям
- Как в СКД отчете вывести нижний колонтитул?
- VBA Excel 2007 не показывать окно ввода пароля
- Кто знает, как пароль на SDF узнать/убрать
- v7: V7.CreateObject("БухгалтерскиеИтоги") в разрезе Договора
- Документ Передача товаров. УПП
- Можно ли использовать версию Office Home and Student в коммерческих целях?
- 1с розница/розница магазин быт техники и сс
- Форма объекта БД. ПриЧтенииНаСервере+ПриСозданииНаСервере VS ПриИзмененииДанных
- УФ Кнопка с выпадающим списком - как лучше сделать?
- Как в ПриЧтенииНаСервере определить, что ПриСозданииНаСервере еще не вызывалось
- Модуль ОбщегоНазначения
- УФ Динамический список. Настройка высоты строк
- Как перенести определенную строку поля ввода, на новую строку ?
- Отчет суточный без гашения
- подскажите УФ, как передать параметр в условное оформление
- Оплата платежной картой Розница 1.0
- SQL - как узнать у каких именно таблиц нужно почаще обновлять статистику ?
- 1С8 ЗУП, 1С77 ЗиК. Удержание по исполнительному листу
- УТ. Изменить движения в регистре, не перепроводя документы. Как правильно?