| 
    
            
         
         | 
    
    
  | 
Как в запросе при соед-нии "один ко многим" поместить результаты в колонки, а не в строки? | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        Механик    
     23.07.20 
            ✎
    10:00 
 | 
         
        Возьмём типовой справочник "Номенклатура" из УНФ, в нём есть ТЧ "Дополнительные реквизиты". Видов реквизитов для номенклатуры - 10 штук. Если сделать такой запрос:
 
        "ВЫБРАТЬ | Товары.Ссылка КАК Ссылка, | НоменклатураДополнительныеРеквизиты.Свойство КАК Свойство, | НоменклатураДополнительныеРеквизиты.Значение КАК Значение |ИЗ | Справочник.Номенклатура КАК Товары | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты | ПО НоменклатураДополнительныеРеквизиты.Ссылка = Товары.Ссылка |ГДЕ | Товары.ЭтоГруппа = ЛОЖЬ"; В выборке будет таблица с несколькими строками, где будет заполнено дополнительными значениями, а также NULL`ами, если значение доп. реквизита у конкретной номенклатуры отсутствует. И одна и та же номенклатуры будет выведена несколько раз. А как лучше и проще сделать, чтобы в выборке номенклатура выводилась единожды, а для каждого значения доп. реквизита выводилась отдельная колонка в этой же строке? Отдельную колонку с заранее известным именем доп. реквизита вывожу так: "ВЫБРАТЬ | Товары.Ссылка КАК Ссылка, | ЕСТЬNULL(ВЫБОР | КОГДА НоменклатураДополнительныеРеквизиты.Свойство = &АртикулПоставщика | ТОГДА ЕСТЬNULL(НоменклатураДополнительныеРеквизиты.Значение, """") | КОНЕЦ, """") КАК АртикулПоставщика |ИЗ | Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Товары | ПО НоменклатураДополнительныеРеквизиты.Ссылка = Товары.Ссылка |ГДЕ | Товары.ЭтоГруппа = ЛОЖЬ"; Но как сделать, чтобы все доп. реквизиты в одну строку с владельцем-товаром "свернулись"?  | 
|||
| 
    1
    
        Механик    
     23.07.20 
            ✎
    10:03 
 | 
         
        (0) То есть чтобы в итоге в выборке было:
 
        Товар1|ЗначениеДопРеквизита1|ЗначениеДопРеквизита2|ЗначениеДопРеквизита3||ЗначениеДопРеквизита4 Товар2|ЗначениеДопРеквизита1|ЗначениеДопРеквизита2|ЗначениеДопРеквизита3||ЗначениеДопРеквизита4  | 
|||
| 
    2
    
        Aleksey    
     23.07.20 
            ✎
    10:05 
 | 
         
        типизировать колонки. Т.е. в каждую колонку получать конкретное свойство     
         | 
|||
| 
    3
    
        hhhh    
     23.07.20 
            ✎
    10:08 
 | 
         
        (1) |ИЗ
 
        | Справочник.Номенклатура КАК Товары | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты1 | ПО НоменклатураДополнительныеРеквизиты1.Ссылка = Товары.Ссылка | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты2 | ПО НоменклатураДополнительныеРеквизиты2.Ссылка = Товары.Ссылка | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты3 | ПО НоменклатураДополнительныеРеквизиты3.Ссылка = Товары.Ссылка | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты4 | ПО НоменклатураДополнительныеРеквизиты4.Ссылка = Товары.Ссылка | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты5 | ПО НоменклатураДополнительныеРеквизиты5.Ссылка = Товары.Ссылка  | 
|||
| 
    4
    
        Aleksey    
     23.07.20 
            ✎
    10:30 
 | 
         
        (3) Почти только в каждом левом соединение указать свойство
 
        Допустим вам нужно вывести из доп реквизитов только вес, как бы вы в запросе сделали? А теперь вес и масса А теперь вес, масса и ....  | 
|||
| 
    5
    
        D_E_S_131    
     23.07.20 
            ✎
    13:56 
 | 
         
        |ИЗ
 
        | Справочник.Номенклатура КАК Товары | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты1 | ПО НоменклатураДополнительныеРеквизиты1.Ссылка = Товары.Ссылка И НоменклатураДополнительныеРеквизиты1.Свойство = &СвойствоВес | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты2 | ПО НоменклатураДополнительныеРеквизиты2.Ссылка = Товары.Ссылка И НоменклатураДополнительныеРеквизиты2.Свойство = &СвойствоМасса  | 
|||
| 
    6
    
        Garykom    
     гуру 
    23.07.20 
            ✎
    14:00 
 | 
         
        Можно через Когда     
         | 
|||
| 
    7
    
        Garykom    
     гуру 
    23.07.20 
            ✎
    14:01 
 | 
||||
| 
    8
    
        bootini    
     24.07.20 
            ✎
    09:10 
 | 
         
        "ВЫБРАТЬ
 
        | Товары.Ссылка КАК Ссылка, | МАКСИМУМ(ВЫБОР | КОГДА НоменклатураДополнительныеРеквизиты.Свойство = &АртикулПоставщика | ТОГДА ЕСТЬNULL(НоменклатураДополнительныеРеквизиты.Значение, """") | КОНЕЦ, """") КАК АртикулПоставщика, | МАКСИМУМ(ВЫБОР | КОГДА НоменклатураДополнительныеРеквизиты.Свойство = &АртикулКлиента | ТОГДА ЕСТЬNULL(НоменклатураДополнительныеРеквизиты.Значение, """") | КОНЕЦ, """") КАК АртикулКлиента |ИЗ | Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Товары | ПО НоменклатураДополнительныеРеквизиты.Ссылка = Товары.Ссылка |ГДЕ | Товары.ЭтоГруппа = ЛОЖЬ" СГРУППИРОВАТЬ ПО Товары.Ссылка; как то так  | 
|||
| 
    9
    
        Конструктор1С    
     24.07.20 
            ✎
    09:30 
 | 
         
        (0) только через СКД. В запросах 1с нет PIVOT или чего-то подобного     
         | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |