| 
    
        
     
     | 
    
  | 
Помогите написать запрос. | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        ЗлаяЗая    
     21.10.21 
            ✎
    09:50 
 | 
         
        Помогите, пожалуйста, написать запрос.
 
        В результате первого запроса получается выборка - список номенклатуры. У каждой номенклатуры есть родитель-группа номенклатуры. От 1 до 5 уровней. Есть РС "Группа номенклатуры- Цена услуги" Надо понять, к какому именно уровню родителя есть соответствие в РС и найти это значение. Значение точно одно. Т.е. нет такого, что есть значение для уровня1 и для уровня3  | 
|||
| 
    1
    
        Ёпрст    
     гуру 
    21.10.21 
            ✎
    09:52 
 | 
         
        (0) Надо как-то заставить себя открыть пофигуратор и сотворить левое соединение по группе номенклатуры     
         | 
|||
| 
    2
    
        Kassern    
     21.10.21 
            ✎
    09:56 
 | 
         
        я правильно понимаю:
 
        1 таблица Номенклатура.Родитель.Родитель.Родитель="Супер папка" 2 таблица "Супер папка" 500рублев И вам надо Соединить 2 таблички и получить для всех товаров супер папки 500 рублев?  | 
|||
| 
    3
    
        серый КТУЛХУ    
     21.10.21 
            ✎
    09:57 
 | 
         
        2 12 85 06     
         | 
|||
| 
    4
    
        ЗлаяЗая    
     21.10.21 
            ✎
    09:59 
 | 
         
        (1) Я это понимаю. Не могу понять, как по уровням писать. 
 
        (2) Да. Причем у каждой номенклатуры "Супер папка" может быть к разным уровням  | 
|||
| 
    5
    
        ЗлаяЗая    
     21.10.21 
            ✎
    10:00 
 | 
         
        (3) шутку оценила :)
 
        Я не знаю принципа связи  | 
|||
| 
    6
    
        Kassern    
     21.10.21 
            ✎
    10:00 
 | 
         
        (4) А если у Номенклатура.Родитель будет у папки цена 400р, а у Номенклатура.Родитель.Родитель 500р, то какую брать?     
         | 
|||
| 
    7
    
        ЗлаяЗая    
     21.10.21 
            ✎
    10:02 
 | 
         
        (6) Не будет. Это условие.     
         | 
|||
| 
    8
    
        Pro-tone    
     21.10.21 
            ✎
    10:02 
 | 
         
        (0) дам только подсказку как уровни считать
 
        ВЫБОР КОГДА Номенклатура.Родитель = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)Тогда 0 ИНАЧЕ КОГДА Ссылка.Родитель.Родитель = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) Тогда 1 ... КОНЕЦ КАК Уровень  | 
|||
| 
    9
    
        Kassern    
     21.10.21 
            ✎
    10:03 
 | 
         
        (8) это ж такая некрасивая портянка получается)     
         | 
|||
| 
    10
    
        Pro-tone    
     21.10.21 
            ✎
    10:04 
 | 
         
        (9) ну всего-то 5 концов)     
         | 
|||
| 
    11
    
        DrShad    
     21.10.21 
            ✎
    10:11 
 | 
         
        (8) не кошерно, ей нужно транзитивное замыкание курить     
         | 
|||
| 
    12
    
        Kassern    
     21.10.21 
            ✎
    10:17 
 | 
         
        Как то так:
 
        Запрос=Новый Запрос; Запрос.Текст="ВЫБРАТЬ | Таб1.ГруппаНоменклатуры КАК ГруппаНоменклатуры, | Таб1.Цена КАК Цена |ПОМЕСТИТЬ Таб1 |ИЗ | &Таб1 КАК Таб1 |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Таб2.Номенклатура КАК Номенклатура |ПОМЕСТИТЬ Таб2 |ИЗ | &Таб2 КАК Таб2 |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Таб2.Номенклатура КАК Номенклатура, | Таб1.ГруппаНоменклатуры КАК ГруппаНоменклатуры, | Таб1.Цена КАК Цена |ИЗ | Таб2 КАК Таб2 | ЛЕВОЕ СОЕДИНЕНИЕ Таб1 КАК Таб1 | ПО (Таб2.Номенклатура В ИЕРАРХИИ | (ВЫБРАТЬ | Таб1.ГруппаНоменклатуры | ИЗ | Таб1))";  | 
|||
| 
    13
    
        Ёпрст    
     гуру 
    21.10.21 
            ✎
    10:24 
 | 
         
        (4) для 5 уровней тупо так, но будет не быстро
 
        
     | 
|||
| 
    14
    
        Ёпрст    
     гуру 
    21.10.21 
            ✎
    10:30 
 | 
         
        Да в EСтьNull там поправишь как нннадо, смысл, надеюсь, понятен     
         | 
|||
| 
    15
    
        Kassern    
     21.10.21 
            ✎
    10:35 
 | 
         
        (13) а чем способ в (12)  не устроил? Зачем перебирать эти уровни, когда есть волшебное "В иерархии"?     
         | 
|||
| 
    16
    
        H A D G E H O G s    
     21.10.21 
            ✎
    10:51 
 | 
         
        Такие вещи нужно делать кодом.
 
        Для списка номенклатур получаем 1 запросом Родителей на 1 шаге, для списка родителей получаем список родителей на 2 шаге., и.т.д. Всего будет 5 запросов. В результате будет тз Номенклатура Родитель ИнверсныйУровень Суем в запрос, соединяем с регистром, сортируем по Минимуму ИнверсныйУровень (мы идем с низу дерева).  | 
|||
| 
    17
    
        Kassern    
     21.10.21 
            ✎
    10:56 
 | 
         
        (16) Я все же не понимаю, почему все игнорят вот такую конструкцию?
 
        | Таб2 КАК Таб2 | ЛЕВОЕ СОЕДИНЕНИЕ Таб1 КАК Таб1 | ПО (Таб2.Номенклатура В ИЕРАРХИИ | (ВЫБРАТЬ | Таб1.ГруппаНоменклатуры | ИЗ | Таб1))"; В итоге мы получим для таб2(Таблица с номенклатурой) цены из таб1 если номенклатура в иерархии группы, а судя по (7) то и дублей у нас не будет  | 
|||
| 
    18
    
        Homer    
     21.10.21 
            ✎
    10:57 
 | 
         
        (17) "В иерархии" данная конструкция красивая но вот быстродействие на большой выборки вызывает большие вопросы.     
         | 
|||
| 
    19
    
        Kassern    
     21.10.21 
            ✎
    10:59 
 | 
         
        (18) тут ни слова про количество записей, имхо для ТС прокатит     
         | 
|||
| 
    20
    
        Kassern    
     21.10.21 
            ✎
    11:01 
 | 
         
        (19) судя по тому, какие вопросы задает ТС, то вряд ли идет речь про высоконагруженные системы и овердофига записей)     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |