|   |   | 
| 
 | Можно ли вытащить запросом следующее? | ☑ | ||
|---|---|---|---|---|
| 0
    
        Alexor 28.01.13✎ 15:18 | 
        Всем привет.
  Есть справочник номенклатура. У групп и элементов есть реквизит, Статус. Требуется в запросе вытащить номенклатуру и статус. Причем у номенклатуры если статус не задан, то должно "брать" статус родителя, если у данного родителя не задан, то смотрим вышестоящего. Вопрос можно ли это запросом вытащить или нет? | |||
| 1
    
        DrShad 28.01.13✎ 15:19 | 
        можно     | |||
| 2
    
        samozvanec 28.01.13✎ 15:20 | 
        (0) Причем у номенклатуры если статус не задан, то должно "брать" статус родителя, если у данного родителя не задан, то смотрим вышестоящего
  вот тут сколько пропишешь, столько уровней вверх и просмотрит | |||
| 3
    
        ThreeTONE 28.01.13✎ 15:20 | 
        выбор когда номенклатура.статус = "" тогда номенклатура.родитель.статус иначе  номенклатура.статус конец как статус     | |||
| 4
    
        Error pro 28.01.13✎ 15:21 | 
        (3) А если и у родителя не задан? А иерархия 10 уровней.     | |||
| 5
    
        lEvGl гуру 28.01.13✎ 15:23 | 
        (4) сколько уровней, столько и "надписей"     | |||
| 6
    
        Alexor 28.01.13✎ 15:23 | 
        (1) А скелетом не поделишся?
  (2)(3) Такое решение "в тупую" я думал, но хотел более красивое решение. | |||
| 7
    
        samozvanec 28.01.13✎ 15:24 | 
        (6) вроде не придумали еще     | |||
| 8
    
        Alexor 28.01.13✎ 15:25 | 
        (2)(3) Кстати, а запрос не загнется, если я буду анализировать элемент 2-го уровня, а у условии у меня проверка до десятого родитель.родитель....родитель.Статус
  да и тормозить такое решение полагаю будет. | |||
| 9
    
        France 28.01.13✎ 15:26 | 
        выбрать все элементы в иерархии с группировкой по реквизиту "Статус"... 
  потом обход по группировкам | |||
| 10
    
        pumbaEO 28.01.13✎ 15:26 | 
        (6) красивое решение 
  1. сначала посчитать макс. количество уровней , а потом динамически собрать текст запроса. 2. Подписка для номенклатуры: Перед записью и заполняй сразу статус, если не заполненно. | |||
| 11
    
        Alexor 28.01.13✎ 15:27 | 
        (10) 2-ой вариант, тоже рассматривался, но пока не комфортен. Номенклатура может перемещаться из группы в группу, иметь или не иметь свой статус.     | |||
| 12
    
        Chin 28.01.13✎ 15:29 | 
        (0) А не проще вопрос со статусами решить при записи номенклатуры? Зачем мучить себе мозг... Ну конечно если интересно, то пожалуйста, а так: 
  а) тратишь зря время б) не знаю для чего тебе такой запрос, но если у тебя справочик номенклатуры огромный, то работать он может занудно долго. По возможности такие вопросы лучше решать на этапе создание объетов. | |||
| 13
    
        Chin 28.01.13✎ 15:31 | 
        (11) При перемещении из группы в группу так же записывается элемент, так как у него меняется родитель...     | |||
| 14
    
        К_Дач 28.01.13✎ 15:37 | 
        Рекурсию не предлагать?     | |||
| 15
    
        c00Lo 28.01.13✎ 15:40 | 
        красивей рекурсии нет решения     | |||
| 16
    
        France 28.01.13✎ 15:40 | 
        рекурсию запросом??     | |||
| 17
    
        Chin 28.01.13✎ 15:42 | 
        (14) Рекурсию как раз лучше использовать при записи номенклатуры, для поиска родителя с непустым статусом.
  Я бы на месте автора сделал бы так: 1. создал реквизит номенклатуры ("НаследуемыйСтатус" - булево) 2. перед записью, если стутус явно не указан, искал бы родительский статус и устанавливал признак "НаследуемыйСтатус". При перемещении из одной группы в другую, если статус заполнен, а флаг "наследуемый статус" не установлен, статус не менять. Если флаг установлен, обновлять статус по данным нового родителя... В итоге с запросом не придется мучиться... | |||
| 18
    
        samozvanec 28.01.13✎ 15:53 | 
        (17) хорошее решение     | |||
| 19
    
        France 28.01.13✎ 15:55 | 
        (0) можешь про статус рассказать?? может, лучшее решение найдут..     | |||
| 20
    
        hhhh 28.01.13✎ 15:59 | 
        (15) есть красивее. Запретить Статус в группах. Задавать его только в элементах.     | |||
| 21
    
        К_Дач 28.01.13✎ 15:59 | 
        Можно запросом вытащить всю иерархию в ТЗ вида:
  Родитель Элемент Статус <пусто> Группа1 Статус1 Группа1 Группа2 Статус2 Группа2 Группа3 Статус3 Группа3 Элемент4 Статус4 и потом обрабатывать эту ТЗ снизу вверх в цикле, проверяя заполненность статуса. Весь цимус в том, как всю иерархию вытащить одним запросом, не зная количество уровней заранее.... | |||
| 22
    
        Chin 28.01.13✎ 16:28 | 
        (20) Если в группе 10000 номенклатур и у них у всех один  итот же статус - смысл изменять у каждого?     | |||
| 23
    
        acsent 28.01.13✎ 16:29 | 
        только для ограниченного количества родителей     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |