| 
    
        
     
     | 
    
  | 
Как получить значение по иерархии? | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        Boudybuilder    
     16.02.13 
            ✎
    01:54 
 | 
         
        Уже второй раз сталкиваюсь с проблемой. 
  
        Первый раз , когда делал вознаграждения на номенклатуру. Присваивал группе значение , внутри группы какой то группе исключительное значение , и надо было чтобы ... в общем описываю... Группа "телевизоры" - вознаграждение 5 % - ВВК -"" - LG -"" - Sony-"5,5" % Объясняю. По группе телевизоры стоит 5 процентов вознаграждения за все элементы в группе , а телеки Sony вознаграждаются уже дороже. И по них запросом надо получать их процент а не общий. Теперь решаю дело с гарантией. Мобильные телефоны - гарантия 12 месяцев - Сертифицырованые -"" - НеСертефицированые -"3" месяца - Б/У -"2" дня Снова таки , надо запросом получать по всем сертифицированным 12 месяцев , по НеСертефицированые только 3... И тд... Как то так чтобы не пересекались 3 с 12 ... Как получать самую ближайшую иерархию элемента?  | 
|||
| 
    1
    
        MadHead    
     16.02.13 
            ✎
    02:02 
 | 
         
        вообще проблема в проектировании. Надо в таких случаях каждому элементу присваивать значения.     
         | 
|||
| 
    2
    
        Boudybuilder    
     16.02.13 
            ✎
    02:16 
 | 
         
        (1)Спасибо дружище за ответ , но это очень трудоемкое дело таким способом присваивать. Разве что... При создании нового элемента справочника проверять это значение у родителя и заполнять себе же. Но как оно на практике покажет себя?     
         | 
|||
| 
    3
    
        Тролль главный    
     16.02.13 
            ✎
    02:20 
 | 
         
        простой запрос, который выгружается во временную таблицу, потом уже делаем что хотим     
         | 
|||
| 
    4
    
        Boudybuilder    
     16.02.13 
            ✎
    03:37 
 | 
         
        (3) Пример простоты в студию!     
         | 
|||
| 
    5
    
        Web00001    
     16.02.13 
            ✎
    03:48 
 | 
         
        ну например, почему просто нельзя сделать, что то в этом духе? 
  
        Выбор Когда Ссылка.Вознагражедение = 0 Тогда Ссылка.Родитель.Вознаграждение Иначе Ссылка.Вознагражедение Конец  | 
|||
| 
    6
    
        Web00001    
     16.02.13 
            ✎
    04:05 
 | 
         
        Точнее как то так
  
        Выбор Когда Ссылка.Родитель.Вознагражедение = 0 Тогда Ссылка.Родитель.Родитель.Вознаграждение  | 
|||
| 
    7
    
        echo77    
     16.02.13 
            ✎
    05:54 
 | 
         
        (0) Проектируйте.
  
        Присваивайте значение каждому элементу. Реализуйте установку значения для элемента, при записи, если он находится в группе, для которой это значение установлено. все  | 
|||
| 
    8
    
        MadHead    
     16.02.13 
            ✎
    13:10 
 | 
         
        (5) Не лучшая идея в плане производительности. Так как подразумевает запросы в цикле при большой глубине вложенности справочника     
         | 
|||
| 
    9
    
        MadHead    
     16.02.13 
            ✎
    13:13 
 | 
         
        (2) Именно при создании элементу нужно присваивать значение из родителя. Сейчас можешь простенькой обработкой это все проделать и добавить код в справочник при создании элемента. Добавлять вернее в модуль объекта     
         | 
|||
| 
    10
    
        GANR    
     16.02.13 
            ✎
    13:54 
 | 
         
        (0) выборка с итогами по иерархии, да и обойти её просредством рекурсии/стека, других методов просто нету     
         | 
|||
| 
    11
    
        GANR    
     16.02.13 
            ✎
    14:00 
 | 
         
        (11) а если надо не прайс-лист, а конкретный элемент - алгоритмически проще циклом (не скажу, что рациональнее по быстродействию)
  
        ТекЭлемент = НашЭлемент; Пока Не ЗначениеЗаполнено(ТекЭлемент.Цена) И ЗначениеЗаполнено(ТекЭлемент.Родитель) Цикл ТекЭлемент = ТекЭлемент.Родитель; КонецЦикла;  | 
|||
| 
    12
    
        mistеr    
     16.02.13 
            ✎
    14:31 
 | 
         
        В типовых делают циклом (например, счета учета номенклатуры). Видимо не зря.     
         | 
|||
| 
    13
    
        GANR    
     16.02.13 
            ✎
    14:45 
 | 
         
        (12) не зря... иногда нужно пожертвовать производительностью ради алгоритмической простоты     
         | 
|||
| 
    14
    
        France    
     16.02.13 
            ✎
    14:48 
 | 
         
        так, между делом: если кто то, где то, как то перенес товар в неправильную группу??     
         | 
|||
| 
    15
    
        GANR    
     16.02.13 
            ✎
    14:51 
 | 
         
        (14) это как раз просто: даем такую возможность ограниченному  кругу пользователей     
         | 
|||
| 
    16
    
        France    
     16.02.13 
            ✎
    15:04 
 | 
         
        (15) ок, человек из ограниченного круга случайно перепестил в другую группу..     
         | 
|||
| 
    17
    
        GANR    
     16.02.13 
            ✎
    15:31 
 | 
         
        (16) ну и по шеям ему ))) утопиться можно и в ложке     
         | 
|||
| 
    18
    
        Boudybuilder    
     16.02.13 
            ✎
    19:23 
 | 
         
        (14) Уже думал над этим. Тогда может самое мудрое решение будет (2) ?     
         | 
|||
| 
    19
    
        wade25    
     16.02.13 
            ✎
    19:26 
 | 
         
        На нынешней работе классный механизм внедрен. Через свойства товара. К примеру типа товара "Телевизор Sony". Свойство подгруппа автоматически проставляется из соответствующего справочника и т.д. Юзер заполняет только тип товара, все остальное автоматом. Мне оч нравится)     
         | 
|||
| 
    20
    
        Boudybuilder    
     16.02.13 
            ✎
    19:29 
 | 
         
        (19) Можете подробнее описать. Интересно было бы посмотреть , и скрины где то выложить .     
         | 
|||
| 
    21
    
        AlexSvt    
     16.02.13 
            ✎
    19:32 
 | 
         
        получается, что если товар перенесли в другую группу то у него изменилась и гарантия и % вознаграждения? Как-то совсем нехорошо получается.     
         | 
|||
| 
    22
    
        mih_io    
     16.02.13 
            ✎
    20:46 
 | 
         
        сделай условие в запросе на 2 уровня вверх, Можно и больше.
  
        Что то типа КОГДА ВЫБОР Ном.Родитель.НашРеквизит = "" ТОГДА Ном.Родитель.Родитель.НашРеквизит ИНАЧЕ Ном.Родитель.НашРеквизит КОНЕЦ  | 
|||
| 
    23
    
        mih_io    
     16.02.13 
            ✎
    20:47 
 | 
         
        +(22) пардон, слова попутал в запросе местами )     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |