#0
by Kloze
встала задачанайти у элемента родителя первого уровня. сделал и через рекурсию и через ПолноеНаименование. Очень интересно можно это сделать через запрос?
#5
by Ёпрст
Смотря где нужно, если в условии запроса - то запросто, а вот группироку не слепишь... а так, на вот:
#10
by Kloze
Задача: Надо перебрать элементысправочника номенклатура и присвоить реквизиту значение(название) родителя верхнего уровня
#14
by Злой Бобр
Выбери нужного родителя на форме и в цикле присваивай всем элементам. Ничего искать ненужно.
#15
by Kloze
неполучимться элементов первого уровня щас 4 тоесть все элементы бубуд разбиты на 4 группы
#17
by Ёпрст
ну и что ? 2 выборки и привет.. первая по группам верхнего уровня, вторая по вложенным элементам этих групп и привет.
#18
by Kloze
ну допустим элементнаходиться на 6 уровне как мне найти его родителя 1 уровня в запросе
#19
by Sadovnikov
Select From Дерево_Номенклатура Дерево Left Join спрНоменклатура Товары On Товары.ID = Дерево.PerentID Where Дерево.ID = @идТовар And Товары.УровеньИерархии = 1
#23
by Злой Бобр
Для тех кто нечитает ЖКК - ПринадлежитГрупе, Использоватьродителя, ... Вариантов куча, но ты упорно флудишь вместо чтения мануала.
#28
by Ёпрст
Зачем это вообще знать ? 2 выборки (вложенные друг в друга): первая по Группам самого верхнего уровня, вторая по вложенным элементам первой выборки.. всё.
#29
by Sadovnikov
Так все-таки - чем некошерно-то? И как ты себе представляешь такую вьюху? Если элемент справочника находтся на 6-ом уровне, в этой таблице будет 6 строк.
#31
by ДенисЧ
Некошерно лишними действиями при записи. А вьюха - например с полями родитель1 - родитель9...
#33
by Sadovnikov
Эта избытычность данных и, соответственно, лишние действия скуля при записи элемента справочника - такие крохи по сравнению с тем, какой получаем выигрыш при построении отчетов... "А вьюха - например с полями родитель1 - родитель9" - можешь показать текст запроса? 9 связываний таблицы самомй с собой? Такое проходили. Тормоза не хилые.
#36
by Sadovnikov
Поверь, замеряли и тестировали. Зато, фильтр по группе выглядит как конфетка: Where ID IN (Select ID From Дерево_Номенклатура Where ParentID = @идГруппы)
#39
by Sadovnikov
Сам подумай - запись элемента справочника, в общем случае, явление редкое. И, самое главное, единичное. А формирование отчета - перелопачивание кучи информации. Так почему бы эту самую информацию ему (отчету) не подсунуть заранее в удобоваримом виде. Поверь, от этой таблички получаем весьма существенные преимущества.
#40
by insider
если родитель первого уровня имеет некую смысловую нагрузку (ну например товары отсортированы по направлениям деятельности компании и это и есть группы первого уровня или, скажем, бренды и т.п.) - может имеет смысл добавить поле типа "бренд" или что там еще (и организовать отдельным справочником) и не парить себе мозг? решение оригинально... но может не стоит так усложнять? :) P.S. конечно если ставится задача находить постоянно родительские группы произвольного уровня для справочника с нежесткой структурой (в смысле элементы могут находиться на любом уровне и уровней этих много) - тогда триггеры конечно рулят...
#42
by Sadovnikov
Самый популярный пример - отчет с фильтром по группе товаров, контрагентов. Чёт я не понимаю глубину твоей мысли :) Приведи пример?
#43
by ДенисЧ
я ж грю - каждый случай должен тестироваться на месте. У меня сейчас тут 1с даже к скл не подключается, ибо 2008, а кряки искать лень :-)
#44
by sapphire
При реструктуризации Вашу таблицу одинце убьет. Вы утверждали, что можно одним запросом. Так вот можно ли?
#45
by insider
а обычное ПринадлежитГруппе в данном случае не проще и быстрее? кстати, а зачем именно триггеры? т.е. почему не реализовать отдельным справочником? это удобнее будет в том смысле, что эска херит "инородные" объекты в ряде случаев.
#49
by ДенисЧ
Тогда сначала подумай над программной записью объектов и тем, как не менять половину конфигурации :-)0
#50
by insider
эта мысль мне уже приходила в голову :) ну отлавливать только запись группы, перенос группы в другую... а и все вроде. тот же триггер, только вид сбоку, правда в составе конфы и штатными методами :)
#52
by Sadovnikov
"херит "инородные" объекты в ряде случаев" - в единственном случае. При восстановлении з бэкапа, сделанного 1С-кой. Но мы же не больные люди и делаем бэкапы скулем, а не 1С-кой, не так ли? Ну-ну. Чё-то моя 1С-ка не убивает :) "Вы утверждали, что можно одним запросом" - Я?
#54
by insider
убедил :) помнится romix выкладывал способ перехвата запросов платформы и подмены оных - есть поле для деятельности :) впрочем прав, мой вариант выйдет сложнее
#56
by insider
спасибо, теперь я знаю, что такое триггер :) я о перехвате на уровне именно платформы, ну допустим реализация фильтров по необщему журналу и т.п., т.е. без вмешательства в скуль, а именно расширение функционала стандартных объектов.
#57
by ДенисЧ
Патчинг платформы? Или какие-то классы? но как классы могут перехватить данные из обработки, которая про них не знает?
#58
by Sadovnikov
Нафиг-нафиг... Уж лучше свой журнал нарисовать на табличном поле. Заодно и возможностей больше будет.
#60
by Sadovnikov
Например, дашь пользователю возможность менять местами колонки, прятать ненужные, запоминать все эти настройки.
#61
by Sadovnikov
+ Да и внешний вид получишь гораздо более эстетичный. Глянь, как у нас журнал выглядит: п. 3.
#62
by insider
табличное поле - родственник ТЗ, так? а со скоростью вывода траблов не будет (на большом числе доков)? кстати по сабжу: а вот нижеприведенную методику нельзя применить? здесь: sc21 - некий справочник (игрался на нем), '03117' - код некоего элемента на n-ном уровне иерархии запрос выводит в табличной форме по восходящей всю иерархию, т.е. в последней строке - искомое почему так не сделать? (не спор ради спора, а именно исследовательский интерес)
#64
by insider
+62 а пример для журнала есть (глянуть код, а то не все понятно), самый простой (т.е. не имеющий никакой коммерческой ценности)? :)
#69
by insider
это вообщем-то не нарушение, ибо нелицензией я не занимаюсь, а заставить работать под 2005-м скулем - вообщем-то не нарушает ничьих прав, уже обсуждали здесь :)
#70
by Sadovnikov
В базе 14.5 лямов документов. Полет нормальный. На запрос завтра гляну - сейчас и некогда и башка уже не варит :( Неа, нету. По многим классам раскидан. Есть пример справочника, в разделе "Скачать". А что именно не понятно?
#71
by insider
.2 с какой стороны подходить к табличному полю :) я просто не юзал его как-то вот так вот получилось...
#74
by insider
+62 пример вывода всех "детишек" выбранного родителя (в данном случае, подставляется код такого родителя, что непринципиально, конечно) результат действия такого запроса можно юзать например через выгрузку во временную таблицу и проверки в другом запросе на вхождение в эту таблицу айдишника элемента:
#75
by insider
+74 ессно кроме поля ID нам ничего не надо, просто для наглядности оставил код и наименование может кому-нить поможет :)
#76
by Sadovnikov
А зачем в каждом отчете зачтавлять скуль это делать? Если это можно сделать 1 раз и пользоваться?
#81
by insider
я может чето путаю, но разве триггер "задним числом" отработает? триггеры же у тебя на запись и изменения стоят, так? ну а если все уже записано? конечно можно заполнить таблицу однажды и потом она будет дополняться действиями триггеров... мне больше по душе вариант без "левых" объектов в базе (насколько это возможно и допустимо и не в ущерб производительности)
#82
by insider
еще мой вариант... мне кажется более гибким: например ставим произвольный множественный фильтр по справочнику (группы, элементы - все вперемешку) - подставляем в условие перечень выбранных групп и элементов и получаем все элементы последнего уровня для фильтрации (ессно надо будет исклюить повторения средствами скуля)
#83
by insider
+82 кстати: я таки пытаюсь ответить на сабжевый вопрос :) по условию требуется одним запросом найти родителя первого уровня, по сути раскрутить все дерево - решение приведено и именно одним запросом без доп. действий :)
#84
by Sadovnikov
Создал триггер и в функции перехода на новую версию прописал апдэйт каждого элемента справочника. Таблица заполнена. Твой вариант, скорее всего, по скорости проиграет. А с таблицей и множественный фильтра на ура делается:
#85
by insider
.1 ну да, я это имел ввиду. в принципе не настолько и сложно, скорее мне кажется геморным, упрощать люблю :) но решение, безусловно, хорошее вот только интересно, как по скорости в сравнении :) рекурсия должна выйти быстрее кучи джойнов, но вот насколько...
#86
by insider
.2 хотел уточнить: в ту хитрую таблицу ты проставляешь только родителей первого уровня для всех элементов или я недопонял? т.е. если у нас ID1 - ID2 - ID3 (где второй и третий - группы, расположены матрешкой) - что записывается в таблицу-дерево?
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Как запросом найти пустые группы справочника ?
- SQL запросом хочу получить родителя 1 уровня справочника
- Как найти точку диаграммы ганта? (метода Найти() нет)
- Возможно ли одним запросом выбрать элемент и его родителя верхнего уровня?
- Как запросом найти два документа с одинаковыми ТЧ?
- Как получить родителя первого уровня?
- Найти первую неоплаченную накладную одним запросом УТ 10.3
- Получить родителя верхнего уровня запросом
- как запросом получить строки табличной части родителя элемента?
В этой группе 1С
- СКД: СКД: как программно или в схеме компоновки передать значение параметра для запроса?
- v8: Выборка оборотов по регистру бухгалтерии: как лучше задать интервал?
- Нумерация В РИБ
- Справка во внешней обработке
- СКД: Как в СКД у системного поля – НомерПоПорядку убрать сквозную нумерацию
- 1:С Специалист-консультант ЗУП
- Лицевой счет (Т-54) для БП8
- СКД: Как в запросе взять ячейку из табличной части документа?
- JSON пакеты и 1С 77
- Запись BLOB-полей из 1С через OO4O.
- подскажите параметры ДвиженияССубконто()
- Неверные параметры "РАЗНОСТЬДАТ" в построителе отчета!
- Подскажите ...УПП Как работать с неотфактурованными поставками в УПП?
- СКД: СКД: Условное оформление графика без макета
- v7: Каким документом сделать провоодку 19.07 - 19.03? (УПП)
- СКД: Пересечение 2 наборов данных в СКД.
- РегистрСведений.МенеджерЗаписи - метод "Прочитать"
- Посоветуйте супер ноутбук не дороже 20 тыр(Почему большинство ноутов с Linux)
- УТ 10.3 Недостачи после инвентаризации
- v7: мелкие проблемы ТиС (ред.9.2)