|   |   | 
| 
 | Объединение запроса | ☑ | ||
|---|---|---|---|---|
| 0
    
        pessok 29.03.12✎ 10:52 | 
        Народ, что-то туплю, подскажите плз...
  Есть простенький запросец ВЫБРАТЬ ВложенныйЗапрос.Номенклатура, ВложенныйЗапрос.ХарактеристикаНоменклатуры, ВложенныйЗапрос.ЦелевойУровень КАК ЦелевойУровень, ВложенныйЗапрос.КоличествоОстаток КАК КоличествоОстаток, ВложенныйЗапрос.КоличествоЗаказано КАК КоличествоЗаказано, ЗаказыПоставщикамОстатки.ЗаказПоставщику ИЗ (ВЫБРАТЬ ПараметрыЗакупкиНоменклатуры.Номенклатура КАК Номенклатура, ПараметрыЗакупкиНоменклатуры.ХарактеристикиНоменклатуры КАК ХарактеристикаНоменклатуры, ПараметрыЗакупкиНоменклатуры.ЦелевойУровень КАК ЦелевойУровень, 0 КАК КоличествоОстаток, 0 КАК КоличествоЗаказано, NULL КАК ЗаказПоставщику ИЗ РегистрСведений.ПараметрыЗакупкиНоменклатуры КАК ПараметрыЗакупкиНоменклатуры ГДЕ ПараметрыЗакупкиНоменклатуры.Номенклатура В ИЕРАРХИИ(&Номенклатура) ОБЪЕДИНИТЬ ВЫБРАТЬ ТоварыНаСкладахОстатки.Номенклатура, ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры, 0, ТоварыНаСкладахОстатки.КоличествоОстаток, 0, NULL ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(КОНЕЦПЕРИОДА(&Период, ДЕНЬ), Номенклатура В ИЕРАРХИИ (&Номенклатура)) КАК ТоварыНаСкладахОстатки ОБЪЕДИНИТЬ ВЫБРАТЬ ЗаказыПоставщикамОстатки.Номенклатура, ЗаказыПоставщикамОстатки.ХарактеристикаНоменклатуры, 0, 0, ЗаказыПоставщикамОстатки.КоличествоОстаток, ЗаказыПоставщикамОстатки.ЗаказПоставщику ИЗ РегистрНакопления.ЗаказыПоставщикам.Остатки(КОНЕЦПЕРИОДА(&Период, ДЕНЬ), Номенклатура В ИЕРАРХИИ (&Номенклатура)) КАК ЗаказыПоставщикамОстатки) КАК ВложенныйЗапрос ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПоставщикам.Остатки КАК ЗаказыПоставщикамОстатки ПО ВложенныйЗапрос.ЗаказПоставщику = ЗаказыПоставщикамОстатки.ЗаказПоставщику В результате получается, что во вложенном запросе, при условии, что есть и заказ и остатки на складе по одной номенклатуре формируется две строки, где 1) ЗаказПоставщику - ссылка на доку 2) ЗаказПоставщику - Неопределено. Пробовал делать вместо Неопределено ЗНАЧЕНИЕ(Документ.ЗаказПоставщику.ПустаяСсылка), не взлетает. С утра что-то туплю, не выспался... ПОдскажите плз, как сгруппировать объединение правильно :) | |||
| 1
    
        pessok 29.03.12✎ 10:53 | 
        вместо NULL т.е.     | |||
| 2
    
        Ненавижу 1С гуру 29.03.12✎ 10:54 | 
        что хотим то?     | |||
| 3
    
        Kashemir 29.03.12✎ 10:55 | 
        Объединение сначала сверни(сгруппируй), а потом присоединяй заказы     | |||
| 4
    
        Kashemir 29.03.12✎ 10:56 | 
        (3) А хотя в твоем случае не поможет.     | |||
| 5
    
        cViper 29.03.12✎ 10:56 | 
        (0) Зачем вот это " ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПоставщикам.Остатки КАК ЗаказыПоставщикамОстатки
  ПО ВложенныйЗапрос.ЗаказПоставщику = ЗаказыПоставщикамОстатки.ЗаказПоставщику" | |||
| 6
    
        cViper 29.03.12✎ 10:57 | 
        У тебя в регистры неопределено пишется?     | |||
| 7
    
        pessok 29.03.12✎ 10:59 | 
        (2) хотим отчет, в котором в строку будет Заказ - Остаток на складе - Остаток по заказу ну и остальные поля
  (3) не взлетит, угу (5) да не нужно по идее это левое соединение, можно из вложенного выводить, разницы никакой (6) в регистрах измерения ЗаказПоставщику нету (ТоварыНаСкладах, ПараметрыЗакупки) | |||
| 8
    
        cViper 29.03.12✎ 11:01 | 
        (7) Поэтому и спрашиваю. Разница в том что это влияет на производительность, отрицательно влияет.     | |||
| 9
    
        cViper 29.03.12✎ 11:03 | 
        (7) Так а зачем ты делаешь объединить? Делай соединение по номенклатуре.     | |||
| 10
    
        pessok 29.03.12✎ 11:07 | 
        (8) да это я просто не убрал. Объединение надо, т.к. три разных регистра, и выводить надо если есть записи хотя бы в одном     | |||
| 11
    
        Kashemir 29.03.12✎ 11:07 | 
        (7) У тебя ресурсы вроде не пересекаются
  Путь минимального вмешательства в твой запрос но довольно топорный по реализации: сгруппировать объединение по Номенклатура и Характеристике, агрегация сумм по ресурсам и агрегация ЗаказПоставщику через максимум. Правда что такое ЦелевойУровень у тебя хз | |||
| 12
    
        cViper 29.03.12✎ 11:09 | 
        (10) По хорошему, тебе бы еще товары в резерве надо учитывать.     | |||
| 13
    
        cViper 29.03.12✎ 11:12 | 
        ВЫБРАТЬ
  ЗаказыПоставщикамОстатки.ЗаказПоставщику КАК ЗаказПоставщику, ЗаказыПоставщикамОстатки.Номенклатура КАК Номенклатура, ЗаказыПоставщикамОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, ЗаказыПоставщикамОстатки.КоличествоОстаток КАК КоличествоЗаказано, ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток, ЕСТЬNULL(ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток, 0) КАК КоличествоЗарезервировано ИЗ РегистрНакопления.ЗаказыПоставщикам.Остатки(КОНЕЦПЕРИОДА(&Период, ДЕНЬ), Номенклатура В ИЕРАРХИИ (&Номенклатура)) КАК ЗаказыПоставщикамОстатки ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(КОНЕЦПЕРИОДА(&Период, ДЕНЬ), Номенклатура В ИЕРАРХИИ (&Номенклатура)) КАК ТоварыНаСкладахОстатки ПО ЗаказыПоставщикамОстатки.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура И ЗаказыПоставщикамОстатки.ХарактеристикаНоменклатуры = ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(КОНЕЦПЕРИОДА(&Период, ДЕНЬ), Номенклатура В ИЕРАРХИИ (&Номенклатура)) КАК ТоварыВРезервеНаСкладахОстатки ПО ЗаказыПоставщикамОстатки.Номенклатура = ТоварыВРезервеНаСкладахОстатки.Номенклатура И ЗаказыПоставщикамОстатки.ХарактеристикаНоменклатуры = ТоварыВРезервеНаСкладахОстатки.ХарактеристикаНоменклатуры | |||
| 14
    
        Kashemir 29.03.12✎ 11:21 | 
        +(11) P.s. взлетит только если тебя интересует вывод 1 произвольный заказ и множества номенклатура+характеристика. 
  Вообще такие задачи проще всего соединением наборов с СКД решать. Где в одном наборе будет итог для множества (ресурсы первых двух таблиц) и присоединение уточняющего набора по заказам. Либо же значения ресурсов первых двух таблиц надо пропорционально раскидать по заказам (кинуть на пустой если нет ни одного) | |||
| 15
    
        pessok 29.03.12✎ 11:25 | 
        (14) инетересуте вывод как раз наоборот. в общем вопрос отпал сам собой, будем оставлять две строки :)
  но спасибо за участие. объединение наборов надо покурить, не использовал никогда | |||
| 16
    
        Kashemir 29.03.12✎ 11:28 | 
        (15) Объединение наборов курить не надо, покури соединение :)     | |||
| 17
    
        cViper 29.03.12✎ 11:29 | 
        (15) Тебе в (14) написали то что тебе нужно. Проанализируй внимательно.     | |||
| 18
    
        Kashemir 29.03.12✎ 11:30 | 
        (15) Кстати строк будет не 2, а 1 + количество заказов     | |||
| 19
    
        Kashemir 29.03.12✎ 11:32 | 
        (17) И как будет выглядеть результат твоего запроса на примере ниже ? 
  остатки: Номенклатура1 Характеристика1 Остаток=100 Заказы: Номенклатура1 Характеристика1 Заказ1 КвоЗаказа=20 Номенклатура1 Характеристика1 Заказ2 КвоЗаказа=30 | |||
| 20
    
        Kashemir 29.03.12✎ 11:36 | 
        +(19) Вопрос к (15)  :)     | |||
| 21
    
        pessok 29.03.12✎ 11:39 | 
        не нужно мне соединения, я ж говорю. ОБЯЗАТЕЛЬНО надо выводить инфу по всем трем источникам данных, а не прицеплять одно к другому
  (19) Уоряво будет выглядеть, согласен. В общем оставляю так, как есть сейчас. Так все выводится корректно. | |||
| 22
    
        cViper 29.03.12✎ 11:48 | 
        (21) так тебе нужно выводить все остатки вне зависимости от того, были ли сделаны на них заказы?     | |||
| 23
    
        pessok 29.03.12✎ 12:27 | 
        (22) от именно :)     | |||
| 24
    
        pessok 29.03.12✎ 12:28 | 
        +(23) я как бы прекрасно понимаю разницу между соединением и объединением, и то, когда что надо использовать :)
  затык был именно с группировками, но (19) убедил меня, что надо спать дольше :) | |||
| 25
    
        Kashemir 29.03.12✎ 12:42 | 
        (24) Пример как вывести данные с разной детализацией и общими итогами
  Набор 1: Изм: Субконто1, ресурс остаток Набор 2: Изм: Субконто1, Субконто2, ресурс оборот. соединение наборов по субконто1 http://s019.radikal.ru/i609/1203/d3/3136352c5e74.jpg | |||
| 26
    
        pessok 29.03.12✎ 12:55 | 
        (25) вот за это спасибо отдельное!     | |||
| 27
    
        Kashemir 29.03.12✎ 12:56 | 
        (26) На здоровье :)     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |