Определение уровня номенклатуры в ТЗ #522464


#0 by belarus
Есть ТаблЗнач, в которой одна колонка Номенклатура. В ней 1000 строк. Как определить Номенклатуру с наибольшим Уровнем???
#1 by belarus
Ссори.. не 7, а 8.... но разницы нет... алгоритм главное ))
#2 by povar
уровень
#3 by belarus
) из ТЗ ??
#4 by Maxus43
ТаблЗнач.Количество ?
#5 by Aloex
может в дереве?
#6 by Maxus43
ТаблЗнач[ТаблЗнач.Количество-1].Номенклатура
#7 by Andr10K
запросом с временной таблицей не предлагать?
#8 by Maxus43
Предложи более понятное описание лучше. Какой уровень в ТЗ то?
#9 by belarus
Уровень номенклатуры в справочнике
#10 by Happy Bear
ПолныйКод
#11 by Andr10K
Создать запрос  "Выбрать * ИЗ &ТЗ Поместить ВремТаб". Потом соединить с таблицей спр. Номенкл. по ссылке и сортировать
#12 by aleks-id
и чо тебе это даст?
#13 by aleks-id
как вариант - добавить к ТЗ колонку Уровень, заполнить каждую строку ТЗ.Уровень = ТЗ.Номенклатура.Уровень потом запрос к ТЗ с функцией МАКСИМУМ(ТЗ.Уровень)
#14 by Maxus43
уровень запросом не определяется. Только перебором всей ТЗ и запоминанием максимального уровня, имхо
#15 by Andr10K
В запросе можно замутить рассчет уровня. Навскидку - проверять на NULL поля Ссылка.Родитель Ссылка.Родитель.Родитель Ссылка.Родитель.Родитель.Родитель ... Известно же какая макс. вложенность
#16 by Maxus43
не извращайся, в коде перебери или
#17 by Andr10K
Если колонку уровень добавлять - просто тогда отсортировать тз
#18 by aleks-id
хотя бред с запросом. можно на этапе заполнения уже определить максимум даже без колонки...
#19 by Andr10K
Если тз уже готова - имхо запросом быстрее и по Канону 1С
#20 by Maxus43
Где делаеш ТЗ, там и уровень проставляй. Запросом Уровень не получиш, только извращаться. По канонам 1с запросом этого не сделать
#21 by hhhh
ТЗ.Номенклатура.Уровень - это ведь тоже запрос, обращение к базе. Получается 1000 запросов в цикле.
#22 by Maxus43
Предложения?) Как в запросе Уровень вытащить? - имхо не по христиански вобще
#23 by Andr10K
Я православный...
#24 by Andr10K
Потом выгрузить в дерево и с ним изголяться...
#25 by Maxus43
православнй извращенец)
#26 by Andr10K
Как по-вашему работает метод Уровень?
#27 by Maxus43
Пути 1с неисповедимы... Сделай как в , именно запросом надо не жить не быть?
#28 by aleks-id
лучше как в ибо все равно обходить таблицу. так нафига еще потом запрос делать если мы на этапе обхода уже вычислим уровень?
#29 by aleks-id
ага. выгрузить в дерево и его обойти в цикле да? супер решение хДДДДДДД
#30 by Andr10K
Самому стало интересно. Написал обработку с ТЧ, заполняемой номенклатурой. Сравнил метод "запросом" и "Уровень". Запросом раз в 5-7 быстрее ). Запросом удается проверять до 75 уровней, на 76 вылетает 1С... Причина мне не известна, т.к. глубина обращений "через точку" по документации не ограничена. Может дело в слишком длинной строке? Текст модуля формы:
#31 by Andr10K
В файловом варианте работает до 75 уровней, в сервером до 10. MS SQL SE: "Case expressions may only be nested to level 10" :( Выигрыш в скорости быстро растет при увеличении кол-ва элементов справочника. 6000-7000 - в 5-7 раз, 13000-14000 - в 15-20 раз.
#32 by Andr10K
Без вложенности. На 200 уровнях проверял. Процедура КнопкаВыполнитьНажатие(Кнопка)
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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