Как определить родителя элемента... любой вложенности по иерархии .. #336930


#0 by Solomon2003
Как в справочнике определить первый уровень (самого верхнего родителя) для элемента любой вложенности... например элемент 5 уровня...
#1 by Лис в курятнике
#2 by Smallrat
Я помню - была такая тема. Все начали меряться кто сделает круче. Потом пришел не помню кто и выложил код в одну строчку, такой степени завёрнутости, что спор сразу умер.
#3 by Таня
а можно еще по полному коду. первое число до / будет кодом самого верхнего родителя
#4 by Solomon2003
ага... я сча тож начал ваять фигню многострочную... хорошо что спросил )
#5 by Ёпрст2
#6 by Solomon2003
а как получить все родители элемента.. вне зависимости от уровня?
#7 by Solomon2003
и сгруппировать элементы, у которых совпадает родитель ?
#8 by Лис в курятнике
ну а чем тебе не устраивает?
#9 by Лис в курятнике
ты чего хочешь то, толком объясни
#10 by Solomon2003
в документе есть 30 товаров в табл части... мне нужно их распечатать с учетом иерархии...
#11 by Solomon2003
чет типо етого...
#12 by Devel-1C
ЭлмСправочника.ПолноеНаименование
#13 by Devel-1C
Выведет наименование всех родителей через "/" (или "")
#14 by Devel-1C
Если нужно найти только наименование родителя.
#15 by КонецЦикла
1С++, ИТЗ, Группировать с параметром &
#16 by Devel-1C
Можно и без 1С++. Через запрос.
#17 by КонецЦикла
Некузяво + док. должен быть записан
#18 by Devel-1C
Это да. И моим способом (через .ПолноеНаименование, формирование ТЗ, сортировка ТЗ) получится немного громоздко, но работать будет.
#19 by Solomon2003
а пример есть???..
#20 by azernot
Возьми обработку ПечатьПрайса в комплексной или ТиС.. Вот тебе пример вывода по иерархии.
#21 by FanatToNight
ЗиКа есть? возьми оттуда глРазложить(Стр,Разделитель) возвращает СписокЗначений, то, что тебе нужно
#22 by insider
если просто вывести из дока товары в иерархическом списке, то проще вот что: - выгрузить табличную часть в ТЗ - добавить колонку с полным кодом (или наименованием, но код имхо точнее будет, если есть одинаковые названия групп) - заполнить эту колонку перебором ТЗ - отсортировать по данной колонке все, элементы уже по иерархии отсортированы. если надо выводить имена групп, тогда нам в любом случае понадобится полное наименование, ну а слэшики в нем заменить и выкинуть в СЗ - пустяк и играйся потом с иерархией любой степени вложенности P.S. а пример рисовать лень, и так все расписал
#23 by insider
можно и без ЗиКа: так получаем СЗ из строки наименований, разделенных "/" а переделать под другой разделитель, думаю, не проблема :))
#24 by FanatToNight
спасибо! ценю.. :)
#25 by Devel-1C
Нам нужен только вывод наименований родителей, поэтому ПолноеНаименование Ну а если с кодом, то тогда для получения элемента придется еще и искать по коду.
#26 by Дядя Васька
Умгум... Пока в наименовании "/" не воткнут... Правильный ответ в
#27 by Devel-1C
Кстати можно обойтись без выгрузки ТЧ в ТЗ, а сразу заполнять ТЗ перебором ТЧ: Цикл по строкам документа ...
#28 by Devel-1C
Кстати да, но при заполнении колонки "Родитель" имя товара можно обрезать.
#29 by insider
в коде тоже "/" может быть воткнут? ;) можно, просто незачем :)
#30 by Devel-1C
Ну а от последнего "/" можно избавится разными способами.
#31 by insider
и ваще: запретить в конфе ввод прямых слэшиков в наименовании - не проблема и не помешает никому. и правильный ответ имхо ВСЕГДА уменьшить количество циклов или их вовсе избежать. особенно если не платят построчно и/или за медленно работающий код.
#32 by Devel-1C
Чтобы лишние операции по выгрузке и перебору не делать.
#33 by insider
чтобы обрезать можно выкинуть последний элемент списка, чтобы убрать ВСЕ лишние проблелы: к моему СтрЗменить добавить (поверх, в той же строке) СтрЗаменить(ВыражениеКотороеБыло," ","") и незачем плодить строки :)
#34 by Devel-1C
Вот еще:
#35 by insider
почему лишние? имхо выгрузка будет быстрее заполнения всех колонок, а не только служебной. а операций будет одинаково по сути
#36 by Devel-1C
В последнем случае точнее будет СокрП(...), тк в начале наименования могут быть пробелы. А вообще как делать это дело вкуса.
#37 by Devel-1C
Если есть желание попробуй создать документ на 500 позиций и проверь время работы в отладчике.
#38 by insider
эт верно, дело вкуса. как на мой вкус: минимум циклов и рекурсивных вызовов (т.е. не юзать без надобности), минимум условий, никаких безусловных переходов, разумеется, тотальный отлов исключений, все, что возможно написать в одну строку - втиснуть в одну и не делать больше. кстати лучше КЗК защитит конфу :))
#39 by Devel-1C
По моему опыту всегда было быстрее через перебор.
#40 by insider
когда-то проверял, насколько помню выгрузка лучше. но я мог забыть, а мог перепутать :) на практике юзаю выгрузку, не мешало пока...
#41 by insider
тут еще от памяти зависит: если ее дофига и быстрая, то работа с большими ТЗ в оперативке отлично происходит, но если ее маловато... вот тогда проблема
#42 by Devel-1C
Если возникают сомнения, их всегда развеет таймер отладчика.
#43 by insider
у меня сегодня лень проснулась :))
#44 by Devel-1C
А у меня пицца приехала )))
#45 by insider
у вас рабочий день? а у нас выходные, у некоторых вся неделя... (ну я о фикси конечно)
#46 by Devel-1C
у нас к сожалению да (да не забанят меня модераторы). пойду я немного работу поработаю. Делов еще до...
#47 by Shaman100M
Сортировка по полному наименованию может не совсем корректно сортироваться в случае "группы сверху", - группы и элементы одного уровня могут пойти вперемешку, по алфавиту, - элементы вложенных уровней, соответственно, тоже. Решается вот так:
#48 by Devel-1C
Кстати да. А еще вместо ТЗ лучше использовать список значений.
#49 by Devel-1C
Понедельник вечер ... в я замутил ... ...
#50 by Solomon2003
а если три тз а потом сравнивать родителей... или в одной тз три колонки если спр 3 уровня.. например
#51 by Devel-1C
конечно все с учетом нижесказанного ...
#52 by Devel-1C
У тебя все товары гарантировано 3-го уровня?
#53 by Solomon2003
а помогите... я буду писать, а вы попровляйте если че не так
#54 by Solomon2003
да
#55 by Solomon2003
#56 by Solomon2003
#57 by Solomon2003
ау...вы где.. ???
#58 by sapphire
#59 by sapphire
#60 by Devel-1C
Нет. 3 ТЗ это слишком. Достаточно будет и одной ТЗ. ...
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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