|   |   | 
| 
 | получение самого верхнего родителя в справочнике | ☑ | ||
|---|---|---|---|---|
| 0
    
        LivingStar 16.09.14✎ 11:36 | 
        в справочнике есть иерархия
 как в независимости от вложенности получать всегда самого верхнего родителя элемента? | |||
| 1
    
        ДенисЧ 16.09.14✎ 11:37 | 
        циклом     | |||
| 2
    
        Dedal 16.09.14✎ 11:40 | ||||
| 3
    
        Maxus43 16.09.14✎ 11:40 | 
        рекурсией     | |||
| 4
    
        Dmitriy_76 16.09.14✎ 11:41 | 
        полныйКод() не ?     | |||
| 5
    
        akaBrr 16.09.14✎ 11:41 | 
        я бы сначала получил группы 1 уровня, а потом проверял на вхождение     | |||
| 6
    
        ObjectRelation Model 16.09.14✎ 11:43 | 
        в 1С это сделано через Ж     | |||
| 7
    
        ИС-2 16.09.14✎ 11:45 | 
        запросом вывести иерархию, взять первый элемент     | |||
| 8
    
        DmitriyDI 16.09.14✎ 11:46 | 
        РодительВерхнегоУровня (TopLevelParent)
 Использование: Чтение и запись. Описание: Тип: СправочникСсылка. Содержит родителя верхнего уровня. Доступность: Толстый клиент. | |||
| 9
    
        Maxus43 16.09.14✎ 11:48 | 
        (8) забыл добавить
 Расширение табличного поля списка справочника (Catalog list table box extension) хрен оно где работает, кроме списка | |||
| 10
    
        LivingStar 16.09.14✎ 11:52 | 
        есть элемент, вывожу его, что бы на его место вывести родителя верхнего уровня, только применять запрос если?     | |||
| 11
    
        ObjectRelation Model 16.09.14✎ 11:53 | 
        какая задача в целом?     | |||
| 12
    
        Maxus43 16.09.14✎ 12:02 | 
        (10) запросом это как раз фиг получится нормально     | |||
| 13
    
        LivingStar 16.09.14✎ 12:07 | 
        (11) выбран контрагент, он может быть в разной вложенности находиться, но самый верхний каталог это город, название папки, нужно её получить.     | |||
| 14
    
        Maxus43 16.09.14✎ 12:08 | 
        (13) контактная инфа есть у контриков... странный учет у вас     | |||
| 15
    
        Maxus43 16.09.14✎ 12:09 | 
        см с (1) по (5), выбирай     | |||
| 16
    
        LivingStar 16.09.14✎ 12:09 | 
        там структура каталогов сделана     | |||
| 17
    
        Эльниньо 16.09.14✎ 12:11 | 
        В семёре сделал бы:
 1. Рекурсия 2. ПолныйКод() | |||
| 18
    
        el7cartel 16.09.14✎ 12:12 | 
        (16) ну а в чем проблема рекурсию применить?     | |||
| 19
    
        el7cartel 16.09.14✎ 12:12 | 
        где-то тема даже с примером есть...     | |||
| 20
    
        ДенисЧ 16.09.14✎ 12:16 | 
        А рекурсия-то тут зачем...     | |||
| 21
    
        LivingStar 16.09.14✎ 12:28 | 
        (20) в справочнике контрагенты каталог, в нем каталоги города, а в них может быть элементы в разной вложенности
 получается нужно получить название каталога второго с верху по иерархии | |||
| 22
    
        ДенисЧ 16.09.14✎ 12:36 | 
        (21) Я спрашиваю, не что получить, а зачем применять рекурсию ))     | |||
| 23
    
        LivingStar 16.09.14✎ 12:39 | 
        (22) знаете как это правильнее получить? Что нужно применить?     | |||
| 24
    
        ДенисЧ 16.09.14✎ 12:42 | 
        (23) To iterate is Human, to recurse Devine
 Ты же не считаешь себя богом? | |||
| 25
    
        Пушкин 16.09.14✎ 12:47 | 
        Одним запросом, слабо?!     | |||
| 26
    
        Андрюха 16.09.14✎ 12:50 | 
        Да можно ж не запросом, а в цикле, пока ЗначениеЗаполнено(ТекущийРодитель.Родитель), не?     | |||
| 27
    
        Drac0 16.09.14✎ 12:52 | 
        (26) И зачем запросы в цикле делать? Лучше запросом: и быстрее и проще.     | |||
| 28
    
        anatoly 16.09.14✎ 12:53 | 
        (25) если можно условие:
 ГДЕ &контр В ИЕРАРХИИ(спр.ссылка) И спр.ссылка.родитель = &пустая то получится. но не уверен. пробовать лень )) | |||
| 29
    
        Андрюха 16.09.14✎ 12:55 | 
        Да почему в цикле запрос? Я имел в виду:
 ТекущийРодитель = Контрагент.Родитель;
 | |||
| 30
    
        Drac0 16.09.14✎ 12:57 | 
        (29) Ты думаешь, там не запрос? :)     | |||
| 31
    
        Maxus43 16.09.14✎ 12:58 | 
        дарю :)))
 Процедура КнопкаВыполнитьНажатие(Кнопка) РодительВерхнегоУровня = Неопределено; ПолучитьРодителя(Ссылка, РодительВерхнегоУровня); КонецПроцедуры Процедура ПолучитьРодителя(Элемент, РодительВерхнегоУровня) Если Не Элемент.Родитель.Пустая() Тогда ПолучитьРодителя(Элемент.Родитель, РодительВерхнегоУровня) Иначе РодительВерхнегоУровня = Элемент; КонецЕсли; КонецПроцедуры | |||
| 32
    
        Kamas 16.09.14✎ 12:59 | 
        (30) там все запрос этож бд     | |||
| 33
    
        Kamas 16.09.14✎ 13:00 | 
        (31) цикл лучше рекурсии. Ну по крайней мере мне так в школе говорили))     | |||
| 34
    
        Maxus43 16.09.14✎ 13:00 | 
        научились уже запросом родителя верхнего уровня выбирать?     | |||
| 35
    
        Maxus43 16.09.14✎ 13:00 | 
        (33) зависит от задачи     | |||
| 36
    
        Kamas 16.09.14✎ 13:13 | 
        Стильно модно молодежно :
 Функция ВерхнийЭлемент(Контрагент) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Контрагенты.Ссылка |ИЗ | Справочник.Контрагенты КАК Контрагенты |ГДЕ | Контрагенты.ЭтоГруппа | И Контрагенты.Родитель = &ПустаяССылка"; Запрос.УстановитьПараметр("ПустаяССылка", Справочники.Контрагенты.ПустаяСсылка()); Результат = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = Результат.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл Если Контрагент.ПринадлежитЭлементу(ВыборкаДетальныеЗаписи.Ссылка) тогда Возврат ВыборкаДетальныеЗаписи.Ссылка КонецЕсли; КонецЦикла; Возврат Справочники.Контрагенты.ПустаяСсылка(); КонецФункции | |||
| 37
    
        Крошка Ру 16.09.14✎ 13:18 | 
        (36) Запрос.УстановитьПараметр("ПустаяССылка", Справочники.Контрагенты.ПустаяСсылка());
 Это уже не олдфажно. Молодежно ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка) | |||
| 38
    
        Крошка Ру 16.09.14✎ 13:18 | 
        +(37) *Это уже олдфажно     | |||
| 39
    
        Kamas 16.09.14✎ 13:19 | 
        (37) согласен     | |||
| 40
    
        Сияющий Асинхраль 16.09.14✎ 13:23 | 
        Без проблем. Уровень элемента ты всегда вытащишь, а зная уровень всегда можно программно сформировать запрос. Но, честно сказать, я предпочитаю (29)     | |||
| 41
    
        Сияющий Асинхраль 16.09.14✎ 13:28 | 
        (40)->(34)     | |||
| 42
    
        Килограмм 16.09.14✎ 14:07 | 
        Думаю, (36) лучше (29) если мало групп и\или количество уровней вложенности большое, а так самому (29) больше нравится - проще     | |||
| 43
    
        LivingStar 16.09.14✎ 15:49 | 
        интересно в (31) как то можно задать что бы получить родителя второго уровня     | |||
| 44
    
        Fragster гуру 16.09.14✎ 15:51 | ||||
| 45
    
        Fragster гуру 16.09.14✎ 15:53 | 
        также специально для скорости - я сделал РС с измерением - ссылкой и ресурсами - Уровень, Левое значение, Правое значение     | |||
| 46
    
        Fragster гуру 16.09.14✎ 15:53 | 
        заполнение/обновеление РС в подписке     | |||
| 47
    
        Fragster гуру 16.09.14✎ 15:56 | 
        получение цепочки родителей:
 ВЫБРАТЬ РАЗЛИЧНЫЕ | Иерархия.Ссылка |ИЗ | РегистрСведений.Иерархия КАК Список | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.Иерархия КАК Иерархия | ПО (Список.Ссылка В (&Ссылки)) | И (Иерархия.ЛевоеЗначение <= Список.ЛевоеЗначение) | И (Иерархия.ПравоеЗначение >= Список.ПравоеЗначение) | |||
| 48
    
        Fragster гуру 16.09.14✎ 15:56 | 
        верхние родители - соответственно добавляется условие по Уровень = 1     | |||
| 49
    
        Fragster гуру 16.09.14✎ 15:57 | 
        получение всех детей также моментально, меняем меньше на больше и наоборот. Например в запросах можно использовать такое соединение.     | |||
| 50
    
        Fragster гуру 16.09.14✎ 15:59 | 
        данные для такой иерархии:
 
 | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |