Рекурсивное заполнение элементов иерархического справчника #371526


#0 by mmmstr
вопрос: как реализовать с помощью рекурсии заполнение 6-ти уровневого справочника. при чем атрибут, требующий заполнения, текстовый и имеет следующий формат: например для элемента первого уровня: 01.00.00.00.00.00
#1 by mmmstr
так вас устроит, господа?
#2 by Привратник
// примерно так, правда отбор по родителю весьма неоптимален
#3 by mmmstr
то есть все-таки в любом случае цикл по всем элементам справочника?... понятно. спаисбо. именно этот вопрос меня и интересовал.
#4 by vde69
писал с листа, без проверки
#5 by Ковычки
можно без цикла, но все равно это цикл
#6 by Дядя Васька
КонецЕсли; Если я правильно понял, надо замутить что-то типа код в пределах подчинения, только вместо подчинения родитель, и кодов вообще нет никаких (или есть но левые), и все нужные надо рассчитать...
#7 by mmmstr
vde69, какое решение интересное! попробую сейчас!
#8 by Дядя Васька
Можно не по всем, можно только по первому уровню, а дальше рекурсией нырять. Скорее всего как-то так и надо.
#9 by Дядя Васька
но неправильное ))
#10 by mmmstr
если с праками дядюшки, то рекурсии тут нет
#11 by vde69
по оптимальности надо дерево обходить, но там придеться записывать в транкзации по веткам, а вероятно требуеться для разовой обработки! по этому я и предложил более читабельный и простой (но не оптимальный по скорости) вариант
#12 by mmmstr
#13 by vde69
можно вообще в 2 строки все сделать 1 строка получить волный код 2 строка замена разделителей на память синтаксис не помню а клюшек под рукой нету
#14 by Ковычки
все в одной процедуре, без циклов
#15 by Ковычки
рекурсивной процедуре
#16 by mmmstr
да дело втом, что нет кода то! эта разовая обработка и должна заполнить поле Шифр во всех элементах справочника. надо из первого уровня доставать остальные - но как?
#17 by Дядя Васька
Это институтская задачка, нужна именно рекурсия.
#18 by mmmstr
нужна именно рекурсия
#19 by Привратник
Первый цикл не по всем элементам, а только по неимеющим родителя - элементам и группам верхнего уровня. Далее берем группы верхнего уровня и для каждой смотрим подчиненные ей группы и элементы. Для элементов считаем реквизит, группы передаем снова в рекурсию. В не цикл по всем элементам справочника, а отбор элементов справочника, имеющих определенного родителя.
#20 by mmmstr
согласна, что первый цикл только по неимеющим родителям. как посмотреть подчиненные группе элементы, т оесть нижние?
#21 by vde69
20 еще не сделала? перем сп;
#22 by Ковычки
вот вам и вся рекурсия ))))
#23 by mmmstr
тут постоянно пусто. это раз. второе: Если ПустоеЗначение(эл.Родитель)=0 Тогда - вот тут сразу же зарубается и все - Шифр мой пустой
#24 by Дядя Васька
Да не то это все... Держи, отлажено:
#25 by Дядя Васька
+ Ну вместо Сообщить там просто присвоение поставь, и Записать добавь..
#26 by sam_sam
лучше всех, тока список зачем? ей же не это надо. или это как пример?
#27 by mmmstr
ага список не нужен, его можно использовать, когда без рекукрсии - стэк своеобразный. сейчас, дядюшка, посомтрю:)
#28 by mmmstr
Спр.ИспользоватьРодителя(Родитель.ТекущийЭлемент);    КонецЕсли; - даа! во тут нет косорезика! ай ,да Василий!
#29 by mmmstr
спасибо!
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С